Главная страница
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.022 c
1-1084979158
TRX
2004-05-19 19:05
2004.05.30
zadachka v turbo pascal


7-1082610876
Demi
2004-04-22 09:14
2004.05.30
Температура процессора


6-1081853437
Сергей Ю.
2004-04-13 14:50
2004.05.30
IP адрес


8-1078392672
Magician
2004-03-04 12:31
2004.05.30
Как из avi сделать последовательность bmp


3-1083848678
Негодов
2004-05-06 17:04
2004.05.30
DBGrid