Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2011, 13:30   #1
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию Hook to Window

Здравствуйте!

Подскажите пожалуйста как через Hook.dll следить за окнами. и сравнивать со ListBOx списком.. если заголовок присудствует тогда комманда
Beep;
Дайте мне власть и я переверну ваш мир!...
KWN, lnc вне форума Ответить с цитированием
Старый 13.10.2011, 13:57   #2
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

если только нужно следить за появлением окна с нужным заголовком, то можно и без хука обойтись, достаточно таймера и функции enumwindows
fate вне форума Ответить с цитированием
Старый 13.10.2011, 14:10   #3
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

если используется хук, то необходимо использовать разделяемую память (файловый мэппинг). список названий окон из ListBox надо будет скопировать в разделяемый буфер.

а если задача только поиск окон с нужным заголовком, то конечно таймер и enumwindows намного проще
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 13.10.2011, 14:39   #4
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

а исходник с примером можно? если не сложно.. я так понял сравнивать вот так...
Код:
  for i := 0 to List.Items.Count - 1 do
  if Pos(Str, List.Items.Strings[i]) > 0 then
а вот как бы точно отсечь появление окна чтобы вывести
Код:
Button1.Enabled := True;
а при переключении окна или смена страницы - с заголовком..
Код:
Button1.Enabled := False;
но не могли все таки исходник приблизительный выложить! заранее спасибо
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось KWN, lnc; 13.10.2011 в 18:43.
KWN, lnc вне форума Ответить с цитированием
Старый 13.10.2011, 20:16   #5
Стелс
Я с вами :-)
Форумчанин
 
Аватар для Стелс
 
Регистрация: 19.10.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от KWN, lnc Посмотреть сообщение
а исходник с примером можно? если не сложно.. я так понял сравнивать вот так...
Код:
  for i := 0 to List.Items.Count - 1 do
  if Pos(Str, List.Items.Strings[i]) > 0 then
а вот как бы точно отсечь появление окна чтобы вывести
Код:
Button1.Enabled := True;
а при переключении окна или смена страницы - с заголовком..
Код:
Button1.Enabled := False;
но не могли все таки исходник приблизительный выложить! заранее спасибо
ага исходник бы мы тогда поможем ............
٩(๏̯͡๏)۶٩(๏̯͡๏)۶٩(๏̯͡๏)۶ моя любимая книга - Окна for чайников . Кодить начал ещё вчера . ......кто там кодит ? Да не кто не кодит это я куякнулся
Стелс вне форума Ответить с цитированием
Старый 13.10.2011, 20:39   #6
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

необходимо чтобы при обнаружении заголовка окна из списка, скажем listBox
скажем там присудствует 'Блокнот'
включалась на моей форме
Код:
Button1.Enabled := True;
а при переключении или закрытии окна Блокнота
Код:
Button1.Enabled := False;
WH_CBT вставляемая НООК-функция следит за окнами, а именно: за созданием, активацией, уничтожением, сменой размера; перед завершением системной команды меню, перед извлечением события мыши или клавиатуры из очереди сообщений, перед установкой фокуса и т.д.

вот как только воспользоваться ею.. подскажите пожалуйста...
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 14.10.2011 в 08:27.
KWN, lnc вне форума Ответить с цитированием
Старый 13.10.2011, 23:12   #7
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

да забудь ты про хуки, лишний геморой
таймер + enumwindows

чуть позже могу набросать пример
P.S.
если настроение будет )
fate вне форума Ответить с цитированием
Старый 13.10.2011, 23:25   #8
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

набросай ПОЖАЛУЙСТА!!!!!!!!!!!!!!!!!!!!!!!
Дайте мне власть и я переверну ваш мир!...
KWN, lnc вне форума Ответить с цитированием
Старый 14.10.2011, 00:21   #9
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

Код:
function EnumWindowsProc(hw:HWND; i:Cardinal):boolean;
var str:array[0..255]of char;
    e:dword;
begin
if IsWindowVisible(hw) then begin
  SendMessage(hw,WM_GETTEXT,length(str),lparam(@str[1]));
  for e:=0 to Form1.ListBox1.Items.Count-1 do
    if pos(AnsiUpperCase(Form1.ListBox1.Items[e]),AnsiUpperCase(str))>0 then
      Form1.ListBox1.Items[e]:=Form1.ListBox1.Items[e]+' - OK';

end;
result:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
enumwindows(@EnumWindowsProc,0);
end;
и не забудь объявить EnumWindowsProc
fate вне форума Ответить с цитированием
Старый 14.10.2011, 00:39   #10
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

ничего не понял.. не работает (((
мне еще нужен был СТАТУС - активно и закрыто ... это как будет??
Вложения
Тип файла: zip Заголовок.zip (5.3 Кб, 9 просмотров)
Дайте мне власть и я переверну ваш мир!...
KWN, lnc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
window.document.write и window.alert() Syltan JavaScript, Ajax 0 26.08.2010 21:32
Программирование в X Window TheVampire Общие вопросы C/C++ 1 04.10.2009 19:14
Immediate Window ZORRO2005 Microsoft Office Excel 1 24.05.2008 16:23