问题标签 [hwnd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
17828 浏览

casting - 长到 HWND (VS8 C++)

如何将 long 转换为 HWND(C++ Visual Studio 8)?

但我收到以下警告:

警告 C4312:“类型转换”:从“LONG”转换为更大尺寸的“HWND”

谢谢。

0 投票
2 回答
5959 浏览

c# - 我可以使用 hwnd / NativeWindow 设置我的 WinForms 表单所有者的行为吗?

我的应用程序是一个 vb6 可执行文件,但系统中一些较新的形式是用 C# 编写的。我希望能够使用主应用程序窗口的句柄设置 C# 表单的 Owner 属性,以便在我的应用程序和其他应用程序之间来回切换时对话框保持在顶部。

我可以得到主应用程序窗口的 hwnd。我不确定我能从那里做什么?


2008 年 10 月 20 日 17:06 更新:

斯科特,

感谢您的回复。我忽略了 Show/ShowDialog 方法参数不是 Form 类型 - 我只查看 Owner 属性。

我从上面稍微修改了我正在使用的代码 - 我们有一个组件通常加载我们的表单并调用 ShowDialog。我的代码如下所示:

GetWindowFromHwnd是您的代码的方法包装版本:

不幸的是,这并没有达到我的预期。该表单确实以模态方式显示,但是当我离开并返回父窗口时,它没有显示在正确的位置,也没有显示在顶部。我们的模态不会在任务栏中显示任务,因此窗口看似“消失”(尽管它仍然存在于 alt-tab 窗口列表中)。这对我来说表明我可能没有正确的 hwnd。如果您有任何其他建议,请回复。再次感谢。


更新 2008 年 11 月 10 日 16:25

一个后续评论 - 如果您将其分解为 try/finally 中的方法调用,如 Scott 的第二篇文章中那样,finally 块中的调用应该是:

0 投票
1 回答
1385 浏览

c++ - 帮助获得 QTP 以识别控件

我们正在尝试使用 QTP (QuickTest Professional) 来自动测试旧版 C++ 应用程序。

但是,应用程序的主窗口由几个相同的面板组成。每个面板都有一个唯一的标题。

如果我在 Spy++(DevStudio 附带)中查看窗口,我会看到:

然而,在 QTP 的 Object Spy 中,层次结构显示为:

它甚至没有显示有一个中间面板。

有人知道获取窗口“路径”以识别每个控件的方法吗?即控制标识为:

0 投票
5 回答
18359 浏览

c# - 如果我只有一个窗口句柄 (hWnd),我如何 GetModuleFileName()?

我正在尝试获取位于我的 C# 2.0 应用程序之外的窗口的可执行文件的名称。我的应用程序当前使用来自“user32.dll”的 GetForegroundWindow() 调用获取窗口句柄 (hWnd)。

从我能够做的挖掘来看,我想我想使用 GetModuleFileNameEx() 函数(来自 PSAPI)来获取名称,但 GetModuleFileNameEx() 需要一个进程的句柄,而不是一个窗口。

是否可以从窗口句柄获取进程句柄?(我需要先获取窗口的线程句柄吗?)

编辑了第一句话,让我更清楚我想要做什么。

更新!这是我发现对我有用的 C# 代码。唯一需要注意的是,它有时会返回驱动器号为“?”的文件/路径。而不是实际的驱动器号(如“C”)。——还没弄清楚为什么。

0 投票
1 回答
2176 浏览

c# - 检测应用程序焦点更改/挂钩 HWND 更改?

我如何检测任何应用程序何时失去焦点?是否有任何系统挂钩可以使用?当一个新应用程序成为焦点或丢失一个应用程序时,我想接听。即使拥有用户的“当前” HWND 也会很好。

我正在使用 C#,但是,我确信它都是赢 api 的东西......所以任何信息都会很棒。

0 投票
5 回答
6407 浏览

windows - EnumWindows 返回句柄的顺序是否有意义?

从几个初步测试看来,EnumWindows总是以反向实例化顺序返回窗口,即最先实例化的窗口。这是一个有效的观察吗?如果是这样,是否适用于所有版本的 Windows?这是一个可靠的假设吗,即该行为是否记录在某处?


上下文:我正在处理一种情况,我正在触发第三方应用程序打开几个非模态窗口,一旦它们打开,我需要向这些窗口发送一些窗口消息,但我没有万无一失的方法将它们标识为它们的窗口类和它们的标题都会有所不同,我也不知道它们的预期坐标。但是,如果我可以依赖上述行为,EnumWindows我可以简单地使用EnumWindows其类和标题符合我期望的返回的第一个句柄。这仍然会留下一些假设的漏洞,但我认为这已经足够好了。不过,欢迎提供替代建议。

0 投票
2 回答
1991 浏览

winapi - 如何从 COM-Addin (Outlook <=2003) 内部打开 WordMail,可靠地确定给定 Outlook 检查器窗口的窗口句柄?

[此代码从Inspector.Activate事件处理程序(第一次调用)中调用,即在实际显示检查器窗口之前。]

对于“本地”邮件检查员,我可以简单地 QIInspector接口IOleWindow并调用其GetWindow方法。但是,这不适用于 Word 检查器,它们实际上是带有特殊工具栏的 Word 实例并且不实现IOleWindow.

(临时)设置Inspector.Caption为某个唯一值,然后查找具有该标题的窗口也不起作用,因为Inspector在使用 WordMail 选项时,访问大多数属性对实际检查器窗口没有(立即)影响。调用Activate然后立即查询也不能GetForegroundWindow可靠地工作:当已经打开了多个检查器或存在实际的 Word 窗口时,这通常只会返回“最旧”的实例而不是最新的实例。

多年来,我尝试了许多其他方法,但最终都证明它们在某种程度上存在缺陷。是否有一个相对简单的解决方案,或者我是否必须采用更复杂的方法,例如通过系统挂钩保留我自己的已知窗口句柄列表并尝试以某种方式将它们与已知检查员匹配?(向P Daddy提示有关使用 CBT 钩子的提示)

0 投票
6 回答
45801 浏览

java - 在 Java Swing 中,如何获得对窗口的 Win32 窗口句柄 (hwnd) 引用?

在 Java 1.4 中,您可以使用 ((SunToolkit) Toolkit.getDefaultToolkit()).getNativeWindowHandleFromComponent() 但这已被删除。

看起来您现在必须使用 JNI 来执行此操作。您是否有 JNI 代码和示例 Java 代码来执行此操作?

我需要它来调用 Win32 GetWindowLong 和 SetWindowLong API 调用,这可以通过 Jawin 库来完成。

我想要一些非常精确的东西,这样我就可以传递对 JDialog 或 JFrame 的引用并获取窗口句柄。

使用 JNI 的 Swing 透明度可能是相关的。

0 投票
5 回答
61539 浏览

windows - 如何判断窗口是否有焦点?(Win32 API)

使用 Win32 API(在 C 中,但这无关紧要),我如何判断给定窗口(由 HWND 标识)是否具有焦点?

我正在挂钩一个应用程序来监视一个事件,当该事件发生时,我想检查应用程序是否已经有了焦点。如果没有,我想闪烁窗口,直到他们关注它。

或者,如果窗口已经获得焦点,FlashWindowEx 结构标志 FLASHW_TIMERNOFG 是否会闪烁,直到窗口获得焦点才不会闪烁?

我现在无法测试这个,因为我不在我的开发环境中,但我的印象是它无论如何都会闪烁,这是我试图避免的。

此外,如果重要,应用程序会在此窗口中使用 DirectX。

0 投票
1 回答
2869 浏览

c# - 通过c#找到用户选择的窗口的hwnd

我已经编写了 ac# 程序,它以编程方式重现键盘敲击。我的想法是将这些键盘敲击传递给另一个应用程序,该应用程序可能有一个文本框设置为焦点。

所以在我的程序中,我希望用户选择我必须将键盘敲击重定向到的窗口。为此,我想知道一种我可以等待的方法,让用户选择必须发送键盘敲击的窗口,然后用户在我的应用程序上单击确定以确认,然后我的应用程序知道我必须在哪个窗口通过获取它的 hwnd 来控制。

我怎样才能做到这一点?