GetModuleFileNameEx

From
Leonid Troyanovsky ()
To
Alex Fedotov
Date
2002-04-24T23:26:11Z
Area
SU.WINDOWS.NT.PROG
From: Leonid Troyanovsky <lv.t@eco-pro.ru>

Приветствую, Alex.

Alex Fedotov wrote:

> процессе (для пущей верности можно воспользоваться ZwQueryInformationProcess,
> чтобы получить этот адрес).

  Можно спросить и у самого процесса

program getcommandline;

{$APPTYPE CONSOLE}

uses
 windows, sysutils;

var
  hProcess : THandle;
  Pid : DWord ;
  BytesRead: DWord ;
  hThread : THandle;
  dwThreadId : DWord;
  ThreadExitCode: DWord;
  buffer: array [0..MAX_PATH] of char;

begin
  hProcess := 0;

  pid := StrToInt(ParamStr(1));

  try
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, Pid);
    if (hProcess = 0) then
      RaiseLastWin32Error;

    hThread := CreateRemoteThread( hProcess,
                                   nil,
                                   0,
                                   GetProcAddress( GetModuleHandle('KERNEL32.DLL'),
                                                   'GetCommandLineA'),
                                   nil,
                                   0,
                                   dwThreadId);

    if (hThread = 0) then
      RaiseLastWin32Error;

    WaitForSingleObject(hThread, INFINITE);
    GetExitCodeThread(hThread, ThreadExitCode);
    CloseHandle(hThread);

    if not (ReadProcessMemory( hProcess,
                               Pointer(ThreadExitCode),
                               @buffer ,
                               SizeOf(Buffer),
                               BytesRead)) then
      RaiseLastWin32Error;

  finally
    if ( hProcess <> 0)  then
      CloseHandle(hProcess);
  end;

  writeln(buffer);
  readln;
end.

  И есть ли на rsdn ссылка на http://www.mvps.org/win32/main.html ?

-- 
С уважением,	LVT.

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
 * Origin: Talk.Mail.Ru (2:5020/400)