设计需求:
向一个标准窗口控件按钮发送点击消息。
需要的API函数:
1、FindWindow函数
函数原型:
HWND WINAPI FindWindow( _In_opt_ LPCTSTR lpClassName, //窗口的类名 _In_opt_ LPCTSTR lpWindowName //窗口的标题 );查看微软官方说明:http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
2、FindWindowEx函数
函数原型:
HWND WINAPI FindWindowEx( _In_opt_ HWND hwndParent, _In_opt_ HWND hwndChildAfter, _In_opt_ LPCTSTR lpszClass, _In_opt_ LPCTSTR lpszWindow );
函数功能:
在窗口列表中寻找与指定条件相符的第一个子窗口。
3、GetDlgCtrlID函数
函数原型:
int WINAPI GetDlgCtrlID(
_In_ HWND hwndCtl
);
函数功能:
获取该句柄控件的ID。
查看微软官方说明:http://msdn.microsoft.com/en-us/library/windows/desktop/ms645478(v=vs.85).aspx
4、SendDlgItemMessage函数
函数原型:
LRESULT WINAPI SendDlgItemMessage(
_In_ HWND hDlg,
_In_ int nIDDlgItem,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
函数功能:
向窗口中控件ID发送消息。
查看微软官方说明:http://msdn.microsoft.com/en-us/library/windows/desktop/ms645515(v=vs.85).aspx
示例代码:
# include <windows.h>
int main(void)
{
HWND hwnd;
HWND childHwnd;
int idBrowserTitle;
TCHAR * runTitle = "运行";
TCHAR * runBrowserTitle = "浏览(&B)...";
//先win + r打开运行对话框
while(1)
{
hwnd = FindWindow(NULL, runTitle);
if (hwnd)
{
childHwnd = FindWindowEx(hwnd, NULL, NULL, runBrowserTitle);
if (childHwnd)
{
idBrowserTitle = GetDlgCtrlID(childHwnd);
if (idBrowserTitle)
{
SendDlgItemMessage(hwnd, idBrowserTitle, BM_CLICK, 0, 0);
break;
}
}
}
}
return 0;
}