Здравствуйте, Inversion, Вы писали:
I>> То есть если батник уже был запущен и стоял на ожидании, когда устанавливается глобальный хук, то хук к этому батнику не цепляется вообще.
CEM>>Какой именно хук? И как проводилось зацепление?
I>Глобальный типа WH_CALLWNDPROC, через SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)dllHookProc, g_hDLL, 0) из .exe
Ну да, выходит, функция обработки в паузе. (могу врать).
CEM>>Это надо спаем проверить, опять же, если получится
I>«спаем проверить» — это как?
Это ms spy++ или любое приложение, которое может отлавливать сообщения. Кстати да, если спай не заработает на консольном, то: 1. или нет сообщений, 2. или нельзя просто так хуком цепануться на консольное приложение.
I>SetTimer(NULL, t_watchForMainApp, 4000, (TIMERPROC)tf_watchForMainApp)
I>Вроде так и делал (ставил NULL вместо окна), иначе таймер и не хотел работать.
Ого. Вот это уже интереснее

Т.е. даже такой таймер не работает? На вский случай спрошу, в курсе, что оконные и неоконные таймеры различаются по параметрам, возвращаемым значениям и принципу запуска при одной и той же сигнатуре SetTimer?
I>А я почитал, что они служат для того, чтобы позволять определённому хуку срабатывать или нет. Об управлении установкой хуков речи не нашел.
Ну я читал, что это хуки для отладки хуков.
I>Попробовал в DLL_PROCESS_ATTACH.
I>И FreeLibraryAndExitThread(hDllInst, 0) и FreeLibrary(hDllInst) завершают тот процесс, из которого вызываются
Не подходит.
Хмм... не уверен, но если хэндл получить из GetModuleHandle ("<тут_имя_dll>"); ?
Т.е. я делал Free на хэндл, который получал сам, на не тот который в DllMain (hDllInst — это же про него речь?)
CEM>>Проблема в том, что хук опять повесится. Но тут надо поэкспериментировать. Если это будет не накладно, то можно так и оставить, чтобы он сам автоматически снимался.
I>Попробовал — накладно, то есть ощутимо (Пробовал на процессе Total Commander'a, так он постоянно продолжал пробовать подцепиться и при этом как-то подтормаживал)
Так Тотал Коммандер же не консольное окно. Там событий сыпется тысячи штук в секунду. Вся заточка на отцепление именно на _консольность_ с надеждой, что они меньше крутят функцию обработки окна.
... блин, где знающие люди, которые подскажут про консольное окно сюда нам?...
I>Тоже думал об таком… очень геморно 
Так, а какая задача вообще стоит, если не секрет? А то может и не нужны хуки вовсе?
PS. Посмотрел spy++, он вообще отказывается включать перехват на консольных окнах!