Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Как получить указатель на поток, имея ...   Найти похожие ветки 

 
8ung ©   (2004-04-28 18:13) [0]

Доброго времени суток! Мастера, помогите...
Как получить указатель на поток, имея хендл его окна, хендл процесса, id процесса. Вроде всё.
Помогите, пожалуйста. очень нужно.


 
VMcL ©   (2004-04-28 18:21) [1]

Указатель на поток? Я о таком понятии/термине не слышал. Что имеется в виду?


 
8ung ©   (2004-04-28 18:23) [2]

hThread


 
8ung ©   (2004-04-28 18:30) [3]

Да, я немного неправильно сказал. Вообщем, мне нужно производить чтение-запись в память определённого процесса. Это можно делать путем Read/WriteProcessMemory. Там в параметрах(функции) есть hprocess. Мне нужно узнать этот hProcess у определённого окна.
Всё работает, когда я сам создаю процесс.

var
i:cardinal;
sti:tstartupinfo;
lpPi:tprocessinformation;
...
{if not CreateProcess(nil,"C:\myfile.exe",nil,nil,false,CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,nil,nil,StI,lpPI) then
begin
messageboxa(0,"Error!",appname,MB_ICONERROR);
halt;
end
else  
...  
readprocessmemory(lppi.hProcess,pointer$1005194),@buffer,1,i).

Так все работает. Но мне нужно, чтобы я не создавал новый процесс, а присоединялся к созданному...


 
VMcL ©   (2004-04-28 18:33) [4]

>>8ung ©  (28.04.04 18:30) [3]

OpenProcess() + CloseHandle()


 
8ung ©   (2004-04-28 18:41) [5]

Блин, чего-то я совсем... Не могу никак сделать то, что мне нужно. Исходником не поделитесь? Очень признателен буду. Или хотябы метод реализации задуманного подскажите, плиз.


 
VMcL ©   (2004-04-28 18:42) [6]

А FAQ уже типа не рулит?

http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621310&n=15


 
8ung ©   (2004-04-28 18:51) [7]

Так там процесс открывается, а мне нужно уже в открытом


 
VMcL ©   (2004-04-28 19:05) [8]

Вместо CreateProcess - OpenProcess с имеющимся у тебя ID процесса в качестве параметра dwProcessId. Получишь хендл процесса (в примере - PI.hProcess). Дальше аналогично.


 
8ung ©   (2004-04-28 19:09) [9]

Щас попробую


 
8ung ©   (2004-04-28 19:23) [10]

Неа. Так не работает ReadProcessMemory


 
VMcL ©   (2004-04-28 19:39) [11]

>>8ung ©  (28.04.04 19:23) [10]

Ну я ж надеюсь, ты знаешь в какой строке ошибка?


 
8ung ©   (2004-04-28 19:42) [12]

нет, не знаю. Компилятор никаких ошибок не выдаёт, просто ReadProcessMemory ничего не читает и возвращает false.


 
8ung ©   (2004-04-28 19:45) [13]

Блин, правда нашёл ошибку!
У меня было
lppi.hProcess := openprocess(1,true,$CA0)
Я изменил на и всё заработало!
lppi.hProcess := openprocess(PROCESS_ALL_ACCESS,true,$CA0).
Огромное спасибо! Премного благодарен. Вообще спасибо, спасибо, спасибо!!


 
VMcL ©   (2004-04-28 19:52) [14]

>>8ung ©  (28.04.04 19:45) [13]

RaiseLastWin32Error (RaiseLastOSError) рулит вообще-то.


 
Alexander666 ©   (2004-04-30 03:53) [15]

GetLastError рулезней :-)



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.48 c
14-1084037257
Гордый ламер
2004-05-08 21:27
2004.05.30
Случалось ли у вас такое...


1-1084779488
MikePol
2004-05-17 11:38
2004.05.30
Книга по COM


14-1084469473
хз
2004-05-13 21:31
2004.05.30
UI дизайн


1-1084960234
Fedun
2004-05-19 13:50
2004.05.30
polyline плывет при прокрутке окна


11-1074237028
<Falcon>
2004-01-16 10:10
2004.05.30
QueryEndSession и вход в систему под другим именем