gpt4 book ai didi

c++ - 访问外部窗口句柄

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:48 25 4
gpt4 key购买 nike

我目前正在处理的程序有问题。这是由 vista/Windows 7 中增强的安全性引起的,特别是 UIPI 阻止具有较低完整性级别的窗口与较高完整性级别“对话”。

在我的例子中,我想告诉具有高完整性级别的窗口进入我们的应用程序,它在安全关闭的情况下在 XP 或 Windows 7 上完美运行。

我已经尝试直接设置更高 IL 窗口的 HWND,而不是使用 findwindow() 函数,这工作正常,但程序在尝试移动它或通常与其交互时失败。窗口句柄由应用程序保存,以供以较低 IL 运行的应用程序嵌入和读取。

我也曾尝试将 list 中的 UIaccess 设置为 TRUE 并对程序进行数字签名,但没有成功。

关于如何解决这个问题有什么想法吗?谢谢。

最佳答案

我只是想我会为任何同样挣扎的人跟进,因为我终于找到了一种方法来做到这一点。

IL = 完整性级别。

我有 2 个应用程序,highIL.exe 和 lowIL.exe,highIL 想要找到 lowIL.exe 窗口,将其设置为子窗口并将其移动到 highIL.exe 上为其创建的区域。这在 vista+ 中被 UIPI 阻止了。

最后,我在 vista 中使用了 ChangeWindowMessageFilter 方法,在 Windows7 中使用了 ChangeWindowMessageFilterEx 方法,这两个方法都在 user32.dll 中找到。这些函数允许您在 UIPI 中戳一个洞以允许您想要的消息通过。

我使用 RegisterWindowMessage 函数创建了一些自定义消息,我使用这个函数在 highIL 和 lowIL 应用程序中注册该方法,该行看起来有点像这样:

const UINT MY_MOVEINTWINDOW_MSG = RegisterWindowMessage(_T("MyMsg.MoveWindow"));

然后 lowIL.exe 能够将这些消息发送到 highIL.exe 窗口,而不会被阻止。然后就是简单地添加和编写消息处理程序的情况。

此方法仅在您可以访问高 IL 和低 IL 时才有效。MSDN 上还有一个 ChangeWindowMessageFilterEx 函数的工作示例 Website

关于c++ - 访问外部窗口句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com