Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как отследить с какими парамами запущен процесс


Автор: Stadler 28.12.2004, 16:41
У меня проблема, мне нужно узнать с какими параметрами запущен процесс.

Автор: Cheba 28.12.2004, 16:53
Смотри
Код
function ParamCount: Integer;
function ParamStr(Index: Integer): string;

Автор: Stadler 28.12.2004, 16:59
Cheba
Меня интересует не моя прога, а чужая...

Автор: Girder 28.12.2004, 18:39
К примеру... можно вот так извратиться smile

С учетом того что функция в Kernel32.dll находится... отбрасываем... заведомо лишний код smile (Кто знает... тот поймет smile )
Код
procedure TForm1.Button1Click(Sender: TObject);
var pID:Cardinal;
   op,hKernel32:Cardinal;
   GCL,DW,StrAddr,i,L,j:Cardinal;
   Str:String;
begin
try
 pID:=StrToInt(Edit1.Text); //из edit берется идентификатор стороннего процесса
except
 pID:=GetCurrentProcessID(); //типо если ошибка - берем идентификатор текущего процесса
end;
op:=OpenProcess(PROCESS_VM_READ,false,pID);
if op<>0 then
 begin
  hKernel32:=LoadLibrary('Kernel32.dll');
  if hKernel32<>0 then
   begin
    GCL:=Cardinal(GetProcAddress(hKernel32,'GetCommandLineA'));
    FreeLibrary(hKernel32);
    if GCL<>0 then
     if ReadProcessMemory(op,Pointer(GCL+1),@DW,4,i)and(i=4)and
        ReadProcessMemory(op,Pointer(DW),@StrAddr,4,i)and(i=4) then
      begin
       L:=0;
       repeat
        j:=L;
        L:=L+Max_Path;
        SetLength(Str,L);
        if ReadProcessMemory(op,Pointer(StrAddr+j),Pointer(PChar(Str)+j),Max_Path,i) then
         begin
          for i:=j+1 to i do
           if Str[i]=#0 then DW:=0;
         end else DW:=0;
       until (DW=0);
       Caption:=trim(Str); //В caption заносим ответ
      end;
   end;
  CloseHandle(op);
 end;
end;


Удачи.

Автор: p0s0l 29.12.2004, 00:33
Перенесенно из раздела Delphi

Автор: Stadler 29.12.2004, 13:35
Girder
Работает, спасибо, но у меня еще вопрос, как узнать ID другой программы?

Автор: Stadler 29.12.2004, 13:52
Girder
Я подумал... подумал
Вобщем вопрос отложен
Извиняюсь за потерянное время

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)