![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить указатель на поток, имея ... [D5, D7, WinME, WinXP]
8ung © (2004-04-28 18:13:00)Доброго времени суток! Мастера, помогите...
Как получить указатель на поток, имея хендл его окна, хендл процесса, id процесса. Вроде всё.
Помогите, пожалуйста. очень нужно.
Alexander666 (2004-04-30 03:53:00) [1]GetLastError рулезней :-)
VMcL (2004-04-28 19:52:00) [2]>>8ung © (28.04.04 19:45) [13]
RaiseLastWin32Error (RaiseLastOSError) рулит вообще-то.
8ung (2004-04-28 19:45:00) [3]Блин, правда нашёл ошибку!
У меня было
lppi.hProcess := openprocess(1,true,$CA0)
Я изменил на и всё заработало!
lppi.hProcess := openprocess(PROCESS_ALL_ACCESS,true,$CA0).
Огромное спасибо! Премного благодарен. Вообще спасибо, спасибо, спасибо!!
8ung (2004-04-28 19:42:00) [4]нет, не знаю. Компилятор никаких ошибок не выдаёт, просто ReadProcessMemory ничего не читает и возвращает false.
VMcL (2004-04-28 19:39:00) [5]>>8ung © (28.04.04 19:23) [10]
Ну я ж надеюсь, ты знаешь в какой строке ошибка?
8ung (2004-04-28 19:23:00) [6]Неа. Так не работает ReadProcessMemory
8ung (2004-04-28 19:09:00) [7]Щас попробую
VMcL (2004-04-28 19:05:00) [8]Вместо CreateProcess - OpenProcess с имеющимся у тебя ID процесса в качестве параметра dwProcessId. Получишь хендл процесса (в примере - PI.hProcess). Дальше аналогично.
8ung (2004-04-28 18:51:00) [9]Так там процесс открывается, а мне нужно уже в открытом
VMcL (2004-04-28 18:42:00) [10]А FAQ уже типа не рулит?
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621310&n=15
8ung (2004-04-28 18:41:00) [11]Блин, чего-то я совсем... Не могу никак сделать то, что мне нужно. Исходником не поделитесь? Очень признателен буду. Или хотябы метод реализации задуманного подскажите, плиз.
VMcL (2004-04-28 18:33:00) [12]>>8ung © (28.04.04 18:30) [3]
OpenProcess() + CloseHandle()
8ung (2004-04-28 18:30:00) [13]Да, я немного неправильно сказал. Вообщем, мне нужно производить чтение-запись в память определённого процесса. Это можно делать путем 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).
Так все работает. Но мне нужно, чтобы я не создавал новый процесс, а присоединялся к созданному...
8ung (2004-04-28 18:23:00) [14]hThread
VMcL (2004-04-28 18:21:00) [15]Указатель на поток? Я о таком понятии/термине не слышал. Что имеется в виду?