Текущий архив: 2012.01.01;
Скачать: CL | DM;
Вниз
как получит PID процесса ntvdm.exe Найти похожие ветки
← →
antsa (2010-07-13 16:49) [0]Возникла задача найти PID этого процесса. PID процесса cmd.exe я могу получить, сначала узнаю hndl окна, затем hndl процесса, затем его PID. Но вот у ntvdm.exe нет окна, вот в этом и проблема. Вообще cmd.exe является родителем ntvmd.exe.. Может это помочь?
← →
Двенадцать © (2010-07-13 16:54) [1]CreateToolHelp32SnapShot?
← →
antsa (2010-07-13 17:17) [2]http://www.sql.ru/forum/actualthread.aspx?tid=87689
procedure TForm1.FormCreate(Sender: TObject);
var
hSnap:THandle;
pe:TProcessEntry32;
s2:THandle;
begin
ListView1.Items.Clear;
pe.dwSize:=SizeOf(pe);
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
If Process32First(hSnap,pe) then begin
While Process32Next(hSnap,pe) do begin
with ListView1.Items.Add do begin
Caption := ExtractFileName(pe.szExeFile);
if ExtractFileName(pe.szExeFile) = "MajorServer.exe" then begin
s2 := OpenProcess(PROCESS_QUERY_INFORMATION,false,pe.th32ProcessID);
//TerminateProcess(s2, 0);
Subitems.Add(inttostr(s2));
Subitems.Add(inttostr(Application.Handle));
end;
//ListBox1.Items.Add(pe.szExeFile);
end; { with }
end;
end;
end;
в строке pe:TProcessEntry32; ругается. что включить в uses???
← →
antsa (2010-07-13 17:22) [3]TLHelp32 в uses !!!!!!!!!!!!!
← →
Двенадцать © (2010-07-13 17:29) [4]как Вы на sql попали? :)
ради интереса
http://www.google.ru/search?rls=ig&hl=ru&source=hp&q=createtoolhelp32snapshot+delphi&aq=2&aqi=g9&aql=&oq=CreateToolHelp32SnapShot&gs_rfai=
на первой странице вообще нет sql.ru :)
а первая ссылка - вполне самостоятельный unit, подключай и юзай
← →
antsa (2010-07-13 17:43) [5]тааак!!
вот код при нажатии button2, label1 выдает нам PID ntvdm.exeprocedure TForm1.Button2Click(Sender: TObject);
var
hSnap:THandle;
pe:TProcessEntry32;
pid: DWORD;
begin
pe.dwSize:=SizeOf(pe);
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
If Process32First(hSnap,pe) then
While Process32Next(hSnap,pe) do
if ExtractFileName(pe.szExeFile)="ntvdm.exe" then
Label1.Caption:=IntToStr(pe.th32ProcessID);
end;
Двенадцать, спасииииибо!!
← →
antsa (2010-07-13 17:44) [6]просто хочется что то попроще и желательно своими руками, я только начинаю, и поэтому для полной ясности в голове стараюсь понимать весь код если что то не понимаю - не использую просто.
← →
antsa (2010-07-13 17:59) [7]Можно еще вопрос, но он не в тему?
procedure TForm1.Button4Click(Sender: TObject);
var
hSnap:THandle;
pe:TProcessEntry32;
//////
IpBase: Pointer;
IpBuf : integer;
numberRead: DWORD;
hProc : DWORD;
begin
pe.dwSize:=SizeOf(pe);
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
If Process32First(hSnap,pe) then
While Process32Next(hSnap,pe) do
if ExtractFileName(pe.szExeFile)="ntvdm.exe" then
begin
Label2.Caption:="PID "+IntToStr(pe.th32ProcessID);
//////////////////////////////
hProc:=OpenProcess(PROCESS_ALL_ACCESS, False, pe.th32ProcessID);
ipbase:=ptr($00021AB3);
ReadProcessMemory(hProc, IpBase, Addr(Ipbuf), 4, numberRead);
Button4.Caption:=IntToStr(IpBuf);
//////////////////////////////
Form1.Color:=clGreen;
end;
end;
я хочу по адресу $00021AB3 процесса ntvdm.exe прочитать значение, не получается. почему? Когда я делаю вот так:procedure TForm1.Button1Click(Sender: TObject);
var
HandleWindow : Cardinal;
IpBase: Pointer;
IpBuf : integer;
numberRead: DWORD;
PID : DWORD;
hProc : DWORD;
begin
HandleWindow:=FindWindow(nil,"FormTest");
GetWindowThreadProcessId(HandleWindow, @PID);
hProc:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
ipbase:=ptr($00453BD4);
ReadProcessMemory(hProc, IpBase, Addr(Ipbuf), 4, numberRead);
Label1.Caption:=IntToStr(IpBuf);
end;
то все работает. Странно, адрес верный PID я нашел, только чуть другим методом. в чем проблема?
← →
antsa (2010-07-13 18:38) [8]procedure TForm1.Button4Click(Sender: TObject);
var
hSnap:THandle;
pe:TProcessEntry32;
//////
IpBase: Pointer;
IpBuf : Single;
numberRead: DWORD;
hProc : DWORD;
begin
pe.dwSize:=SizeOf(pe);
hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
If Process32First(hSnap,pe) then
While Process32Next(hSnap,pe) do
if ExtractFileName(pe.szExeFile)="ntvdm.exe" then
begin
Label2.Caption:="PID "+IntToStr(pe.th32ProcessID);
//////////////////////////////
hProc:=OpenProcess(PROCESS_ALL_ACCESS, false, pe.th32ProcessID);
ipbase:=ptr($00020CB6); //с точкой 4 ьайта
ReadProcessMemory(hProc, IpBase, Addr(Ipbuf), 4, numberRead);
Button4.Caption:=FloatToStr(IpBuf);
//////////////////////////////
Form1.Color:=clGreen;
end;
end;
тип переменной IpBuf должен быть single а не integer так ка я читаю тип с точкой 4 байта
← →
Двенадцать © (2010-07-14 09:55) [9]читать много что
конкретно, вопрос какой?
← →
antsa (2010-07-15 17:48) [10]В предпоследнем посте ответ. Спасибо!!!
Страницы: 1 вся ветка
Текущий архив: 2012.01.01;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.008 c