使用 FindWindowEx 的程序在 Server 2003 上停止运行,为什么?

发布于 2024-11-18 08:20:05 字数 428 浏览 3 评论 0原文

我有一个简单的程序,使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘虞初梦 2024-11-25 08:20:05

第三方应用程序是服务吗? 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).

绾颜 2024-11-25 08:20:05

解决了。

@sebf:2011 年了;支持Unicode,白痴!

Solved.

@sebf: Its 2011; support Unicode, idiot!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文