FindWindow函数!具体谈谈你的要求,你要知道运行的程序是自己的还是别的应用程序?

解决方案 »

  1.   

    用Findwindow(classname,windowtitlename)!,如果成功,返回Window handle,否则,返回
    0;如:Findwindow(TApplication,'NetAnts 1.24');能查出是否运行了网络蚂蚁!
      

  2.   

    NetAnts 1.25怎么办,
    Acdsee 呢?
      

  3.   

    要判断程序已经运行(自己写的),在dpr中用CreateMutex来判断:
    program Project1;uses
      Forms,
      Windows,
      main in 'main.pas' {FrmMain};{$R *.RES}var Mutex:THandle;begin
      Mutex:=CreateMutex(nil,True,'project1');
      if GetLastError<>ERROR_ALREADY_EXISTS then
      begin
        Application.Initialize;
        Application.CreateForm(TFrmMain, FrmMain);
        Application.Run;
      end
      else
      begin
        Application.MessageBox('程序已经运行!','提示',MB_OK+MB_ICONINFORMATION);
      end;
      ReleaseMutex(Mutex);
    end.
      

  4.   

    一分为二:
    1)若是找自己编写的应用程序,就正于joyhero(JoyHero)所言!
    2)若是想找任意的应用程序是否在运行,那就用如下方法: //列出所有运行的主窗体    
    function EnumWindowsProc(hWindow:hwnd; lparam:longint):bool;stdcall;
    var
     lpbuffer:PChar;
     windowcaptionfound:bool;
     classnamefound:bool;
    begin
      getmem(lpbuffer,255);
      result:=true;
      windowcaptionfound:=false;
      classnamefound:=false;  try
       if GetWindowtext(hwindow,lpbuffer,255)> 0 then
         if pos(PFindWindowStruct(lParam).caption,strpas(lpbuffer))>0 then
          windowcaptionfound:=true;   if PFindWindowStruct(lParam).classname='' then
          classnamefound:=true
       else  if GetclassName(hwindow,lpbuffer,255)> 0 then
         if pos(PFindWindowStruct(lParam).classname,strpas(lpbuffer))>0 then
          classnamefound:=true;   if (windowcaptionfound and classnamefound) then
       begin
         pFindwindowStruct(lParam).windowHandle:=hWindow;
         Result:=false;
       end;
      finally
        freemem(lpbuffer,sizeof(lpbuffer^));
      end;
    end;function  FindAWindow(caption:string; classname:string):THandle;
    var
      WindowInfo:TFindWindowStruct;
    begin
      windowinfo.caption:=caption;
      windowinfo.classname:=classname;
      windowinfo.windowhandle:=0;  EnumWindows(@EnumWindowsProc,longInt(@windowinfo));
      FindAWindow:=Windowinfo.windowhandle;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
       TheWindowHandle:THandle;
    begin
      TheWindowHandle:=FindAWindow('浏览','');//这里可以找任意的应用程序标题
      if TheWindowHandle=0 then
      begin
        showmessage('window not found!');
        winExec('EXPLORER.EXE',SW_SHOWNORMAL);
      end
      else
       BringWindowToTop(TheWindowHandle);
     end;end.