在FLEX中调用Win32 API以设置窗口显示亲和性 [英] call Win32 API in flex to set Window Display Affinity

查看:22
本文介绍了在FLEX中调用Win32 API以设置窗口显示亲和性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用Adobe Air创建了一个Flex桌面应用程序。 我需要保护应用程序不被捕获。通过更改应用程序的窗口显示亲和性,可以保护应用程序不被捕获。 如何在FLEX中使用Win API? 是否有其他方法可以保护窗口不被捕获?

推荐答案

首先必须确保主窗口没有WS_EX_LAYERED窗口样式。该样式使SetWindowDisplayAffinity失败,代码为8(ERROR_NOT_ENOUGH_MEMORY),至少在我的机器(Seven Pro 64位)上是这样。在-app.xml file中,将<initialWindow>下节点<transparent>的值设置为false

其次,您必须选择如何在应用程序进程中插入常规C DLL,因为如果您尝试更改不在调用方进程中的窗口的亲和性,API将失败并显示错误5(ERROR_ACCESS_DENIED)。

一种可能的注入方法是使用SetWindowsHookExAPI。谷歌会给你很多关于那个的点击量。请随时询问一些细节。在这里,您显然需要另一个进程的协作(以及一些Win32API实践)。

另一种可能的方法是对'ACTIONSCRIPT® Extensions for ADOBE® AIR®' (PDF)进行编码。

后者似乎更可取:

  • 不需要来自外部进程的协作。
  • Adobe AIR为您加载DLL。
  • C/C++代码简单得多。

我使用了第一种技术,因为我对有关DLL的原始Win32API比使用AIR和Action脚本更流利.

我用一个非常简单的"Hello World"AIR Desktop应用程序成功地测试了第一种技术,并在打印屏幕后获得了漂亮的"全黑"图像。

这篇关于在FLEX中调用Win32 API以设置窗口显示亲和性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