Главная страница
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.05 c
3-1083760319
Hunter
2004-05-05 16:31
2004.05.30
Вопрос для общего развития


7-1082463805
YuRock
2004-04-20 16:23
2004.05.30
Доступ к COM порту по сети


1-1084558596
DIS
2004-05-14 22:16
2004.05.30
MsAgent


14-1084478733
Черный прапорщик
2004-05-14 00:05
2004.05.30
Сабж


7-1082542124
DenK_vrtz
2004-04-21 14:08
2004.05.30
Как дать пользователю права администратора