Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить указатель на поток, имея ... [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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо