请问大家delphi怎么关闭带有提示信息的程序?
我想关闭第三方程序,用 SendMessage(fHwnd,WM_CLOSE,0,0);试了不行,程序会有一个是否关闭窗口的对话框,我用了
wnd := FindWindowEx(fHwnd, 0, 'Button','是(&Y)'); //得到对话框中按钮句柄
SendMessage(wnd, WM_KEYDOWN, VK_RETURN, 0);//发送回车消息
但是没有用,请问谁有办法,谢谢了
[解决办法]
- Delphi(Pascal) code
procedure CloseProgram(ExeName:string{进程文件名,如:explorer.exe});//结束进程var bo:boolean; pe:PROCESSENTRY32; snap:HWND; hP:HWND; pid:Cardinal;begin FillChar(pe,sizeof(pe),0); pe.dwSize:=sizeof(pe); snap:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);//获得进程快照 try bo:=Process32First(snap,pe); while bo do begin if LowerCase(ExeName)=LowerCase(pe.szEzeFile) then begin pid:=pe.th32ProcessID;//获得进程ID break; end; bo:=Process32Next(snap,pe); end; if pid<>0 then try hP:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,false,pid);//获得进程句柄 TerminateProcess(hP,0);//结束进程 finally CloseHandle(hP,0); end; finally CloseHandle(snap); end;end;
[解决办法]
- Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var H:HWnd;begin H:=FindWindow(nil,'对方程序标题'); if h<>0 then PostMessage(H,WM_Close,0,0,); Sleep(1000);//关健是这句 H:=FindWindow(nil,'关闭提示的标题'); if h<>0 then begin H:= FindWindowEx(H, 0, 'Button','确定'); if H<>0 then PostMessage(H,WM_KEYDOWN,VK_RETURN,0,); end;end;