Текущий архив: 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.47 MB
Время: 0.032 c