C++:FindWindow()函数
1. 函数功能
FindWindow函数用于在桌面上查找顶层窗口。所谓顶层窗口,是指没有父窗口或者父窗口是桌面窗口的窗口。这个函数主要根据窗口的类名(ClassName)和窗口标题(WindowTitle)来定位窗口。它在自动化测试、与其他应用程序交互以及监控特定应用程序状态等场景中非常有用。例如,你想要获取一个正在运行的文本编辑器窗口的句柄,以便向其发送消息(如模拟用户输入文本),就可以使用FindWindow函数来查找这个窗口。
2. 函数原型
HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
参数说明:
lpClassName:指向一个以空字符结尾的字符串,用于指定窗口类名。窗口类名是在窗口创建之前通过RegisterClass或RegisterClassEx函数注册的一个标识符,用于标识窗口的类型。例如,记事本(Notepad)应用程序的窗口类名是"Notepad"。如果这个参数设置为NULL,则函数会忽略窗口类名进行查找。
lpWindowName:同样是指向一个以空字符结尾的字符串,用于指定窗口标题。窗口标题是显示在窗口标题栏中的文本内容。例如,对于一个打开了文件example.txt的记事本窗口,其标题可能是"example.txt - Notepad"。如果这个参数为NULL,函数会忽略窗口标题进行查找。
3. 返回值
函数返回找到的窗口的句柄(HWND类型)。如果没有找到符合条件的窗口,返回值为NULL。这个句柄可以用于后续对窗口进行操作,如发送消息、获取窗口状态等。例如,在找到一个窗口句柄后,可以使用SendMessage函数向该窗口发送消息来执行特定操作。
4. 使用示例
以下是一个简单的示例,用于查找正在运行的记事本(Notepad)应用程序的窗口:
#include <windows.h> #include <iostream> int main() { HWND hWnd = FindWindow("Notepad", NULL); if (hWnd!= NULL) { std::cout << "找到记事本窗口,句柄为: " << hWnd << std::endl; } else { std::cout << "未找到记事本窗口。" << std::endl; } return 0; }
在这个示例中,FindWindow函数尝试查找类名为"Notepad"的窗口。因为第二个参数(窗口标题)设置为NULL,所以只要窗口类名是"Notepad"就会被找到。如果找到了记事本窗口,就会输出窗口句柄;否则,输出未找到的提示信息。
再看一个同时使用窗口类名和窗口标题查找的示例。假设要查找一个标题为"计算器"且类名为"CalcFrame"的计算器窗口:
HWND hCalcWnd = FindWindow("CalcFrame", "计算器"); if (hCalcWnd!= NULL) { // 对找到的计算器窗口进行操作,如发送消息等 }
这样就可以通过窗口类名和标题更精确地定位到特定的窗口。
C++编程API库
- C++:API(仅展示平时要用的)
- C++:Win32 桌面应用程序
- C++:WinMain()函数
- C++:WNDCLASSEX 窗口类结构体
- C++:LoadIcon()函数
- C++:LoadCursor()函数
- C++:RegisterClassEx()函数
- C++:CreateWindowEx()函数
- C++:ShowWindow()函数
- C++:UpdateWindow()函数
- C++:GetMessage()函数
- C++:MSG 消息结构体
- C++:TranslateMessage()函数
- C++:DispatchMessage()函数
- C++:WndProc()窗口过程函数
- C++:GetModuleHandle()函数
- C++:DestroyWindow()函数
- C++:DefWindowProc()函数
- C++:SendMessage()发送消息函数
- C++:FindWindow()函数
- C++:FindWindowEx()函数
- C++:EnumWindows()函数
- C++:EnumWindowsProc()函数
- C++:GetWindowText()函数
- C++:SetWindowText()函数
- C++:GetDlgltem()取控件句柄函数
- C++:GetDlgCtrllD()取控件ID函数
- C++:GetDlgltemText()取对话框控件文本函数
- C++:SetDlgltemText()设置对话框控件文本函数
- C++:GetDlgltemlnt()取对话框控件整数函数
- C++:SetDlgltemlnt()设置对话框控件的整数值函数
- C++:DialogBox()模态对话框函数
- C++:DialogBoxParam()创建模态对话框函数
- C++:MessageBox()显示消息框函数
- C++:DefDlgProc()对话框过程函数
- C++:MessageBoxIndirect()显示消息框函数
- C++:EndDialog()结束模态对话框函数
- C++:OpenClipboard()打开剪贴板函数
- C++:GetClipboardData()获取剪贴板数据函数
- C++:SetClipboardData()设置剪贴板数据函数