Главная страница
    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.47 MB
Время: 0.032 c
14-1084158197
Alex Konshin
2004-05-10 07:03
2004.05.30
Возникновение жизни


6-1081852444
bit
2004-04-13 14:34
2004.05.30
Входящие подключения


4-1082300345
Privet10
2004-04-18 18:59
2004.05.30
Как управлять PGP


1-1084715381
RomeoGolf
2004-05-16 17:49
2004.05.30
Free и nil - как корректнее совместить?


1-1084775194
Sergo
2004-05-17 10:26
2004.05.30
TreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский