FindWindow函数

时间:2025-03-19 18:16:26

先看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
);

参数说明:

  • lpClassName:指定要查找的窗口类名,可以是窗口类名字符串或者是一个原子型的类名原子。如果为NULL,则表示匹配所有的窗口类名。
  • lpWindowName:指定要查找的窗口名,可以是窗口名字符串或者是一个原子型的窗口名原子。如果为NULL,则表示匹配所有的窗口名。

返回值:

  • 如果函数成功,返回找到的窗口的句柄(HWND)。
  • 如果函数失败,返回NULL

FindWindow函数的作用是根据指定的类名和窗口名,在当前活动的桌面窗口中查找匹配的*窗口,并返回该窗口的句柄。通过窗口句柄,可以进行其他操作,如发送消息、获取窗口信息等。

以下是一个示例代码,演示如何使用FindWindow函数查找记事本窗口并发送消息:

#include <>

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消息,以关闭记事本窗口。如果找不到记事本窗口,则弹出一个错误提示框。