给定一个设置 uiAccess="true" 的适当清单,当使用 Parallels 在 Mac Mini 上的 Windows7(32 位)上运行时,win32 程序(在其他 Windows7 系统上运行良好)是否能够从 SetWindowsHookEx 获取有效句柄?
这是调用 API 的 Delphi XE4 代码行
HookHandle := SetWindowsHookEx(WH_JOURNALPLAYBACK, @Playback, hInstance, 0);
由于 HookHandle 中返回的系统错误,我不断收到“拒绝访问”。
我已经尝试了我的清单语法的许多变体,并且非常想知道这是否只是 Mac Mini / Parallels 环境的一些限制。调用程序的用户是管理员。UAC 已启用。我试过以管理员身份运行;没有不同。
我的清单文件如下。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="FFHotKeys" version="1.1.0.0 processorArchitecture="*"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="true"/>
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
</assembly>
我已经尝试为每一个设置级别
level="asInvoker"
level="requireAdministrator"
level="highestAvailable"
这并没有解决“拒绝访问”的问题。
注意:我通过 .rc 文件包含我的清单
1 24 "FFHotKeys.exe.manifest"
而不是通过项目 > 选项下的自定义清单功能。我有“启用运行时主题”和一个空白的自定义清单。我尝试了另一种方式,但 .manifest 内容略有不同。
注意:当我使用 XN_Resource_Editor 检查资源时,有一个“XP Theme Manifest”资源包含了预期的 XML。还有 2 个 VCLSTYLE 资源。谢谢你。