问题标签 [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 投票
1 回答
1433 浏览

internet-explorer - WatiN、Internet Explorer 启动和 IWebBrowser2 窗口句柄

我正在研究来自 WatiN 的以下代码,它处理启动和附加到 Internet Explorer:

WatiN 所做的是它启动 Internet Explorer 并等待它得到它的 .MainWindowHandle (这是在 Internet Explorer 中显示内容的“窗口”的句柄)。一旦它获得了这个窗口句柄,它就会得到一个在用户桌面上启动并运行的所有 IWebBrowser2 窗口的列表,并尝试将进程的 .MainWindowHandle 与一个(如果有的话)窗口句柄相匹配。 IWebBrowser2 集合。

这种方法最重要的问题是 IWebBrowser2.HWND 属性(需要与 .MainWindowHandle 进行比较)可能非常有问题、不稳定和喜怒无常,因为它在您尝试访问它时每隔一次抛出 InvalidCastException(至少在我正在运行测试的机器)。然后又是这样一个操作的开销。

这是我对任何可能更了解我在 Windows 编程方面的知识的人的问题:既然 HWND 无论如何都会匹配,为什么我们不使用 .MainWindowHandle 值立即检索所需的 IWebBrowser2(请参阅上面注释掉的代码) 通过使用以下方法(受 WatiN 本身在 ShellWindow2.cs 中使用的代码的启发):

(作为旁注,我们甚至可以制作一个代理对象,在我的另一篇文章中进行了描述,以缓存窗口句柄,以避免向 IWebBrowser2.HWND 询问)。

这对我来说很好。我看不到 HWND 之间有任何冲突或不匹配——不知道是否有我可能错过的极端情况。我很想在 WatiN 论坛上问这个问题,但我想先在 Programmers' Central 上问一下,以防我遗漏了一些明显的东西。

谢谢大家。任何提示表示赞赏。

干杯,多米尼克

0 投票
2 回答
7086 浏览

c# - 来自 Process.MainWindowHandle 的 C# HwndSource

我正在尝试“挂钩”到窗口的消息以检测最小化/最大化。我环顾四周,认为这样做的唯一/最佳解决方案是挂钩窗口的消息,并检查 WM_WINDOWPOSCHANGED 消息,然后检查它的状态。

我遇到了一个问题。

它会给我一个“未设置对象实例的对象引用”。“source.AddHook ...”上的错误。设置断点时,源变量为空也很明显。换句话说:它无法在第一行获取 HwndSource。

我知道使用“WindowInteropHelper”是可能的,但那是当您将实际窗口作为 Windows.Window 可用时,但在我的情况下我没有。

任何变通方法/解决方案将不胜感激,
René Sackers

PS我100%确定在执行代码时记事本正在运行,并且它设法找到它,它是主窗口句柄。

0 投票
2 回答
624 浏览

winforms - GDI+ 图形对象不反映窗口调整大小

我有以下问题。我正在使用本机 GDI+ 在 Windows 窗体的面板表面上绘图(绘图算法在本机 DLL 内,由 P/Invoke 调用)。一切都很好,但直到一个人改变面板的大小。如果它被缩小,它被正确渲染。但是,如果它被放大,只有面板区域中与其原始大小相对应的部分会被 GDI+ 重绘。

为什么会这样?当面板调整大小时,我真的必须每次都创建新的 Graphics 对象吗?

0 投票
2 回答
4709 浏览

c++ - C++/Win32 枚举属于我的进程的窗口并关闭它们

我有一个 Windows 应用程序,其中嵌入了一个 Web 浏览器(Internet Explorer)。该应用程序可以通过 IPC 从另一个进程中关闭。它工作得很好,除了嵌入式 Web 浏览器可能显示弹出对话框窗口的情况(例如,在保存内容期间)。在这种情况下,我的应用程序在尝试通过 IPC 从外部请求关闭时崩溃。(在内部,它只是将 WM_CLOSE 消息发布给自己。)

鉴于此,我想想出一种方法来枚举属于我的进程的所有窗口并在关闭我的进程本身之前先关闭它们。问题是,您如何枚举属于我的进程的所有窗口以关闭它们?

0 投票
0 回答
381 浏览

wpf - 如何为 ATL COM dll 提供 WPF 控件的 HWND

我有一个 C++ ATL COM DLL (phew),它公开了一个 VideoPlayer 类,它本身封装了对 Windows Media Foundation 的调用。

我从 WPF 应用程序中使用这个 DLL,我想在其中在控件中显示视频。

我的 DLL 有一个名为 Initialize 的方法,它需要 2 个 HWND 用于 MF。

我应该如何声明这个函数?我应该在 WPF 应用程序中给它什么?

目前,我有:

视频播放器.h

视频播放器.cpp

WPF 应用程序:

我在 Initialize 函数中收到正确的值,但转换为 HWND 失败...

有任何想法吗?

提前致谢

麦克风

0 投票
1 回答
1283 浏览

vb.net - 从不同的应用程序读取标签中的文本

我有一个在我的电脑上工作的应用程序。我可以获得该应用程序的每个细节(句柄、主窗口句柄等)

那个应用程序有很多标签,我想在我自己的应用程序中读取那个标签和 msgbox 那个字符串。

0 投票
1 回答
119 浏览

c++ - 在 MSVC++ 中打开一个新应用程序并传递鼠标事件

我有一个应用程序(一个 c++ 控制台应用程序),我想以编程方式打开一个新窗口,在其中启动另一个应用程序(闪光灯投影仪),并将鼠标事件从父级传递给子级。

我尝试过独立启动这两个应用程序并使用 SendInput 来控制全局鼠标位置,但这有点粗糙。接收窗口的位置变得至关重要!

理想情况下,我会创建一个新窗口,以便拥有 HWND 并将 Windows 消息直接发送到该窗口。

可能吗?

谢谢

西蒙

0 投票
2 回答
10667 浏览

c# - C# 显示隐藏窗口

我正在为excel开发一个插件。在某些时候,我可以接收异步事件。如果隐藏在这些事件中,我需要能够显示 Excel 窗口。

我能够存储该Hwnd属性,我认为它必须是一个不可变的 int/reference 来识别我的 Excel 窗口。

有人可以详细说明这个 Hwnd 吗?并解释如何使用它从 C# 中显示隐藏窗口?

在此先感谢各位;)

