在另一个程序的窗口中查找按钮的句柄

时间:2014-04-19 18:05:15

标签: winapi

我需要一些帮助。我在最后写了我的问题,并将首先解释我的代码究竟应该做什么:

我正在制作一个与其他节目沟通的节目。我需要我的软件才能点击另一个程序上的按钮,我相信这样做的相应代码是:

SendMessage(hWnd, Msg, wParam, lParam);

Msg = B_Click
wParam = 0;
lParam = 0;

但是我不知道如何获取hWnd,它是同时运行的另一个程序的特定窗口上特定按钮的句柄。我读过某个地方,我可能会做以下事情:

HWND buttonHandle = FindWindowEx(hwndParent, hwndChildAfter, lpszClass, lpszWindow);

其中:

HWND hwndParent = A handle to the parent window whose child windows are to be searched
HWND hwndChildAfter = if its null child windows are of the parent window are looked through
LPCTSTR lpszClass = (NOT SURE WHAT THIS IS)
LPCTSTR lpszWindow = (NOT SURE WHAT THIS IS)

但是我对FindWindowEX()函数有一些问题。

问题1:我正在查看的窗口有各种按钮,那么该功能如何知道我正在看哪3个?

问题2: lpszClasslpszWindow变量是什么?如何获取它们?

问题3:这是否是正确的做法?如果不是,请指出正确的方向!

1 个答案:

答案 0 :(得分:0)

您不需要按钮的句柄,您需要其父窗口的句柄。该按钮将BN_CLICKED发送到其父窗口。用spy ++查找按钮的ID。然后使用父级的EnumChildWindows查看所有子窗口。对于每个孩子,使用GetWindowLong和GWL_ID来检查其ID。