问题标签 [findwindow]

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 投票
0 回答
947 浏览

vb.net - 查找特定的打开文件对话框并填充

我正在尝试找到一种方法来识别打开文件对话框并向“文件名”字段发送消息。之后它需要向按钮发送“Enter”键或“Open”命令。

我在 VB 中这样做,但如果有人也可以在 C# 中提供帮助,我相信我可以应付。

我整天都在研究 API 并提出了几种可能性,但我不熟悉如何在 DotNet4 中实现它。我曾经在 VB6 中使用 API,但现在情况似乎有些不同了。

如果有人可以为我提供一个小例子,我将不胜感激。

我看过的一些 API 是 FindWindow 和 FindWindowEx。

编辑:

我发现了一些值得一看的代码。此代码需要在模块内部使用。当我找到更多答案时,我会发布更多内容。

通过使用它,您将能够识别窗口文本、HWND 和类。希望这对人们有所帮助。对我来说,下一步将是确定我希望将数据发送到的字段。

0 投票
1 回答
608 浏览

winapi - 本地挂钩不起作用

我有一个应用程序并希望监视MSWord按键(本地挂钩),但我不知道如何找到要使用的 pid!下面的代码在全局钩子 ( pid= 0) 和 ( pid= GetCurrentThreadId) 下效果很好。但不适用于GetWindowThreadProcessId

我会非常非常感谢任何关于这个问题的...

注意:

  1. 我希望只对MSWord有一个钩子。

  2. 上面的代码有效,仅在尝试挂钩另一个应用程序时失败(即:不使用pid=0pid= GetCurrentThreadId),导致 = "无法安装鼠标挂钩!" .

  3. 我已经尝试过FindWindow,,,, FindWindowEx; 由于这不起作用,我相信问题是。GetForegroundWindowGetActiveWindowGetWindowThreadProcessId

0 投票
2 回答
4647 浏览

c++ - 通过C++获取外部运行程序的窗口句柄

有一个外部运行的程序,我需要能够调整大小。对我来说,最重要的是标题的一部分是与该实例相关的版本和其他特定信息。我知道跨版本应该一致的子字符串。我尝试了 Findwindow() 函数,如果你有标题的确切措辞,它会很好用,但当你只有一部分时就不行。我也尝试过 EnumWindows,但我相信它有同样的限制(我没有太多运气)。我觉得我能做的最简单的事情(如果可能的话)就是从图像名称中获取窗口句柄,以便调整大小。想法?

0 投票
2 回答
24269 浏览

api - 如何使用 Win32 API 找到子窗口的子窗口(3 级深)的子 HWND?

假设我有一个用于其中一个进程的 Window 层次结构:

如何找到 的 HWND Child-Child Window

我尝试FindWindow在类上使用 Win32 API 函数,XYZ_Renderer但该FindWindow函数找不到子窗口。

然后我尝试使用FindWindowto find Main Window,它成功了,但之后使用FindWindowEx只能找到Child WindowasChild-Child Window不是Main Window.

我想我可以更深入一层并在找到 FindWindowEx 时调用Child Window它。

但在我这样做之前,我想也许有一种简单的方法可以找到Child-Child Window

0 投票
1 回答
1426 浏览

sendmessage - 来自其他窗口的控件名称

我需要从其他窗口读取文本值并将该值查询到另一个应用程序(我的问题将围绕第一个任务)......所以,我正在“监视”其他窗口(我们使用的一些与我们的产品相关的第 3 方应用程序) 并等待单击“接受”按钮以从文本框中读取值。这个另一个应用程序,对话框,有多个文本框和命令按钮。我制作了一个鼠标钩,并在此应用程序出现时激活它。我正在读取此窗口矩形内的所有鼠标移动;文本、标题、子窗口 ID、矩形、左/右/中/滚轮点击。我可以抓住“接受”按钮点击;我可以看到按钮标题,我可以读取该窗口,获取文本并确定单击了哪个按钮等。现在……我可以读取所有 EDIT 类值,获取它们的窗口句柄、矩形等,但我无法将它们识别为类集合中的唯一项目:我需要专门阅读我想要的文本框值。幸运的是,当我从 EDIT 类循环中读取文本时,我感兴趣的文本框总是首先出现在我的循环中。但是我想更具体一点;确保我正在阅读带有 NAME 的文本框。我知道。在开发过程中,我可以读取该名称并将其硬编码到程序中。我的怀疑是控件名称未保存在二进制代码中。我的理解是控件 ID、窗口句柄是在创建窗口时创建的,并且绝对不引用控件名称(例如:txtOrderNumber)。如果对于按钮,我可以因为按钮标题而具体化(因此,我可以确定单击了哪个按钮)我被 EDIT 类项目锁定,并且在读取值时被抛出幸运的第一个猜测。我的问题是:如何从另一个窗口获取控件名称,对于这个任务,我有兴趣了解 EDIT 类实例名称。以下是该项目的一些代码(缩短):

