我用FindWindow(‘TApplication’,'xxx.exe')查找却查找不到。xxx.exe这个程序是用VC写的WIN32程序,是不是classname不能用TApplication?

解决方案 »

  1.   

    VC不是TAPPlication,先运行你那个程序,再运行优化大师,看一下不就知道了吗?
      

  2.   

    不是用TAPPLICATION,是用窗体的类名.
    const
      n:Pchar='Form1';
    var
      h:HWND;
      r:string;
      p:pchar;
    begin
      r:=TForm(Self).ClassName;
      p:=StrAlloc(Length(r));
      strcopy(p,Pchar(r));
      try
        h:=FindWindow(p,n);
        Edit1.Text:=IntToStr(h);
      finally
        StrDispose(p);
      end;
      

  3.   

    FindWindow是找窗体,不是找程序.
      

  4.   

    FindWindow(0,'xxx.exe') 试试
    我用它找到过word
      

  5.   

    function FindProcessName(PressID:String):THandle;    //PressID就是文件名
    var
      Ok:boolean;
      ProcessListHandle: THandle;
      ProcessStruct: TProcessEntry32;
      Path:string;
      Pressname:string;
    begin
    try
      result:=0;
      ProcessListHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      ProcessStruct.dwSize := Sizeof(ProcessStruct);
      ok := Process32First(ProcessListHandle, ProcessStruct);
        while Integer(ok) <> 0 do
        begin
          if UPPERCASE(PressName)=UPPERCASE(PressID) then
          begin
            result:=ProcessStruct.th32ProcessID;
            break;
          end;
        ok := Process32Next(ProcessListHandle, ProcessStruct);
        end;
    finally
      CloseHandle(ProcessListHandle);
    end;
    end;
      

  6.   

    FindWindow(0,'xxx.exe')怎么行呢,第一个参数必须是字符串啊
      

  7.   

    FindWindow('xxx.exe.handle,'窗口的标题')
      

  8.   

    好像可以用FindWindow(NULL, 'xxx.exe');
      

  9.   

    用VS中的Spy++看看窗体的类和标题先,最好两个参数精确一致
      

  10.   

    我用closehandle()关闭制定进程,为什么不能关闭呢?
    错误提示:external error c0000008
    请高手指教
      

  11.   

    你参考一下,这是下在C++下的写法:
    HWND hWnd =FindWindow("","窗口标题") //获得它的句柄
    PostMessage(hWnd,WM_CLOSE,NULL,NULL);
      

  12.   

    fangjx 说的是对的关闭进程不推荐用CloseHandle,因为你必须要首先得到所有的线程句柄,然后一次用CloseHandle关闭,最后用CLoseHandle关闭进程句柄,麻烦而且容易出错.关闭进程推荐用OpenProcess+TermianteProcess关闭