十万火急 请教高手,在一个应用里怎么判断另一个应用程序 如果是打开了就关闭它否则做别的事情?具体怎么实现? 能否给一个完整代码?(api的应用)谢谢!

解决方案 »

  1.   

    var
     handle:THANDLE;
    ...
    BEGIN
     HANDLE:= findwindow(a,b)//a为类名,b为窗口标题 ,有一个就可以
     if handle 〉0 then
     sendmessage(handle,wm_close,0,0);//sendmessage to 
    //close the window ;
     end;
      

  2.   

    PostMessage(ExeHandle,WM_QUIT,0,0);
    ExeHandle是你的应用程序的句柄
    可以通过FindWindow(nil,WindowCaption)来得到
      

  3.   

    WindowCaption 是 应用程序文件名吗? (如:app.exe)
      

  4.   

    WM_QUIT  需要引用什么单元?(use )
      

  5.   

    请问没有标题的窗体应用  怎么关闭(比如a.exe 就是一个flash form 没有标题caption )?
      

  6.   

    写了个函数,不知对不对.uses TlHelp32;{$R *.dfm}procedure CloseApplication(const ApplicationName: string; IsAll: Boolean = False);
    var
      hSnapProcess: THandle;
      ProcessEntry32: TProcessEntry32;
      bRet: BOOL;
      hProcess: THandle;
    begin
      hSnapProcess := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
      ProcessEntry32.dwSize := SizeOf(TProcessEntry32);
      if Process32First(hSnapProcess, ProcessEntry32) then
      repeat
        if ProcessEntry32.szExeFile = ApplicationName then
        begin
          hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessEntry32.th32ProcessID);
          TerminateProcess(hProcess, 0);
          if not IsAll then break;
        end;
      until not Process32Next(hSnapProcess, ProcessEntry32);  CloseHandle(hSnapProcess);
    end;
      

  7.   

    to:loving(老鹰)
    WM_QUIT 需要引用什么单元?
    messages
      

  8.   

    WindowCaption是他的程序的窗体名(就向你的程序Form的Caption一样)
    XXHwnd:HWND;
    begin
       XXHwnd:=FindWindow(nil,pchar(WindowCaption));
       if XXHwnd<>0 then
         begin
           //add your code here
         end;
    end;
    最好把这段程序加到Timer的OnTimer事件中,可以实时监控