Problem mit TopMost bei extern gestartetem Programm

01/01/2009 - 19:54 von Peter Acker | Report spam
Hallo,
ich mchte eine externe Anwendung starten und diese als TopMost-Fenster in
den Vordergrund bringen. Wieso funktioniert das Beispiel nicht? Auch die
Größe des Fenster wird anscheinend trotz SWP_NOMOVE + SWP_NOSIZE veràndert.

Dim HWND_TOPMOST As Long = -1
Dim SWP_NOMOVE As Long = &H2
Dim SWP_NOSIZE As Long = &H1
Private Declare Sub SetWindowPos Lib "user32" ( _
ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long,
ByVal wFlags As Long)

Private Sub Test()
Dim _P = New Process()
_P.StartInfo.FileName = "calc.exe"
_P.Start()
_P.WaitForInputIdle()
SetWindowPos(_P.MainWindowHandle.ToInt32, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE + SWP_NOSIZE)
End Sub

Gruß Peter
 

Lesen sie die antworten

#1 Herfried K. Wagner [MVP]
01/01/2009 - 20:09 | Warnen spam
"Peter Acker" schrieb:
ich mchte eine externe Anwendung starten und diese als TopMost-Fenster in
den Vordergrund bringen. Wieso funktioniert das Beispiel nicht? Auch die
Größe des Fenster wird anscheinend trotz SWP_NOMOVE + SWP_NOSIZE
veràndert.

Dim HWND_TOPMOST As Long = -1
Dim SWP_NOMOVE As Long = &H2
Dim SWP_NOSIZE As Long = &H1
Private Declare Sub SetWindowPos Lib "user32" ( _
ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long,
ByVal wFlags As Long)



Die Funktionsdeklaration ist fehlerhaft (sie wurde wohl direkt aus VB6
übernommen).

Beachte, daß die Typen in VB.NET eine andere Bedeutung besitzen als in VB6.

'Long' aus VB6 wàre z.B. 'Integer' in VB.NET. Zugriffsnummern werden in
VB.NET als 'Handle' o.à. typisiert.

M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

Ähnliche fragen