www.mamboteam.com
Project1.pl Advertisement
Start arrow FAQ arrow System arrow Jak sprawdzić, jakie pliki *.exe są uruchomione?
piątek, 30 lipiec 2010
 
 
Menu główne
Start
Artykuły
FAQ
Download
Kontakt
Ciekawe linki
Mapa serwisu
Logowanie





Zapomniałeś hasła?
Nie masz konta? Załóż sobie
Jak sprawdzić, jakie pliki *.exe są uruchomione? Drukuj E-mail
Oceny: / 1
KiepskiBardzo dobry 
Napisał: Berl   
niedziela, 13 sierpień 2006




 
procedure CreateWin9xProcessList(List: TStrings);
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: TStrings);
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 if CompareText(ExtractFileName(MyProcList.Strings[i]), FileName) = 0 then Result := True
            else if CompareText(MyProcList.strings[i], FileName) = 0 then Result := True;
            if Result then Break;
        end;
    finally
        MyProcList.Free;
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
    if EXE_Running('Notepad.exe', False) then ShowMessage('Ten plik jest uruchomiony.')
    else ShowMessage('Ten plik nie jest uruchiomiony.');
end;
 
procedure TForm1.Button2Click(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;
Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

 
wstecz   dalej »
LINKUJ PRO
Gościmy
Odwiedza nas 133 gości
Licznik odwiedzin
112125
 
Góra Góra