Programm per Tastendruck in den Hintergrund minimieren und wieder maximieren

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Programm per Tastendruck in den Hintergrund minimieren und wieder maximieren

    Guten Abend,
    ich möchte mein Programm per F2 in den Hintergrund minimieren und mit einem weiteren Tastendruck auf F2 wieder hervorholen, also maximieren.
    Das minimieren klappt schon ohne Probleme aber wie kann ich es wieder maximieren?
    Das Problem bei mir ist ja denke ich das die Anwendung nicht auf den Tastendruck reagiert, weil diese ja im Hintergrund ist.


    Public Class Form1
    Private Const SW_HIDE As Int32 = 0
    Private Const SW_SHOW As Int32 = 5
    Private Const SW_RESTORE As Int32 = 9
    Private Declare Auto Function ShowWindow Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal nCmdShow As Int32) As Int32
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form4.Show()
    Form4.TextBox1.Focus()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    KeyPreview = True

    End Sub

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.D1 Or e.KeyCode = Keys.NumPad1 Then
    Button1.PerformClick()
    End If
    If e.KeyCode = Keys.F2 Then
    Dim p() As Process = Process.GetProcessesByName("Inventur.vshost")
    Dim hwnd As IntPtr = p(0).MainWindowHandle
    ShowWindow(hwnd, SW_HIDE)
    End If
    End Sub
    End Class

    VB.NET-Quellcode

    1. 'Form1
    2. 'Timer1
    3. Private Declare Function GetAsyncKeyState Lib "user32" _
    4. (ByVal vKey As Long) As Integer
    5. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As _
    6. Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
    7. ByVal dwExtraInfo As Long)
    8. Private Sub Form_Load()
    9. Form1.WindowState = 1 'Form1 minimieren
    10. Timer1.Interval = 50
    11. End Sub
    12. Private Sub Timer1_Timer()
    13. 'Form1 anzeigen, wenn F2 gedrückt wird
    14. If CompKey(120, "F2") Then Form1.WindowState = 0
    15. End Sub
    16. Private Function CompKey(KCode&, KText) As Boolean
    17. Dim Result%
    18. Result = GetAsyncKeyState(KCode)
    19. If Result = -32767 Then
    20. CompKey = True
    21. Else
    22. CompKey = False
    23. End If
    24. End Function
    Geht Immer ^^

    :!: Beim ersten Click auf A an beim zweiten auf A wieder aus :!: USW. :!:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim Merker As Integer = 0
    4. 'Die Taste abfangen
    5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    6. RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.A) ' Drücke A
    7. End Sub
    8. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
    9. Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
    10. Private Const Key_NONE As Integer = &H0
    11. Private Const WM_HOTKEY As Integer = &H312
    12. Protected Overrides Sub WndProc(ByRef m As Message)
    13. If m.Msg = WM_HOTKEY Then
    14. Select Case m.WParam
    15. Case CType(1, IntPtr)
    16. If Merker = 0 Then
    17. Form2.Show() 'Hier dein einsatz !!!
    18. ElseIf Merker = 1 Then
    19. Form2.Close() 'Hier dein einsatz !!!
    20. End If
    21. Merker += 1
    22. If Merker = 2 Then Merker = 0
    23. End Select
    24. End If
    25. MyBase.WndProc(m)
    26. End Sub
    27. 'Die Taste wieder freigeben
    28. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    29. UnregisterHotKey(Me.Handle, 1)
    30. End Sub
    31. End Class




    LG Andre... ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TVX“ ()