使用 FindWindowEx 的程序在 Server 2003 上停止运行,为什么?
我有一个简单的程序,使用 FindWindowEx & strncmp() 在传递给 EnumChildWindows 的回调中查找由第三方应用程序创建的对话框,然后按下按钮。
该代码在我的 Windows 7 Ultimate PC 上运行良好,但如果我在 Windows Server 2003 上运行它,它就不再运行。
我使用了 Spy++,窗口标题和文本是相同的。 Server 2003 是否有我遗漏的东西可能会破坏这个? (DEP 和 UAC 已关闭,这是一台测试 PC;我也在 RDP 会话中运行它)
这是我对 FindWindowEx 的调用:
parentWindow = FindWindowEx(NULL,NULL,NULL,(LPCSTR)caption);
标题是 (TCHAR[]) 常量。
I have a simple program that uses FindWindowEx & strncmp() inside a callback passed to EnumChildWindows, to find a dialog created by a third party application, and press a button.
This code works fine on my Windows 7 Ultimate PC, but if I run it on Windows Server 2003 it no longer works.
I have used Spy++ and the window captions and text are identical. Is there something I am missing about Server 2003 which may break this? (DEP and UAC are off, this is is a test PC; I am also running this inside an RDP session)
This is my call to FindWindowEx:
parentWindow = FindWindowEx(NULL,NULL,NULL,(LPCSTR)caption);
With caption being a (TCHAR[]) constant.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第三方应用程序是服务吗? Windows 服务可以在与通过 RDP 登录的用户不同的会话下运行,因此由交互式服务创建的 UI 将出现在不同的窗口站上(因此会出现在不同的桌面上,这就是您找不到它的原因)。
Is the third party application a service? Windows services can run under a different session than a user logged in via RDP, so a UI created by an interactive service would appear on a different window station (and therefore a different desktop, which is why you couldn't find it).
解决了。
@sebf:2011 年了;支持Unicode,白痴!
Solved.
@sebf: Its 2011; support Unicode, idiot!