C# 如何在特定窗口句柄中查找下一次鼠标左键单击的位置(坐标)

C# 如何在特定窗口句柄中查找下一次鼠标左键单击的位置(坐标),c#,winforms,winapi,mouse,C#,Winforms,Winapi,Mouse,所以我试图在一个特定的窗口中找到下一个左键,而不是整个屏幕 基本上,我想按下一个按钮,然后应用程序在特定窗口中等待下一次左键单击,然后 它用坐标记录它的位置 另外,为了清楚起见,我正在用c#编写一个windows窗体,让您的按钮用于获取目标HWND拥有的线程ID,然后在该线程中安装特定于线程的或钩子 如果要在另一个进程中钩住线程,则需要在DLL中实现钩子 钩子将告诉您接收捕获活动的HWND,以及鼠标的坐标。当您在目标HWND上检测到WM|LBUTTON(DOWN | UP)消息时,您可以移除挂钩

所以我试图在一个特定的窗口中找到下一个左键,而不是整个屏幕

基本上,我想按下一个按钮,然后应用程序在特定窗口中等待下一次左键单击,然后

它用坐标记录它的位置

另外,为了清楚起见,我正在用c#

编写一个windows窗体,让您的按钮用于获取目标
HWND
拥有的线程ID,然后在该线程中安装特定于线程的或钩子

如果要在另一个进程中钩住线程,则需要在DLL中实现钩子


钩子将告诉您接收捕获活动的
HWND
,以及鼠标的坐标。当您在目标
HWND
上检测到
WM|LBUTTON(DOWN | UP)
消息时,您可以移除挂钩。

鼠标单击的是同一应用程序还是外部应用程序?这说明了如何工作。@gunr2171外部应用程序以客户端相对坐标报告位置。根据使用情况,这些坐标需要进行适当的转换。@i在
WH\u GETMESSAGE
hook中不可检测,原始消息数据将提供相对于接收窗口客户端区域的鼠标坐标,是的。但是钩子提供的包装
MSG
也会提供屏幕坐标。就像一个
WH_鼠标
hook一样。