GetWindowText i PID

Odpowiedz Nowy wątek
2006-08-19 00:03
neopl
0

Jak pobrać <ort>tytół</ort>procesu (nie nazwe pliku) znając jego PID (nie uchwyt) ?

Pozostało 580 znaków

2006-08-19 00:07
neopl
0

Oto funkcja która pobieram pid programu

function TaskList(List: TStrings): Boolean;
var
 PIDs: array[0..1024] of DWORD;
 Handle: THandle;
 Needed: DWORD;
 ModuleFileName: array[0..MAX_PATH] of char;
 ListIndex,i: Integer;
 MemoryString: string;
begin
 if (Win32Platform = VER_PLATFORM_WIN32_NT) and
      (Win32MajorVersion > 3) then
 begin
   Result := EnumProcesses(@PIDs, Sizeof(PIDs), Needed);
   if Result then
   begin
     for i := 0 to (Needed div Sizeof(DWORD)) - 1 do
     begin
       if PIDs[i] <> 0 then
       begin
         Handle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ , False, PIDs[I]);
         if Handle <> 0 then
         begin
           if GetModuleFileNameEx(Handle, 0, ModuleFileName,
                                  Sizeof(ModuleFileName)) <> 0 then
           begin
             GetMemoryString(Handle,MemoryString);
             List.Add(ModuleFileName+ ' - '+IntToStr(PIDs[i])+ ' - '+ MemoryString);
 
           end;
         end; // if Handle
         CloseHandle(Handle);
       end; // if PIDs[i]
     end; // for
   end; // if Result
   end
else
   Result := False;
end;
 
function GetMemoryString(ProcessID : DWord;var MemoryString: string):Boolean;
var
 Bytes, Blocks,
 TaskManWS, TaskManVM: Cardinal;
 PMC: TProcessMemoryCounters;
const
 KiloByte = 1024;
 MegaByte = KiloByte * KiloByte;
begin
 begin
   Result := Win32Check(GetProcessMemoryInfo(ProcessID, @PMC, SizeOf(PMC)));
   TaskManWS := PMC.WorkingSetSize;
   MemoryString := Format(' %.0n K',[TaskManWS / KiloByte]);
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Clear;
TaskList(ListBox1.Items);
end;
 

Chce jeszcze tylko dadac aby pobierał też tytół procesu

Pozostało 580 znaków

2006-08-19 11:56
0

hmm... A co to Twoim zdaniem jest tyt<font color="red">u</span>ł procesu?


Pozostało 580 znaków

2006-08-19 12:39
neopl
0

Chodzi mi oto że moge miec uruchomionych kilka takich samych aplikacji takich jak IE, tym sposobem niemoge ich odróżnić więc chce pobrać ich nazwe w górnej belce. Żeby była też mozliwość pobierania nazwy z Notepada i innych programów.

Pozostało 580 znaków

2006-08-19 12:56
Opi
0

Do identyfikacji procesu służy właśnie PID.
Procesy nie posiadają "tytułów".

Pozostało 580 znaków

2006-08-20 23:42
0

Pobieraj uchwyt głównego okna na podstawie PID.

Poczytaj to.

Ps. Znowu mam wrażenie, że kolejny trojan się rodzi... [rotfl]


Program to zbiór zer i jedynek ułożonych tak, żeby denerwować użytkownika.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0