Entwickler-Ecke

Windows API - fremdem Fenster den Focus geben


Salvador - So 09.11.03 23:06
Titel: fremdem Fenster den Focus geben
Hallo,

Weiß jemand wie ich einem fremden Fenster mit dem Titel "beispiel" den focus geben kann? wäre dankbar über antworten.

mfg
Salvador


Anonymous - Mi 12.11.03 16:23

so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function GetHandleFromWindowTitle(TitleText: String): hWnd;
var
  StrBuf: Array[0..$FF] of Char;
begin
  Result := FindWindow(PChar(0), StrPCopy(StrBuf, TitleText));
end;


und dann


Delphi-Quelltext
1:
Windows.SetFocus(GetHandleFromWindowTitle('Beispiel'));                    


es könnte aber auch

Delphi-Quelltext
1:
Windows.BringWindowToTop()                    

sein.


neji - So 07.12.03 15:15

hi,

und wie mache ich das wenn sich der titel ständig ändert? Wenn z.b die aktuelle Zeit (inclusive Sekunden ) mit im Titel erscheinen?


DeCodeGuru - So 07.12.03 15:18

dann kannste nach dem Klassennamen suchen. :wink: Geht auch mit FindWindow.


Alstar - So 07.12.03 15:19

Hi!

Dann must du mit

Delphi-Quelltext
1:
ttime(now)                    

Die Zeit herausfinden!

(Mit Timetostr kannst du sie dann in einen String umwandeln)

Alstar


Anonymous - So 07.12.03 15:33

Und wenn sich der Titel nur alle 1,634 Sekunden aktualisiert? DeCodeGurus Tipp würde ich vorziehen.


neji - So 07.12.03 16:05

sorry für die dumme frage, aber was ist der klassenname, wie bekomme ich den heraus und wie verwende ich ihn dann?

bisher hatte ich folgende timer procedur

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   WHandle: THandle;
begin
  WHandle := FindWindow(nil, 'HIER DIE TITELZEILE');
  BringWindowToTop(WHandle);
  PostKeyEx32(VK_F5, [], False);
  dbmeter1.position := 0;
  i := 0;
end;

dann wurde nach einem fenster mit eben der TItelzeile (die ja jetzt aus zeit usw besteht gesucht, den focus gegeben und aktualisiert. wie mache ich das jetzt mit dem klassennamen?

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.