判断程序运行的问题
做触摸屏程序时要调出一个虚拟键盘,这个虚拟键盘的程序名是proKb.exe,想这个虚拟键盘的程序未运行时点击一下按钮就运行,如果运行了再点击一下就关了它。
用FindWindow,当程序第一次运行时,会判断handle是有值的,即是认为是已运行了,proKb.exe其实是未运行的,但再次点击BiBtn6就正确了,往后的点击也能判断正确。为什么会出现这样的情况?
void __fastcall TfmMain::BitBtn6Click(TObject *Sender){HWND handle=NULL;handle=FindWindow(NULL,"虚拟键盘");if(IsWindow(handle)) //第一次运行时会判断错误{ SendMessage(handle, WM_CLOSE, 0,0);::DestroyWindow(handle);}else{::ShellExecute(Handle,"open", "proKb.exe","", ".",SW_SHOW);SwitchToThisWindow(handle,TRUE);}}
HWND handle=NULL;handle=FindWindow(NULL,"计算器");if(IsWindow(handle)) //第一次运行时会判断错误{ SendMessage(handle, WM_CLOSE, 0,0);::DestroyWindow(handle);}else{::ShellExecute(Handle,"open", "calc.exe","", ".",SW_SHOW);//SwitchToThisWindow(handle,TRUE);}
[解决办法]
FindWindow(NULL, "虚拟键盘");
你能保证同一个时刻,系统里只有一个窗体标题是“虚拟键盘”的窗口?
[解决办法]
用类名找虚拟键盘句柄也这样吗?