问题标签 [window-handles]

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 回答
1505 浏览

c# - 您如何在您之外的 chrome/firefox + 应用程序中检索内部窗口句柄?

有一些 PInvoke 函数可用于获取窗口句柄,但如何获取正在使用的确切窗口句柄:例如应用程序中的 richTextBox1 窗口?还是 Notepad.exe 的文本框句柄?还有 chrome/firefox 网页上的文字。

抓住所有三个的例子将是糟糕的......最受赞赏的是在 Google Chrome 或 Firefox 中:无论是文本框还是PAGE

这适用于应用程序本身的窗口,但在记事本和 chrome 中失败

0 投票
1 回答
316 浏览

c# - 给定窗口句柄,监听 Handle Rect Change 事件

我有一个窗口的句柄(HWND),我想监听边界矩形的变化。我可以GetWindowRect(HWND hWnd, LPRECT lpRect);每隔 n 毫秒检查一次,但这似乎真的很浪费。

是否有我可以收听的 Windows 消息?

窗口句柄不是我拥有的窗口。

0 投票
2 回答
6808 浏览

vb.net - 执行一个应用程序并等待它被加载

我正在寻找一种方法来执行 Steam(Steam.exe)并等待它被加载(不退出)。

我认为一个好主意是列出所有子句柄并在标题句柄中搜索一个字符串,因为当蒸汽加载存在一个名为“Friends”的窗口句柄时,但这对我来说很难(API)所以可能存在等待程序加载的简单方法...

我将要做什么的例子:

更新:

主要问题是如何等待 X 进程被加载,但关于 Steam.exe 我也注意到,当 Steam 被加载时,我会尝试读取/打开一些 regkeys:

http://img267.imageshack.us/img267/6599/prtscrcapture4u.jpg

也许我可以用代码做一些事情来监控其中一个 RegKeys 是否被访问?

像这样的东西?:

更新 2:

我正在尝试通过引用 Amegon 的解决方案来制作一个函数,但我没有完成代码,因为我在一行中遇到了错误:

在此处输入图像描述

但是,当我尝试启动“大”应用程序(需要大量时间加载的应用程序,如 Photoshop)时,我只会收到错误消息,而“小”应用程序运行良好。

如果有人可以帮助我简化/改进 Amegon 的解决方案以制作通用函数并纠正内存溢出错误...谢谢!

这是我的代码:

0 投票
3 回答
29553 浏览

c# - C# Process.MainWindowHandle 总是返回 IntPtr 零

这是我的代码:

问题是,game.MainWindowHandle 总是 IntPtr.Zero。我需要找到运行过程的IntPtr来确认游戏是由启动器启动的,所以我让游戏发送它是IntPtr,如果没问题让启动器响应。但为此,我必须具体了解运行进程的 IntPtr。

提前致谢!

0 投票
1 回答
1715 浏览

java - 如果弹出窗口存在,我如何断言 true?

基本上,如果当我单击它当前执行的按钮时出现弹出窗口,我希望能够断言 true。我该怎么做呢?这是我的代码:

我正在切换到该窗口,然后将其关闭并返回原始窗口。但是,如果弹出窗口,我希望能够断言 true。

0 投票
1 回答
811 浏览

c# - Getting window handle of a gnuplot graph in C#

I am working on a GUI project in C# Winforms that requires the use of charts from gnuplot. These charts must be in the dynamic form so that the user can get information by clicking on the chart. This means that I have to have the window open and cannot simply use a picture of the chart in the GUI. I have everything working, but I want to be able to control where on screen the gnuplot chart appears so that the user does not have to move it manually. I am using C# processes to run gnuplot and I have found that using the user32.dll function MoveWindow would let me move a window of a process if I had its window handle, but unfortunately the graphs are not the process themselves, they are created by sending commands to gnuplot from the process so I cannot find the window handle of the graph itself.

Is there anyway for me to get the window handle of these graphs, or does anybody know an easier way to choose where graphs created by gnuplot appear on sceen?

Here is some sample code showing how my process is creating the gnuplot graphs

Thanks in Advance,

-Jake

0 投票
1 回答
1343 浏览

delphi - Delphi 指针、数组、句柄

我无法理解使用自定义记录并制作记录数组然后指向该记录的指针的指针,特别是我想要实现的是使用给定的类名为每个顶级窗口句柄制作记录,这意味着有超过 1,对于我EnumChildWindow用来获取子窗口句柄的每个窗口,我想记录每个窗口并将其传递给带有标题的组合框,并使记录成为该项目的对象,以便我可以访问每个记录稍后通过选择它。

我的问题是我对指针的处理,在第一次将任何添加到一个数组记录时,我一直被拒绝访问。

在这里休息

这是我正在使用的完整代码,因此人们可以更好地了解我正在尝试做的事情。

如果有人能指出(没有双关语)我正确的方向,我将不胜感激。

0 投票
1 回答
948 浏览

c++ - 如何从它的进程路径中获取窗口标题

我有一个进程的路径,我想在 C++ 中获取它的窗口标题。

我们假设这个过程只有一个窗口。

因此,例如我的流程路径是:

C:\Program Files\My Program\program.exe 这是一个正在运行的进程的路径,我想得到它的 windows 标题。

谢谢。

0 投票
1 回答
197 浏览

c# - 关闭访问特定文件的进程子窗口(例如 Word 窗口)

场景(强制删除文件,重启时无法删除):

  1. 我有一个在某个程序中打开的文件,比如 MS Word。可能还有一些其他文件也在 MS Word 中打开。
  2. 在我的 C# 程序中,我需要知道哪个进程正在访问该特定文件,并且只需要从 Word 中关闭/释放该特定文件。其他文件不应该被打扰,所以我不会使用 Process.Kill() 方法。

鉴于上述情况,我做了以下事情:

  1. 使用此处的代码找到了访问我的目标文件的进程(Process 类的实例)

  2. 找到该进程持有的句柄列表(使用 NtQuerySystemInformation() 方法)。

  3. 从句柄列表中,我能够找到保存我的文件的特定句柄(使用 NtQueryObject() 方法)。尝试在此句柄上调用 CloseHandle() 但这不起作用。
  4. 现在我还可以列出目标进程中的所有子窗口句柄。

如何找到与我在上面的步骤 3 中找到的文件句柄相关的特定窗口句柄?我的计划是使用带有 WM_CLOSE 消息的 SendMessage() 方法到该特定窗口,以便将其关闭并释放我的文件。

一种方法是检查该子窗口标题中的文件名字符串,然后关闭该窗口。但问题是,同名文件可能已从其他位置打开。

0 投票
2 回答
546 浏览

c# - 每次显示消息框时运行代码

我有一个相当大的 C# Forms 应用程序。有一个 MdiParent 控制着许多 MdiChilds。我还创建了一个“加载屏幕”,当用户打开需要一些加载时间的表单时,它总是跳到顶部。

问题是,如果有异常,我通常在 catch 中使用 Messagebox.Show(ErrorNumber) 之类的东西,这样用户就知道发生了什么。当我的加载屏幕打开并显示一个消息框时,无法单击它。

我想调整一下。有没有办法在我的 MdiParent (或其他地方,只要它只是一次)中放置一个函数,以便在显示 MessageBox 时运行代码?这样,我可以轻松地调用一个函数来关闭我的加载屏幕。可能还有其他解决方案,但我想了解更多关于窗口把手、挂钩等的信息。