Re[3]: Перехват создания программы...
От: Stig  
Дата: 06.09.04 15:49
Оценка:
Здравствуйте, Esperar, Вы писали:

Хотелось бы поддержать товарища <Аноним> в его желаниях:

А> По этому поводу есть еще пара вопросов, подскажите кто знает...

А>1)почему я не могу убрать из этого кода вызов MessageBox, как только это делаю
А> программа начинает ругаться: 'Access violation at address 00000000. Read of address
А> 00000000'
А>2)как перехватывать открытие только главного окна, не трогая дочерних!!!!!!!!
А>3)как получить имя EXE'шника(и путь тоже было бы не плохо), есть хендл и имя класса
А> окна,почему то не могу достать caption, использую GetWindowText//возвращает пустую
А> строку, вот код:
А> p.s.:Путь и имя запущеной программы нужны для того что бы, после того как я ее
А> убью, запустить ее еще раз подгрузив свою DLL

А>LRESULT CALLBACK CreateWindowHook(int nCode, WPARAM wParam, LPARAM lParam)

А>{
А> if(nCode < 0)
А> return CallNextHookEx(CurrentHook, nCode, wParam, lParam);

А> if(nCode == HCBT_CREATEWND)

А> {
А> char WindowClass[128];
А> char WindowCaption[128];
А> WindowHandle = reinterpret_cast<HWND>(wParam);
А> GetClassName(WindowHandle, WindowClass, 128);
А> GetWindowText(WindowHandle, WindowCaption, 128);

А> ...


А> CHAR szBuf[255]={0};

А> wsprintf(szBuf, "CreateWindow is hooked: %s", WindowClass);
А> MessageBox(0, szBuf, "!!!", 0);

А> }

А> return CallNextHookEx(CurrentHook, nCode, wParam, lParam);
А>}
Но лучше было бы получить строку запуска т. к. EXE может быть WORD, EXCEL и ....., а нужен сам файл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.