Всем здрасти! На модеме в случае потере связи появляется окно в котором спрашивается хотите ли вы восстановить подключение.
Жутко это бесит!! Нужно перехватить появление этого сообщения.
Пробовал в таймере вот так но это жуткое извращение! и когда играешь например то сворачивается игра!!! БЕСИТ!
Код:
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.