{
if (Application.OpenForms[i].Name != "index")
Application.OpenForms[i].Close()
}
//这是我做的 关闭所有已打开的窗口 功能
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的窗口在运行,关闭它
}
UserVar ID="无标题" "ID"//在自定义输入你要查找窗口的数字串,特别字眼都可以hwnd =
Plugin.Window.Search(ID)//遍历所有窗口,查找含有“数字串,特别字眼”的窗口并存入hwnd中
(这里按键自带的命令是这样的,你打开记事本 标题含有"无标题",使用这个命令 它会得到该记事本的窗口句柄XX并赋值到变量hwnd
具体结果"XX|" 如果有多个结果 会是这样 "XX1|XX2|XX3")
bb = Split(hwnd, "|")//把所有句柄分开存到数组 (这个是分割字符串,以字符串"|"分割变量hwnd里的字符串并把各项结果以数组形式赋值到变量bb)
cc = CLng(bb(0)) //Clng是强制转换为整数 因为bb这个数组里的成员类型都是字符串,所以要转换一下,方便比较 bb(0) 这里出现下标越界说明bb这个数组里并没有序号为0的这个成员 换句话说就是没有找到窗口
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)