Другие языки программирования и технологии

Как по PID процесса узнать его название?

Как в delphi по PID процесса узнать его название?
- К примеру: PID = 2717 и его название skype.exe
Здравствуйте.

Delphi, к сожалению, нет. Код FreePascal/Lazarus. Нужно немного подправить для Delphi (вместо JwaPsApi нужно просто PsApi, или если этого модуля нет, то объявить нужные функции WinAPI выше самостоятельно) , ну и исправить ошибки, если они возникнут:

{$mode delphi} // в самом Delphi это не нужно

uses Windows, JwaPsApi; // вместо JwaPsApi использовать PsApi

function GetProcessName(PID: DWord): AnsiString;
var
    handle: THandle;
    module: HModule;
    needed: DWord;
begin
    SetLength(Result, MAX_PATH);
    handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, PID);
    if handle <> 0 then begin
        if EnumProcessModules(handle, @module, sizeof(module), needed) then
            GetModuleBaseName(handle, module, PChar(Result), MAX_PATH)
        else
            Result := '';
        CloseHandle(handle);
    end
    else
        Result := '';
end;

begin
    writeln(GetProcessName(5096));
end.

> Сева Николаев
> В PureBasic можно узнать так.. .
Адепты пюревасиков, мягко говоря, лукавят, а грубо говоря, откровенно врут. Дело в том, что в стандартных библиотеках пюревасика нет процедуры GetProcessName, для того, чтобы ее поиметь, нужно доставить внешнюю библиотеку.

Впрочем, все как обычно: ради впихивания в ответ ссылки на ворованные пюревасики, адепты идут на что угодно, даже игнорируя тот факт, что вопрос не имеет никакого отношения к пюревасикам.
Мурод Хамдамов
Мурод Хамдамов
52 422
Лучший ответ
гг через API не зависимо от яп юзай в MSDN
Kernel32.dll
функции : Process32First - Process32Next
Алмаз Гаязов
Алмаз Гаязов
3 207