我使用Adobe Air创建了一个Flex桌面应用程序。 我需要保护应用程序不被捕获。通过改变应用程序的窗口显示亲和性,可以保护应用程序不被捕获。 如何在flex中使用win API? 有没有其他方法可以保护窗口不被捕获?
答案 0 :(得分:1)
首先,您必须确保主窗口没有WS_EX_LAYERED
Windows样式。该样式使SetWindowDisplayAffinity
失败,代码为8(ERROR_NOT_ENOUGH_MEMORY
),至少在我的机器上(Seven Pro 64位)。在-app.xml file
中,将false
下的节点<transparent>
的值设置为<initialWindow>
。
其次,您必须选择如何在应用程序进程中注入常规C DLL,因为如果您尝试更改不在其中的窗口的关联性,API将失败并返回错误5(ERROR_ACCESS_DENIED
)来电过程。
一种可能的注入方法是使用SetWindowsHookEx
API。谷歌会给你很多关于那个的点击。随意询问一些细节。你显然需要另一个进程的合作,这里(和一些Win32 API实践)。
另一种可能的方法是编码'ACTIONSCRIPT® Extensions for ADOBE® AIR®' (PDF)。
后者似乎更可取:
我使用了第一种技术,因为我对关于DLL的原始Win32 API更流畅,而不是使用AIR和Action Script ......
我使用非常简单的“Hello World”AIR桌面应用程序成功测试了第一种技术,并在Print Screen之后获得了一个漂亮的“全黑”图像。