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

c# - 将文本插入另一个应用程序的文本框中

如何使用 C# 或 C++ 将文本插入另一个应用程序的文本框中?我很久以前做过这个,似乎记得一些关于使用应用程序 HWND 的事情。但是由于应用程序的每个实例都发生了这种变化,我觉得我不记得完整的故事了。我是否会以某种方式获取正在运行的应用程序列表,提取我想要的应用程序,从中获取 HWND,然后......嗯......然后呢?:)

0 投票
1 回答
279 浏览

visual-studio - Visual Studio 2010 劫持互操作回调和/或隐藏真正的窗口句柄

我正在与供应商提供的非托管 DLL 合作,以与一些自定义硬件进行交互。不幸的是,我无法发布供应商代码,但希望下面的净化代码能够提供足够的信息来说明问题的原因。

供应商 SDK 需要为硬件事件通知注册回调函数。我有一个来自供应商的实用程序来确认这是否成功发生。硬件将自定义 WIN32 消息发送到窗口,SDK 将自身附加到消息循环并在收到这些自定义消息之一时调用回调函数。

当应用程序直接运行时,一切正常。当应用在 Visual Studio 中运行时,注册成功,但不会触发事件。无论有无调试 (F5 / Crlt+F5) 运行都是如此。我还尝试在项目属性中禁用 Visual Studio Hosting 进程,但没有任何区别。

在 C# 类库中,我使用以下代码包装了供应商 SDK:

然后,在 WPF 应用程序中,我像这样使用这个包装器:

供应商 SDK 在 C++ 中提供了一个非托管示例,该示例与我的托管包装具有相同的问题。该应用程序在 Visual Studio 之外运行良好,但从 Visual Studio 内部启动时未收到消息。

我相信这是由于 Visual Studio 妨碍了回调,或者更有可能是当非托管供应商 DLL 访问当前窗口句柄 (HWND) 时返回了错误的值。然而,我不确定这一点。

0 投票
2 回答
556 浏览

c# - 如何使表格和 HWND 相互重新定位?

我有一个System.Windows.Form和一个IntPtr作为 HWND 的角色。

我希望他们每个人都让对方动起来。我很惊讶我在网上找不到任何带有“Hwnd get/set position c#”和许多变体的东西,也许我忽略了明显的结果。

对于给定的示例,请考虑表单“窗口 A”和 Hwnd“窗口 B”。假设我希望 B 的位置是 A 的位置 + 右侧 50 像素。

0 投票
2 回答
7351 浏览

windows - 如何从 DLL 中获取 HWND?

我有一个想要使用 Direct Sound 播放声音的 DLL。为了播放声音,我需要可执行文件的 HWND。我没有加载 DLL 的可执行文件的 HWND。如何在不从可执行文件中传递它的情况下在 DLL 中获取它?

0 投票
1 回答
4111 浏览

java - 在 JPanel 中嵌入 HWND(窗口句柄)

我正在尝试在 JPanel 中嵌入 HWND(窗口句柄)。

实际上,我可以将我的 HWND 嵌入到 JFrame 中,但是嵌入的窗口始终位于其他组件的顶部,并且我无法移动它。如果尝试删除我的 JFrame 的所有子组件,则 HWND 会留在那里。HWND 似乎是在 JFrame 之上绘制的,而不是作为子对象之一。

要将 HWND 嵌入到 JPanel 中,我通过 jna 使用 User32:

我用它来获取我的 JFrame 的 HWND:

有没有办法将 HWND 嵌入到 JPanel 中或将其添加到其他组件中,以便我可以像在 UI 中一样定位它?

谢谢

0 投票
3 回答
4477 浏览

winapi - 如何找到使用 MFC 的父进程的主 HWND 句柄

我有一个在父软件下运行的 DLL 文件。父软件使用 MFC 并显示一个主 GUI 窗口。我想要做的是创建自己的小无模式对话框以在屏幕上弹出并位于主窗口旁边。为此,我认为我需要父主窗口的 HWND,这样我才能找到它的 RECTangle,然后将我的 DLL 窗口移动到我想要的位置。

如果可能的话,我不想改变父母的来源。我怎么能这样做?

第二个可能相关的问题是我是否应该使用 MFC 或普通的 windows API 来创建我的 DLL 对话框。我想要一种更容易实现的方法,并且我在 MSDN 上读到我可能需要父 MFC 应用程序向我发送消息以使我的 MFC 工作,我宁愿不这样做。

0 投票
1 回答
1789 浏览

wpf - GDI 渲染到 WPF 窗口

我已经做了一些搜索,但我找不到确切的答案。在我的 C# WPF 应用程序中,我获取 HWND 指针并将其传递给 C dll。然后该 C dll 尝试使用 GDI 调用在我的窗口上呈现各种覆盖。没有错误,但什么也没有出现。如果我切换到 Windows 窗体,则 dll 可以很好地渲染它。如果我托管一个 WindowsFormHost 控件并从那里使用 hwnd,我将获得相同的效果。我已经看到有关 HwndHost 控件的信息,但它看起来并不像我想要的那样。也许对这种控制有更多了解的人可以告诉我不同​​的说法。我在某处读到用于 DirectX 渲染(如 WPF)的 hwnd 也不能使用 GDI。这是否使我的情况变得不可能?我可以通过在 WPF 窗口上覆盖一个无边框的表单来伪造它,但显然这不会太漂亮。

0 投票
2 回答
2272 浏览

java - 如何获取 Java 组件 ID


我在我的 java 应用程序中使用 MPlayer。根据它的文档,我需要告诉 MPlayer 用于嵌入它的窗口 ID。我正在这样做:

但是,不推荐使用 getPeer() 方法。我想知道是否有解决方法。
非常感谢您的帮助。

0 投票
2 回答
1300 浏览

vb6 - VB6:在第 3 方控件中获取子控件的 hWnd

我有一个 vb6 第三方 UpDown 控件(让它成为 ControlX),使用 UISpy 我可以看到 ControlX 内部有 2 个控件,一个是“ThunderRT6TextBox”,另一个是“UpDown20WndClass”。

我在 ControlX 周围画了一个边框。我正在使用 ControlX hWnd,我像这样绘制边框:

问题是边框是围绕 ThunderRT6TextBox 而不是 UpDown20WndClass 绘制的(可能 ControlX hWnd 返回它的内部 ThunderRT6TextBox 控件 hwnd)。

我想获取 ControlX 的内部 UpDown20WndClass 控件 hWnd,以在其周围绘制边框。

我怎样才能做到这一点?

提前致谢。

0 投票
1 回答
1692 浏览

c# - 如何获取以用户身份运行的 Windows 7 应用程序的 MainWindowHandle从作为本地系统运行的服务中?

我创建了一个以本地系统用户身份运行的服务。此服务使用本机互操作和 CreateProcessAsUser() 方法启动和监视 Silverlight 浏览器外应用程序(以当前登录用户而不是本地系统的身份运行它)。我能够获取生成的进程的句柄并执行 Kill() 之类的操作,但是,我已经意识到该服务无法获取子应用程序主窗口的句柄,因为子应用程序是作为不同的用户运行。我在 Windows 7 上运行。

我的最终目标是正确响应进程何时停止响应(即 Process.Responding == false),以便我可以终止应用程序并重新启动它。然而,Process.Responding 需要进程主窗口的句柄(确切地说是 Process.MainWindowHandle),然而,在这种情况下,Process.MainWindowHandle 总是返回 0。

我被难住了。有没有办法让一个用户在 Win 7 中获得作为另一个用户运行的进程的窗口句柄?

提前感谢您的任何帮助。