Dim hWnd As IntPtr = FindWindow(Nothing, _windowText)

'API:FindWindowEx 'API:SendMessage 'API:GetClassName 'API:GetWindowTextLength 'API:GetWindowText 'API:WM_GETTEXT

我查看了 GetWindowLong 和 GetDlgCtrlID API,并尝试了大多数标志,但到目前为止都没有成功......

任何提示,线索,方向表示赞赏。谢谢

0 投票
1 回答
1080 浏览

winapi - 如何`FindWindow`一个没有出现在Spy ++中的窗口?

我正在使用 IDA Pro 调试一个 Windows 应用程序,我看到它有一次调用FindWindowA并成功地找到了一个具有给定类名的窗口。

但是,当我使用 Spy++ 定位具有给定类名的窗口时,它似乎不存在于任何地方,我找不到它。

我想知道如何找到应用程序在调用时以某种方式在内部找到的同一个窗口FindWindowA?我想知道为什么我的外部应用程序找不到相同的窗口...

0 投票
1 回答
415 浏览

c# - 调用不明确: FindWindow(String, String);

我正在使用这段代码:

但是我得到一个错误。错误说:

以下方法或属性之间的调用不明确:'HyperBox.Form1.FindWindow(string, string)' 和 'HyperBox.Form1.FindWindow(string, string)'

我怎样才能解决这个问题?谢谢。

0 投票
2 回答
237 浏览

.net - 在特定应用程序中查找 MessageBox?

我们已经实施了一个解决方案,给我们的内部用户一个他们需要重新部署我们的应用程序的唠叨消息。我们正在使用文件系统观察程序来监视网络并寻找运行良好的特定文件中的更改。大多数功能都在一个基表单类中实现,我们的应用程序的大多数表单都继承自该基表单类。在重新部署应用程序之前,将每五分钟显示一个新消息框。它让他们感到厌烦,以至于它可以有效地让他们重新部署,但让他们在需要时完成他们所做的任何事情。

如果用户离开他们的办公桌,当他们返回时可能会有 20 多个消息框,就会遇到问题。所以我们要做的是弄清楚他们是否已经关闭了消息框。如果他们没有解雇,就没有理由再展示一个。

他们不仅可以运行多个实现此功能的不同应用程序,还可以运行多个相同的应用程序,只是连接到不同的环境。

我用 FindWindow 成功找到了消息框,但我不知道它属于哪个应用程序的哪个特定实例,所以我不能假设它属于当前实例。我希望 FindWindowEx 通过将消息框所有者的句柄传递给 api 调用来工作,但我没有成功。它总是返回零。

我将展示的代码在 vb.net 中,但我精通 c# 和 vb.net,所以解决方案的形式无关紧要。

无论如何,这里是抛出通知的代码:

我能够找到窗口:

这就是我尝试使用 FindWindowEX 查找窗口的方式:

200398 是上面 mdimain 的句柄。

0 投票
3 回答
2845 浏览

c# - 如何在 FindWindow 中使用正则表达式?

我最终试图编写一些东西来检查特定窗口是否存在,并将其设置为活动状态。我能够使用 FindWindow 来查找文字窗口名称。

标题前面的数字会发生变化,并且永远不会两次相同,因此我试图使用正则表达式来查找是否有任何活动窗口具有如上所示的名称结构,但数字可以改变。我有一个适用于此的常规表达式,但我不知道如何实现它。我试过:

但它不断地失败。那么如何使用 FindWindow/SetForegroundWindow 命令同时让它们使用正则表达式进行检查呢?

更新~~~~我选择了一个最佳答案,但这里是我如何让它工作的实际代码,以防万一有人感兴趣。

如果需要的窗口不存在,我仍然需要弄清楚如何在 EnumWindows 方法中进行测试以引发警报,但我稍后会担心。

0 投票
1 回答
874 浏览

c# - 从控制台窗口(C++ 应用程序)重定向到文本框(C# 应用程序)

我正在创建需要运行另一个应用程序的应用程序(C#)。这个。应用程序是游戏(C++,Directx7,GDI,我没有源代码),它显示用于从 dll(静态)进行调试的控制台窗口。对于显示控制台窗口,此 dll 具有以下行:

在我的 c# 应用程序中。我想隐藏控制台窗口并将文本从控制台窗口重定向到文本框。对于隐藏控制台窗口,我使用的是 winapi FindWindowShowWindow没有问题。但是我如何将文本(输出)从控制台窗口重定向到文本框?