FindWindow函数是WindowsAPI的一部分,用于查找具有特定类名和窗口名的顶级窗口。文章通过示例代码展示了如何使用这个函数检查CutterComServer,CutterServer,切割控制中心和EchoStudio等程序是否打开,并如何通过找到的窗口句柄执行操作,如发送WM_CLOSE消息来关闭窗口。如果找不到匹配的窗口,函数将返回NULL。
先看FindWindow函数具体使用,可以查找现在电脑上软件是否打开
- HWND pWnd = NULL;
- pWnd = ::FindWindow(NULL, "CutterComServer");
- if (pWnd == NULL)
- {
- pWnd = ::FindWindow(NULL, "CutterServer");
- if (pWnd == NULL)
- {
- pWnd = ::FindWindow(NULL, "切割控制中心");
- if(pWnd==NULL)
- pWnd = ::FindWindow(NULL, "EchoStudio");
- }
- }
-
-
FindWindow函数是Windows API提供的一个函数,用于在当前活动的桌面窗口中查找具有指定类名和窗口名的顶级窗口。
函数原型如下:
- HWND FindWindow(
- LPCTSTR lpClassName,
- LPCTSTR lpWindowName
- );
-
参数说明:
返回值:
FindWindow函数的作用是根据指定的类名和窗口名,在当前活动的桌面窗口中查找匹配的顶级窗口,并返回该窗口的句柄。通过窗口句柄,可以进行其他操作,如发送消息、获取窗口信息等。
以下是一个示例代码,演示如何使用FindWindow函数查找记事本窗口并发送消息:
- #include <Windows.h>
-
- int main()
- {
- // 查找记事本窗口
- HWND hWnd = FindWindow(NULL, TEXT("记事本"));
-
- if (hWnd != NULL)
- {
- // 向记事本窗口发送消息
- SendMessage(hWnd, WM_CLOSE, 0, 0);
- }
- else
- {
- // 找不到记事本窗口
- MessageBox(NULL, TEXT("找不到记事本窗口"), TEXT("错误"), MB_OK | MB_ICONERROR);
- }
-
- return 0;
- }
-
在上述示例中,我们使用FindWindow函数查找窗口类名为NULL(匹配所有窗口类名)且窗口名为"记事本"的顶级窗口。如果找到了记事本窗口,则使用SendMessage函数向该窗口发送WM_CLOSE消息,以关闭记事本窗口。如果找不到记事本窗口,则弹出一个错误提示框。