Verschieben aller externen Fenster

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Alex2000.

    Verschieben aller externen Fenster

    Guten Tag Community :)

    Ich habe folgendes Problem: Ich programmiere gerade ein Programm, dass dauerhaft seinen Platz am rechten/linken Bildschirmrand einnehmen soll (ähnlich dem ICQ-Fenster, dass man ja auch "solid" an eine Ecke setzen kann und dann alle anderen Fenster verschiebt!

    Ich bin bei meiner Suche auf folgendes gestoßen, allerdings hilft mir das so nicht weiter, da ich ja nicht alle Fenster die der Benutzer hat einzeln verschieben will!

    VB.NET-Quellcode

    1. Public Class Form1
    2. Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal hWndInsertAfter As Int32, ByVal x As Int32, ByVal y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal wFlags As Int32) As Int32
    3. Const SWP_NOSIZE As Int32 = &H1
    4. Const SWP_NOMOVE As Int32 = &H2
    5. Const SWP_NOZORDER As Int32 = &H4
    6. Const SWP_NOACTIVATE As Int32 = &H10
    7. Const SWP_DRAWFRAME As Int32 = &H20
    8. Const SWP_SHOWWINDOW As Int32 = &H40
    9. Const SWP_HIDEWINDOW As Int32 = &H80
    10. Const HWND_TOPMOST As Int32 = -1 'bringt ein fenster an die oberste stelle
    11. Const HWND_NOTOPMOST As Int32 = -2 'bringt ein fenster an die unterste stelle eines containers
    12. Const HWND_BOTTOM As Int32 = 1 'bringt ein fenster an die unterste position aller fenster
    13. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    14. Process.Start("Notepad.exe")
    15. End Sub
    16. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    17. Dim p() As Process = Process.GetProcessesByName("Notepad")
    18. If p.Length > 0 Then
    19. SetWindowPos(p(0).MainWindowHandle, HWND_TOPMOST, 10, -10, 0, 0, SWP_NOSIZE) ' Or SWP_NOMOVE)
    20. End If
    21. End Sub
    22. End Class


    Ich stelle mir das so vor!

    Eine Überlegung, die ich gemacht habe war: Eine horizontal niedrigere Bildschirmauflösung simulieren, dass alle Programme maximal bis zu einem gewissen Punkt gehen, aber dann verschiebt sich ja auch die Taskleiste!

    Ich hoffe, ihr könnt mir helfen!

    Gruß, Jonas