Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: HWND: набор без ввода  (Прочитано 12503 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tomson
Участник

ru
Offline Offline

« : 04-04-2008 14:17 » 

Всем привет!
Подскажите, как можно получив информацию о окнах и событиях в них изменять её так, что-бы на результат реальной работы системы это не повлияло? Т.е. к примеру прибавлять каждому значению события произвольное число, но в работе использовать только истинное значение.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 04-04-2008 14:25 » 

Tomson, а какая именно информация в окнах интерисует тебя ? Улыбаюсь
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 04-04-2008 14:35 » 

Цитата
прибавлять каждому значению события произвольное число, но в работе использовать только истинное значение.

"Переведи" (с)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Tomson
Участник

ru
Offline Offline

« Ответ #3 : 04-04-2008 15:12 » 

Tomson, а какая именно информация в окнах интерисует тебя ? Улыбаюсь
GetSelection и GetText
Цитата
прибавлять каждому значению события произвольное число, но в работе использовать только истинное значение.
Ну это что-то вроде:"нельзя найти то чего нет", но оно есть и работает. Вопрос в том в какой только форме оно есть Улыбаюсь

"Переведи" (с)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 04-04-2008 15:19 » 

Tomson, для GetWindowText() посылай окошку сообщение WM_GETTEXT

для достать выделение - зависит от контрола, я думаю, надо соответственно искать в МСДН
например EDIT - EM_GETSEL

lResult = SendMessage(
      // returns LRESULT in lResult     (HWND) hWndControl,
      // handle to destination control     (UINT) EM_GETSEL,
      // message ID     (WPARAM) wParam,
      // = (WPARAM) (LPDWORD) wParam;    (LPARAM) lParam
      // = (LPARAM) (LPDWORD) lParam; );  
Parameters

wParam
Pointer to a buffer that receives the starting position of the selection. This parameter can be NULL.
lParam
Pointer to a buffer that receives the position of the first nonselected character after the end of the selection. This parameter can be NULL.
« Последнее редактирование: 05-04-2008 07:31 от Алексей1153++ » Записан

Tomson
Участник

ru
Offline Offline

« Ответ #5 : 05-04-2008 06:06 » 

в общем вот пока что вышло, только вот не понятно, как сделать из этого процесс, ну что-бы постоянно висел
Код:
typedef HWND	(WINAPI *PROCGETSHELLWND)(void);
PROCGETSHELLWND GetShellWind;

void main(void)
{
  HMODULE hUser32 = GetModuleHandle("user32");
  if (!hUser32)
      return;

  GetShellWind = (PROCGETSHELLWND)GetProcAddress(hUser32,"GetShellWin");
  if (!GetShellWindow)
      return;

  HWND hWnd = GetShellWindow();
  char s[280];
  GetWindowText(hWnd,s,sizeof(s));
  printf("HWND: %lX\tCaption: %s",hWnd,s);
}
если просто выполнить, то правильно определяет активное окошко...
C:\>getshell
HWND: 10072     Caption: Program Manager
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 05-04-2008 06:47 » 

Tomson, а какую именно задачу ты собираешься решить своим постоянно мониторящим процессом - фиксировать в журнал, какие окна у пользователя активны? Тогда, может, достаточно функции GetForegroundWindow, вызываемой, скажем, по таймеру в цикле? (MSDN: http://msdn2.microsoft.com/en-us/library/ms633505(vs.85).aspx)
« Последнее редактирование: 05-04-2008 06:49 от Вад » Записан
Tomson
Участник

ru
Offline Offline

« Ответ #7 : 05-04-2008 07:59 » 

Несовсем, нужно обмануть такой шпион, поэтому я писал про "набирать, но не вводить". Т.е. после каждого реального символа добавлять произвольные символы так, что-бы на реальный ввод они не повлияли.
« Последнее редактирование: 05-04-2008 08:14 от Tomson » Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 05-04-2008 08:04 » 

А почему не надо вводить? В принципе, если ты поменяшь заголовок окну, ничего фатального не произойдёт с приложением, это же просто изменение заголовка существующего окна Улыбаюсь Можно, например, заменить в заголовке одинаковые по написанию буквы русского и английского алфавита друг на друга Улыбаюсь
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #9 : 05-04-2008 08:14 » 

>Можно, например, заменить в заголовке одинаковые по написанию буквы русского и английского алфавита друг на друга
Ну и что ? Информативность от этого не изменится.
Хм, да, с заголовками можно пожалуй и так поступить, вот только потом можно будет самому запутаться. Или можно сделать подобно WM_GETTEXT
?
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 05-04-2008 08:53 » 

Tomson, смотря, как твой шпион работает: если сверяет с чем-то и регистрирует совпадения/несовпадения, то - одно. Если пишет в журнал всё, то другое дело. Я так понимаю, тебе надо, чтобы нежелательные заголовки выглядели как-то не так, содержали другой текст?
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #11 : 05-04-2008 12:18 » 

да, ну в прочем не только заголовки.
Записан
Tomson
Участник

ru
Offline Offline

« Ответ #12 : 06-04-2008 10:53 » new

А перехватывает ли ЖдетТекст то что содержится в перловой программе в STDIN или набирают в командлайне в Term::ReadKey?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines