Panel-Inhalt/Prozessgröße anpassen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Eddy.

    Panel-Inhalt/Prozessgröße anpassen

    Hallo Liebes Forum,

    ich habe ein Panel in dem ich eine externe Anwendung starte.
    Starte die Anwendung also außerhalb und übergebe sie dann an mein Panel.

    Jetzt ist die Anwendung aber viel größer, als das Panel und somit sehe ich nichts. Ich möchte die Größe des Prozesses, den ich im Panel anzeige, auf die Größe des Panels ändern.

    Verwende eine Form, ein Panel und einen Button:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Imports System.Threading
    3. Public Class Pa
    4. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
    5. Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
    6. End Function
    7. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
    8. Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    9. End Function
    10. <DllImport("user32.dll", SetLastError:=True)>
    11. Private Shared Function IsWindowVisible(ByVal hWnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
    12. End Function
    13. Private Const WM_SYSCOMMAND As Integer = 274
    14. Private Const SC_MAXIMIZE As Integer = 61488
    15. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    16. Dim proc As Process = Process.Start("PfaddesProzesses\Prozess.exe")
    17. Thread.Sleep(500)
    18. SetParent(proc.MainWindowHandle, Me.Panel1.Handle)
    19. SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, IntPtr.Zero)
    20. End Sub
    21. End Class


    Danke im Voraus :)
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

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

    Hi, mit SetWindowPos geht das.

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True)> _
    2. Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInteger) As Boolean
    3. End Function
    4. Private Sub xyz()
    5. SetWindowPos(Handle, Nothing, 0, 0, 200, 400, Nothing)
    6. End Sub
    And i think to myself... what a wonderfuL World!