Bonjour

J'ai écrit un programme qui a pour but de fermer une fenêtre popup à son apparition :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var
 bSortie: Boolean;
 i: Integer;
 
function GetWindows1(Handle: HWND; Info: Pointer): BOOL; stdcall;
var
  Ch: Array[0..255] of Char;
begin
  GetWindowText(Handle, Ch, SizeOf(Ch) - 1);
  if (Ch = 'intercos2.exe - Application Error') then
  begin
    SendMessage(Handle, WM_IME_KEYDOWN, VK_RETURN, 0);
    bSortie := True;
    Result := False;
  end
  else
    Result := True;
end;
 
begin
  i := 0;
 
  // Attente du popup
  bSortie := False;
  repeat
    Application.ProcessMessages;
    Sleep(StrToIntDef(ParamStr(1), 10)*60*1000);
    EnumWindows(@GetWindows1, 0);
    Inc(i);
  until (bSortie) or (i >= StrToIntDef(ParamStr(2), 0));
end.
Ce programme fonctionne à merveille sous XP mais pas sous NT. En effet, la commande SendMessage sous NT de la procédure GetWindows1 est sans effet.

Est ce que qu'un a une petite idée ? ou a déjà fait un programme similaire qui fonctionnerait sous XP et NT ?

D'avance merci !

______________
Ajout des balises de code par qi130 - Merci d'y penser (bouton #)