![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем здрасти! На модеме в случае потере связи появляется окно в котором спрашивается хотите ли вы восстановить подключение.
Жутко это бесит!! Нужно перехватить появление этого сообщения. Пробовал в таймере вот так но это жуткое извращение! и когда играешь например то сворачивается игра!!! БЕСИТ! Код:
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
|
||||
|
||||
![]() так в настройках убрать галочку "Уведомлять при отсутствующем подключении" и включить автоматическое переподключение ? обязательно программу писать?)
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Цитата:
|