怎样来检测IE是否已经运行,最好有代码,谢了

解决方案 »

  1.   

    检测进程就可以了,iexplore.exe
    具体检测(转发)
    //get a list of all running Exe-Files/ Check if a Exe-File is runninguses 
      Psapi, tlhelp32; procedure CreateWin9xProcessList(List: TstringList); 
    var 
      hSnapShot: THandle; 
      ProcInfo: TProcessEntry32; 
    begin 
      if List = nil then Exit; 
      hSnapShot := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
      if (hSnapShot <> THandle(-1)) then 
      begin 
        ProcInfo.dwSize := SizeOf(ProcInfo); 
        if (Process32First(hSnapshot, ProcInfo)) then 
        begin 
          List.Add(ProcInfo.szExeFile); 
          while (Process32Next(hSnapShot, ProcInfo)) do 
            List.Add(ProcInfo.szExeFile); 
        end; 
        CloseHandle(hSnapShot); 
      end; 
    end; procedure CreateWinNTProcessList(List: TstringList); 
    var 
      PIDArray: array [0..1023] of DWORD; 
      cb: DWORD; 
      I: Integer; 
      ProcCount: Integer; 
      hMod: HMODULE; 
      hProcess: THandle; 
      ModuleName: array [0..300] of Char; 
    begin 
      if List = nil then Exit; 
      EnumProcesses(@PIDArray, SizeOf(PIDArray), cb); 
      ProcCount := cb div SizeOf(DWORD); 
      for I := 0 to ProcCount - 1 do 
      begin 
        hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or 
          PROCESS_VM_READ, 
          False, 
          PIDArray[I]); 
        if (hProcess <> 0) then 
        begin 
          EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb); 
          GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName)); 
          List.Add(ModuleName); 
          CloseHandle(hProcess); 
        end; 
      end; 
    end; procedure GetProcessList(var List: TstringList); 
    var 
      ovi: TOSVersionInfo; 
    begin 
      if List = nil then Exit; 
      ovi.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); 
      GetVersionEx(ovi); 
      case ovi.dwPlatformId of 
        VER_PLATFORM_WIN32_WINDOWS: CreateWin9xProcessList(List); 
        VER_PLATFORM_WIN32_NT: CreateWinNTProcessList(List); 
      end 
    end; function EXE_Running(FileName: string; bFullpath: Boolean): Boolean; 
    var 
      i: Integer; 
      MyProcList: TstringList; 
    begin 
      MyProcList := TStringList.Create; 
      try 
        GetProcessList(MyProcList); 
        Result := False; 
        if MyProcList = nil then Exit; 
        for i := 0 to MyProcList.Count - 1 do 
        begin 
          if not bFullpath then 
          begin 
            if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then 
              Result := True 
          end 
          else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True; 
          if Result then Break; 
        end; 
      finally 
        MyProcList.Free; 
      end; 
    end; 
    // Example 1: Is a Exe-File running ? 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      if EXE_Running('iexplore.exe', False) then //这里检测。。
        ShowMessage('IE is running') 
      else 
        ShowMessage('IE is not running'); 
    end; 
    // Example 2: List running Exe-Files 
    procedure TForm1.Button3Click(Sender: TObject); 
    var 
      i: Integer; 
      MyProcList: TstringList; 
    begin 
      MyProcList := TStringList.Create; 
      try 
        GetProcessList(MyProcList); 
        if MyProcList = nil then Exit; 
        for i := 0 to MyProcList.Count - 1 do 
          ListBox1.Items.Add(MyProcList.Strings[i]); 
      finally 
        MyProcList.Free; 
      end; 
    end;
      

  2.   

    procedure TfrmAdKiller.btnCheckClick(Sender: TObject);
    var
      wHandle: THandle;
    begin
      wHandle := FindWindow('IEFrame', nil);
      if wHandle <> 0 then ShowMessage('IE Already Run!');
    end;