Focus in eigenes Programm "zurückholen"

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Focus in eigenes Programm "zurückholen"

Beitrag von mini990 »

Schönen guten Morgen,
ich habe folgendes Problem:
Ich starte über runshell ein Programm.
Dieses wird zum Programmende "versteckt", also in die Taskleiste gelegt.
Mein aufrufendes Programm steht wieder im Vordergrund.
Der Tastaturfocus jedoch noch im Fremdprogramm.
Gibt's hier einen Trick?

Gruß Stefan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Focus in eigenes Programm "zurückholen"

Beitrag von brandelh »

eventuell mit SetAppFocus() auf ein vorhandenes Control verweisen
Gruß
Hubert
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Focus in eigenes Programm "zurückholen"

Beitrag von mini990 »

Schon probiert. geht net.
Ebenso :tofront und was ich noch alles im Forum so gefunden habe.
Bis auf die Funktion von pablo. Die verstehe ich nicht ganz...

Gruß Stefan
DelUser01

Re: Focus in eigenes Programm "zurückholen"

Beitrag von DelUser01 »

mini990 hat geschrieben: Mo, 03. Jul 2017 8:49Mein aufrufendes Programm steht wieder im Vordergrund. Der Tastaturfocus jedoch noch im Fremdprogramm.
RunShell( cPar , cPrg , .T. , .T. ) dann sollte das gestartete Programm von selbst im Hintergrund verschwinden und Dein aufrufendes Programm im Vordergrund sein - mit Focus.

Du kannst ja noch probieren:

RunShell(...)
ShowWindow( nHWND , SW_SHOWNORMAL )
SetForegroundWindow( nHWND )

wobei nHWND der Handle des aufrufenden Fensters ist, z.B.
nHWND := oCrt:GetHWND()
Antworten