100分求解决方法~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    use TlHelp32,例子:取excel.exe的进程id话
      AppForceExit('Excel.exe');function AppForceExit(AppName: string):HWND;
    var lppe: TProcessEntry32;
        ssHandle: THandle;
        AppFound: Boolean;
        Wnd: HWND;
    begin
      ssHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
      lppe.dwSize := SizeOf(lppe);
      AppFound := Process32First(sshandle, lppe);
      wnd:=-1;
      while AppFound do
      begin
        
        if UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AppName) then
        begin
          Wnd := OpenProcess(PROCESS_ALL_ACCESS, true, lppe.th32ProcessID);
          break;
        end;
        AppFound := Process32Next(ssHandle, lppe);
      end;
      result:=wnd;
    end;
      

  2.   

    没啥好办法,
    枚举进程的办法很多,用EnumProcesses也可以
      

  3.   

    to chtlovezj:返回的不是进程句柄吧,我用FindWindow返回的句柄和你的这个函数返回的不一样,而且操作也无效~
      

  4.   

    我返回的是进程句柄,你FindWindow返回窗体句柄,怎么会一样
      

  5.   

    if AppForceExit(‘excel.exe’)<>-1 then
      TerminateProcess(AppForceExit(‘excel.exe’), 0);//关闭excel.exe,你想怎么操作?
      

  6.   

    那是窗体句柄,用FindWindow找到窗体,sendmessage发送
    程序句柄多指程序对应的进程句柄
    有的窗体不接受你的消息,例如新版的qq
      

  7.   

    用FINDWINDOW不行,进程主窗体CAPTION不断在变~~~~~~~~~~
      

  8.   

    根据类找,象qq的是#32770,deliphi自己创建的都是Tapplication,也可以EnumWindows枚举窗体