更新:很快,那是对我的问题进行排序的代码:

0 投票
1 回答
1614 浏览

delphi - 如何将表单句柄传递给 DLL 以在 Windows API 中使用?

首先,我对 DLL 不太满意。我以前做过,但知道的很少,总是有问题。

我正在构建的这个 DLL 需要将一个 Windows 窗体句柄 (HWND) 传递给 DLL 函数,并且 DLL 将使用该句柄调用一个 Windows API 函数。尝试调用任何函数(从 开始Win7InitTaskbar)时,我不断遇到访问冲突 - 就好像它甚至无法调用该函数一样。这让我得出结论,它一定是HWND导致它崩溃的参数......我认为......

DLL函数的实现:

无论我是否使用ShareMem,我都有这个问题(我也不想使用)。发布带有HWND参数的函数是否安全?我也尝试了 LongWord,但仍然没有运气。如果我直接在应用程序内部使用它,内部函数InitializeTaskbarAPI实际上在 DLL 之外可以完美运行。但在这种情况下,我想把这些放在一个共享的 DLL 中。

另外,传递UInt64到 DLL 是否安全?当我获得源代码时,其中一个函数已经使用此参数类型发布。

0 投票
1 回答
496 浏览

c++ - DirectX 框架无法创建交换链和设备

我的 DirectX10 框架工作代码存在重大问题。

D3D10CreateDeviceAndSwapChain()代码在参数的函数中停止ID3D10Device并输出:

pD3DDevice CXX0017:错误:找不到符号“”

我在几乎所有东西上都得到了这个,我的错误处理程序,pSwapChain等等pDepthStencilView

我的代码结构如下:dxGeometry -> dxD3D -> dxSystem -> winMain

这是我的代码:dxD3D.hdxSystem.h

感谢您的帮助,这是过去两天的问题,我几乎尝试了所有方法,但我无法看到解决方案。