[Delphi] Zamknięcie okna, który ma w nazwie określony tekst

0

Mam problem z zamknięciem otwartego okna, który ma w nazwie określony tekst. Mianowicie mam taki kod:

ShellApi
...
...
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd : THandle;
begin
hwnd := FindWindow(nil, 'Okno');
SendMessage(hwnd, WM_CLOSE, 0, 0);
end;

No i wszystko działa, ALE chciałbym, żeby mi zamknął też te okna, które mają w nazwie np. "Okno 00" czy "okno 25 lol", bo teraz zamyka tylko to okno, co ma w tytule "Okno". Jak zrobić, żeby mi zamykało wszystkie okna, które mają w nazwie "Okno"? Nie chodzi mi tutaj o killowanie procesów...

0

zrob liste okien, potem (lub lepiej w trakcie) sprawdzaj funkcja Pos czy w tekscie okna znajduje sie jakis ciag znakow.

0
cimak napisał(a)

zrob liste okien, potem (lub lepiej w trakcie) sprawdzaj funkcja Pos czy w tekscie okna znajduje sie jakis ciag znakow.

Może jakiś przykładowy kod? Zaawansowanym programistą nie jestem... :( Szukałem na google, ale za bardzo nie wiem co wpisać ;/ Ja wiem, ze może proszę o dużo, ale kiedyś każdy zaczynał tak jak ja :D hehe :) Tak czy inaczej z góry WIELKIE THX!!!

0
user napisał(a)
cimak napisał(a)

zrob liste okien, potem (lub lepiej w trakcie) sprawdzaj funkcja Pos czy w tekscie okna znajduje sie jakis ciag znakow.

Może jakiś przykładowy kod? Zaawansowanym programistą nie jestem... :( Szukałem na google, ale za bardzo nie wiem co wpisać ;/ Ja wiem, ze może proszę o dużo, ale kiedyś każdy zaczynał tak jak ja :D hehe :) Tak czy inaczej z góry WIELKIE THX!!!

bo ladnie proszisz ;] :

procedure ppp(s:String; h:HWND);
begin
If Pos('text_wystepujacy_w_oknie',s)>0
        then CloseWindow(h);
end;

function EnumChildProc(uchwyt:Hwnd;P:pointer):boolean;stdcall;
var
 winname:array[0..144]of char;
begin
 result:=true;
 getwindowtext(uchwyt,winname,144);
 ppp(winname, uchwyt);
end;

function EnumWindowProc(uchwyt:HWnd;P:Pointer):boolean;stdcall;
var
 winname:array[0..144]of char;
begin
 result:=true;
 getwindowtext(uchwyt,winname,144);
 ppp(winname, uchwyt);
 enumchildwindows(uchwyt,@enumchildproc,0);
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@enumwindowproc,0);
end;
0

Jesteś Wielki :) ort! WIELKIE ort!!!! Tylko mam taki mały problem... Mianowicie powinno zamykać okno, a tylko je pomniejsza do paska zadań (tzn. zamyka, ale okno dalej jest w pasku zadań :( ) :( Jakbyś mógł coś zaradzić... :) Ale i tak wielkie ort!! Jestem Ci dłużny :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1