Hi,
Damit Fehlermeldungen meines Programmes nicht unbemerkt bleiben, nur weil ein anderes Programm im Vordergrund ist, habe ich folgendes versucht:
[highlight=vbnet]
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As IntPtr) As Integer
Declare Function FlashWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
Public Sub BringAppToFront()
Dim WHandle As IntPtr = Process.GetCurrentProcess().MainWindowHandle
If Not SetForegroundWindow(WHandle) Then
clsLog.LogLine("SetForegroundWindow fehlgeschlagen.")
For i As Integer = 1 To 3
FlashWindow(WHandle, 0)
FlashWindow(WHandle, 1)
Next
End If
End Sub
[/highlight]
Die Idee dazu habe ich bei VBArchiv gefunden.
Beim Debuggen erhalte ich bei FlashWindow eine PInvokeStackImbalance Meldung, mit dem Hinweis, ich solle die Aufrufsignatur prüfen. Ich habe festgestellt, dass FlashWindow das Handle als Long haben will, also habe ich da ein FlashWindow(WHandle.ToInt64, 0L) draus gemacht, aber ich erhalte den Fehler immer noch. Was kann ich tun?
Gruß
Martin Dietz
Damit Fehlermeldungen meines Programmes nicht unbemerkt bleiben, nur weil ein anderes Programm im Vordergrund ist, habe ich folgendes versucht:
[highlight=vbnet]
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As IntPtr) As Integer
Declare Function FlashWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
Public Sub BringAppToFront()
Dim WHandle As IntPtr = Process.GetCurrentProcess().MainWindowHandle
If Not SetForegroundWindow(WHandle) Then
clsLog.LogLine("SetForegroundWindow fehlgeschlagen.")
For i As Integer = 1 To 3
FlashWindow(WHandle, 0)
FlashWindow(WHandle, 1)
Next
End If
End Sub
[/highlight]
Die Idee dazu habe ich bei VBArchiv gefunden.
Beim Debuggen erhalte ich bei FlashWindow eine PInvokeStackImbalance Meldung, mit dem Hinweis, ich solle die Aufrufsignatur prüfen. Ich habe festgestellt, dass FlashWindow das Handle als Long haben will, also habe ich da ein FlashWindow(WHandle.ToInt64, 0L) draus gemacht, aber ich erhalte den Fehler immer noch. Was kann ich tun?
Gruß
Martin Dietz
Comment