Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.03.2015, 09:35
EEjester EEjester вне форума
Прохожий
 
Регистрация: 03.07.2014
Сообщения: 15
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Отследить появление окна об информации подключения

Всем здрасти! На модеме в случае потере связи появляется окно в котором спрашивается хотите ли вы восстановить подключение.
Жутко это бесит!! Нужно перехватить появление этого сообщения.
Пробовал в таймере вот так но это жуткое извращение! и когда играешь например то сворачивается игра!!! БЕСИТ!
Код:
procedure qwe1;
var
  H1:hwnd;
begin
  H1 := FindWindow(nil, 'Communication has been lost!');
  if H1 <> 0 then
   begin
    EmulateKey(H1, VK_RETURN);
    Exit;
   end;
end;

Нашел вот такой код перехвата но незнаю как его использовать:
Код:
var
  FuckEdrawHook: HHOOK;
 
function FuckEdrawProc(nCode: Integer; WParam, LParam: Longint): Longint; stdcall;
const
  STR_EVALUATION = 'Evaluation Version Reminder';
var
  P: PChar;
  Cpt: string;
begin
  if nCode = HCBT_CREATEWND then
  begin
    P := CBT_CREATEWND(Pointer(lParam)^).lpcs^.lpszName;
    if Assigned(P) then
    begin
      Cpt := StrPas(P);
      if Pos(STR_EVALUATION, Cpt) > 0 then
      begin
        Result := 1; 
        Exit
      end
    end
  end;
  Result := CallNextHookEx(FuckEdrawHook, nCode, WParam, LParam)
end;
 
initialization
 
FuckEdrawHook := SetWindowsHookEx(WH_CBT, FuckEdrawProc, 0, GetCurrentThreadID);
 
finalization
 
if FuckEdrawHook <> 0 then
  UnHookWindowsHookEx(FuckEdrawHook);

И еще нашел вот такой код:
Этот код ловит окна которые начинают мигать в трее и заносит их в memo1. Если его переделать и что бы он за место мигающих ловил открывшиеся окна, то он бы идеально подашел. Но у самого у меня не получается((
Код:
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  protected
    procedure WndProc(var Message: TMessage); override;
  end;
 
var
  Form1: TForm1;
 
function RegisterShellHookWindow(Wnd : HWND) : BOOL; stdcall; external user32;
function DeregisterShellHookWindow(Wnd : HWND) : BOOL; stdcall; external user32;
 
implementation
 
{$R *.dfm}
 
var
  WM_SHELLHOOKMESSAGE : UINT;
 
function SetShellHook(hwndHook : HWND) : Boolean;
begin
  Result := False;
  WM_SHELLHOOKMESSAGE := RegisterWindowMessage('SHELLHOOK');
  if WM_SHELLHOOKMESSAGE <> 0 then
  begin
    if RegisterShellHookWindow(hwndHook) then
      Result := True;
  end;
end;
function UnSetShellHook(hwndHook : HWND) : Boolean;
begin
  Result := DeregisterShellHookWindow(hwndHook);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  if not SetShellHook(Handle) then
    ShowMessage('Не удалось установить хук');
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  UnSetShellHook(Handle);
end;
 
const
  HSHELL_FLASH = $8006;
 
procedure TForm1.WndProc(var Message: TMessage);
begin
  if Message.Msg <> WM_SHELLHOOKMESSAGE then
    inherited
  else
    case Message.WParam of
      HSHELL_FLASH :
        Memo1.Lines.Add(Format('Мигающее окно: HWND = %d', [Message.LParam]));
    end;
end;
 
end.

Последний раз редактировалось EEjester, 13.03.2015 в 09:38.
Ответить с цитированием
  #2  
Старый 13.03.2015, 11:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

так в настройках убрать галочку "Уведомлять при отсутствующем подключении" и включить автоматическое переподключение ? обязательно программу писать?)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 13.03.2015, 11:51
EEjester EEjester вне форума
Прохожий
 
Регистрация: 03.07.2014
Сообщения: 15
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
так в настройках убрать галочку "Уведомлять при отсутствующем подключении" и включить автоматическое переподключение ? обязательно программу писать?)
Если бы можно было так сделать то объязательно сделал. Мадем китайский, прога вообще не от него. Но без нее не работает. Вообщем как хукнуть это окно?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025