Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отлов событий другого приложения через хуки 
:(
    Опции темы
MANAB
Дата 18.11.2010, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.5.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bass, спасибо, буду ковырять.



Да, и я разобрался, почему сообщения не отлавливались. Надо было запускать программу с правами администратора smile 
Работать-то работает, а вот брейками теперь не попользуешься(

Интересно, есть ли возможность их программно установить при запуске программы?

Это сообщение отредактировал(а) MANAB - 18.11.2010, 02:56
PM MAIL ICQ   Вверх
bass
Дата 18.11.2010, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Не понял чем там у тебя не получается пользоваться.....
Но насколько я понял тебе нежно узнать запускается сторонние приложение или нет?????
Если перехватывать запуск процесса на ранней стадии..... То писать драйвер....
А так периодически переберать имена процессов ....
Код

  DWORD GetProcessIdByName(char* lpProcessName)
{
   // Get the list of process identifiers.

   DWORD aProcesses[1024], cbNeeded, cProcesses;
   unsigned int i;

   if (!EnumProcesses (aProcesses, sizeof(aProcesses), &cbNeeded ))
 return 0;

   // Calculate how many process identifiers were returned.

   cProcesses = cbNeeded / sizeof(DWORD);


   char szProcessName[MAX_PATH] = "unknown";
   for (i = 0; i < cProcesses; i++)
   {
 HANDLE hProcess = OpenProcess (PROCESS_QUERY_INFORMATION |
 PROCESS_VM_READ,
 FALSE, aProcesses[i]);

 // Get the process name.

 if ( hProcess )
 {
   HMODULE hMod;
   DWORD cbNeeded;

   if ( EnumProcessModules (hProcess, &hMod, sizeof(hMod),
   &cbNeeded) )
   {
   GetModuleBaseName (hProcess, hMod, szProcessName,
       sizeof(szProcessName));
   }
 }

 // Print the process name and identifier.
 if(!lstrcmpi (szProcessName, lpProcessName))
 {
   CloseHandle (hProcess);
   return aProcesses[i];
 }

 CloseHandle (hProcess);
   }
   return NULL;
}



инклуде псапи....
PM MAIL   Вверх
MANAB
Дата 18.11.2010, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.5.2009
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Нет  smile 
Я хочу отследить нажатие определенной кнопки определенного окна. Поставил хук, который это делает (как уже писал выше, запускать экзешник, который подгружает хук из длл, нужно с правами администратора, именно поэтому у меня не работало). Неудобство заключается лишь с в том, что в теперь в вижуал студии брейкпоинты на хуках не поставишь, чтобы это дело отладить, посмотреть где там и чего(
PM MAIL ICQ   Вверх
bass
Дата 18.11.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 5.8.2007

Репутация: 2
Всего: 2



Я олькой пользуюсь......
Бреками редко....
А вообще это все в контексте другова процесса происходит........
Щас сам мучаюсь с хуками и подменой винпрок.....


PM MAIL   Вверх
xvr
Дата 18.11.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(MANAB @  18.11.2010,  11:41 Найти цитируемый пост)
Неудобство заключается лишь с в том, что в теперь в вижуал студии брейкпоинты на хуках не поставишь,
Почему это не поставишь? Делаешь проект из твоей dll, в пропертях отладки прописываешь в поле 'Исполняемый файл' приложение, в котором собираешься ставить хуки. Ставишь break'и, какие нужно. Запускаешь на исполнение (F5). Потом снаружи запускаешь свою основную программу (можно из другой копии VS).


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.