Seite 1 von 2

ActivateWindow für Konsole

Verfasst: 27.06.2006 11:06
von Ironsmurf
Hallo zusammen

habe ein Konsolenprogramm geschrieben, das andere Programme über RunProgram aufruft, funktioniert auch alles gut, aber es gibt ja immer einen kleinen Wermutstropfen.
Wenn der RunProgram Befehl ausgeführt wurde, ist das gestartete Programm aktiv und nicht das Konsolenprogramm.
Frage: Wie muss ActivateWindow in einem Konsolenprogramm eingebaut werden, so das nach der Ausführung des Runprogram Befehls das Konsolenprogramm wieder aktiv ist ?

Vielen Dank für eure Mühe im voraus

Verfasst: 27.06.2006 12:30
von myself
Du musst mal das handle des konsolenfensters rausbekommen, dafür gibts mehrere methoden aber am einfachsten wirds wohl mit FindWindow_(0,"Fenstertitel") gehen.

Verfasst: 27.06.2006 12:38
von Kaeru Gaman
geht das nicht mehr mit

Code: Alles auswählen

 hWnd = OpenConsole( #Nr, ... )
afaik wird beim öffnen mit nummer (nicht mit #PB_Any) das Handle zurückgegeben.
jedenfalls war das unter 3.9x so...

Verfasst: 27.06.2006 13:17
von ts-soft
Kaeru Gaman hat geschrieben: afaik wird beim öffnen mit nummer (nicht mit #PB_Any) das Handle zurückgegeben.
jedenfalls war das unter 3.9x so...
Seit wann hat die Console ne Numer ?
Es kann nur eine Console geöffnet werden, das war schon immer so, deshalb
auch keine Nummer und kein #PB_Any :wink:

Verfasst: 27.06.2006 13:21
von edel
Hatte OpenConsole ueberhaupt jemals nen Parameter ?
Und zurueck kommt auch kein Handle.

>> ... aber am einfachsten wirds wohl mit FindWindow_(0,"Fenstertitel") gehen.

Nein , mit GetConsoleWindow geht es einfacher.

Beispiel :

Code: Alles auswählen

import "kernel32.lib"
  GetConsoleWindow_() as "_GetConsoleWindow@0"
endimport

If OpenConsole()
  Handle = GetConsoleWindow_()
  
  RunProgram("calc.exe") 
  Delay(50) ; warten bis das programm fertig geladen wurde 
  SendMessage_(Handle,#WM_ACTIVATE,#WA_ACTIVE,0)
  
  Input()
  CloseConsole()
EndIf

Verfasst: 27.06.2006 13:55
von AND51
eine andere Idee wäre diese:
Zu dem Zeitpunkt, wo du gena weißt, das das Konsolenfenster aktiv und im Vordergrund ist, speicherst du sein Handle ganz einfach mit GetForegroundWindow_().

Wenn das Programm in den Vordergrund geholt werden soll, reicht dann ein einfaches SetForeGroundwindow_(hWnd).

Verfasst: 27.06.2006 14:16
von Kaeru Gaman
ok, keine nummer und kein any.. egal..

aber warum sollte kein handle zurückgegeben werden? is dochn fenster...

Verfasst: 27.06.2006 14:28
von #NULL
wäre eigentlich praktisch.
aber OpenConsole() gibt nur 0 oder 1 zurück,
in 3.94 und 4.

Verfasst: 27.06.2006 15:29
von AND51
Meinstest du mich jetzt Kaeru?

Verfasst: 27.06.2006 16:03
von MVXA
Edel, gibt es den Befehl nicht nur unter WinXP o_O?