16,472
社区成员
发帖
与我相关
我的任务
分享
for (;;)
{
HWND hwnd = ::FindWindowA("Notepad", NULL);
if (hwnd == NULL) break;
::SendMessage(hwnd, WM_CLOSE, 0, 0);
}
char classname[128];
static bool IsFindWindow(HWND hwnd, LPARAM lParam) //如果是类函数,需要写成静态函数。
{
TCHAR buf[128]={0};
if(::IsWindow(hwnd)&&::IsWindowVisible(hwnd))
{
::GetClassName(hwnd, buf, sizeof(buf));
if(memcmp(buf,classname,10) == 0)
return true;
}
return false;
}
std::vector <HWND> g_AllWindow;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam) //注意:类型是BOOL 或INT,不是bool
{
if(IsFindWindow(hwnd, lParam))
{
g_AllWindow.push_back(hwnd);
}
return 1; //要一直return 1.因为需要遍历所有的窗口,一旦返回0 将停止遍历。
}
void CtestCloseNotepadDlg::OnBnClickedOk()
{
strcpy(classname,"Notepad");//给classname赋值
if(::EnumWindows((WNDENUMPROC)EnumWindowsProc,NULL))
{
HWND hwnd=g_AllWindow.back();
::SendMessage(hwnd,WM_CLOSE,0,0); //如果有类名是Notepad的窗口在运行,关闭它
}
}
if(memcmp(buf,classname,10) == 0)
char classname[128];
static bool IsFindWindow(HWND hwnd, LPARAM lParam) //如果是类函数,需要写成静态函数。
{
TCHAR buf[128]={0};
if(::IsWindow(hwnd)&&::IsWindowVisible(hwnd))
{
::GetClassName(hwnd, buf, sizeof(buf));
if(memcmp(buf,classname,10) 0= 0)
return true;
}
return false;
}
std::vector <HWND> g_AllWindow;
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam) //注意:类型是BOOL 或INT,不是bool
{
if(IsFindWindow(hwnd, lParam))
{
g_AllWindow.push_back(hwnd);
}
return 1; //要一直return 1.因为需要遍历所有的窗口,一旦返回0 将停止遍历。
}
然后在button的click事件里
strcpy(classname,"Notepad");//给classname赋值
if(::EnumWindows((WNDENUMPROC)EnumWindowsProc,NULL))
{
HWND hwnd=g_AllWindow.back();
::SendMessage(hwnd,WM_CLOSE,0,0);如果有类名是Notepad的窗口在运行,关闭它
}