![]() |
|
#1
|
|||
|
|||
![]() Здраствуйте, такой вопрос: как вызвать функцию в процедуре?
Код:
function TForm1.GetPID(aExeName: String): DWORD; var hSnap: Cardinal; ProcessEntry: TProcessEntry32; Finding: LongBool; begin Result := 0; aExeName := AnsiLowerCase(aExeName); hSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); if hSnap = 0 then Exit; ProcessEntry.dwSize := SizeOf(ProcessEntry); Finding := Process32First(hSnap, ProcessEntry); while Finding do begin if aExeName = AnsiLowerCase(ExtractFileName(ProcessEntry.szExeFile)) then begin Result := ProcessEntry.th32ProcessID; Break; end; Finding := Process32Next(hSnap,ProcessEntry); end; CloseHandle(hSnap); end; Последний раз редактировалось Admin, 25.08.2009 в 10:13. |
#2
|
||||
|
||||
![]() Procedure Form1.ButtonClic(...) var dw: dword; begin dw:=GetPID('C:\1.exe');
end; |
#3
|
|||
|
|||
![]() Спасибо!! Вот кому пригодится получение пид по запущенному exe
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, TlHelp32, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); function GetPID(aExeName: String): DWORD; private { Private declarations } public { Public declarations } end; var Form1: TForm1; const aExeName = 'NOTEPAD.EXE'; implementation {$R *.dfm} function TForm1.GetPID(aExeName: String): DWORD; var hSnap: Cardinal; ProcessEntry: TProcessEntry32; Finding: LongBool; begin Result := 0; aExeName := AnsiLowerCase(aExeName); hSnap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); if hSnap = 0 then Exit; ProcessEntry.dwSize := SizeOf(ProcessEntry); Finding := Process32First(hSnap, ProcessEntry); while Finding do begin if aExeName = AnsiLowerCase(ExtractFileName(ProcessEntry.szExeFile)) then begin Result := ProcessEntry.th32ProcessID; Break; end; Finding := Process32Next(hSnap,ProcessEntry); end; CloseHandle(hSnap); end; procedure TForm1.Button1Click(Sender: TObject); var dw: dword; begin dw:=GetPID(aExeName); OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_WRITE, False, dw); Edit1.Text:=inttostr(dw); end; end. Последний раз редактировалось Admin, 25.08.2009 в 17:44. |