Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.exe
procedure 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
1-1278075174
ifmomax
2010-07-02 16:52
2012.01.01
Windows-service.Некорректное чтение бинарного файла.


15-1312403395
Юрий
2011-08-04 00:29
2012.01.01
С днем рождения ! 4 августа 2011 четверг


3-1269350767
12
2010-03-23 16:26
2012.01.01
ODAC/ запомнить и восстановить текущее положение в dataset


2-1316788939
Litt
2011-09-23 18:42
2012.01.01
CM_MOUSEENTER


4-1253602770
Brick
2009-09-22 10:59
2012.01.01
Сетевой каталог и сервис