| |
VB.NET - FortgeschritteneAnwendung innerhalb eines Panels bewegen? | | | Autor: baltaza | Datum: 29.07.11 10:13 |
| Hallo zusammen,
ich stehe vor dem Problem, dass ich eine Anwendung die ich per Child in ein Panel ziehe nicht an den oberen linken rand des Panles bekomme.
Das Problem ist, dass sich diese Anwendung nicht maximieren lässt (wird von der Anwendung nicht unterstützt). Rufe ich sie normal auf und fange sie ein verschwindet sie aber meistens in den nicht sichtbaren Bereich. Maximiere ich sie dennoch verschwindet sie komplett, zumindst ist sie nicht sichtbar auf dem Panel.
Textboxen etc kann man ja mit der Location, New Point Methode neu positionieren aber ein eigenständiges Programm? Irgendwie fehlt mir da zumindest ne idee.
Hier der Code, ist auch fast 1&1 aus einem anderen Beitrag übernommen
Imports System.Runtime.InteropServices
Public Class Form1
Public Class Win32Api
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Shared Function ShowWindow( _
ByVal hWnd As IntPtr, _
ByVal nCmdShow As Integer) As Boolean
End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Public Shared Function SetParent( _
ByVal hWndChild As IntPtr, _
ByVal hWndNewParent As IntPtr) As IntPtr
End Function
Public Const SW_MAXIMIZE As Int32 = 1
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Const APP_NAME As String = "C:\Programme\Avaya\Avaya IP" & _
"Agent\IpAgent.exe"
' Prozedur mit dem Dateiname <APP_NAME> und das benötigte
' Anzeigefenster aufrufen.
SetApplicationAsChild(APP_NAME, Panel1)
End Sub
Private Sub SetApplicationAsChild(ByVal CallingApplication As String, _
ByVal p As System.Windows.Forms.Panel)
' Fehlerbehandlung einschalten.
Try
' Process starten ( ... notepad.exe ... ).
Dim hProcess As System.Diagnostics.Process = _
System.Diagnostics.Process.Start(CallingApplication)
' Siehe (... WaitForInputIdle ...)
hProcess.WaitForInputIdle()
' Parent Fenster setzen.
Win32Api.SetParent(hProcess.MainWindowHandle, p.Handle)
'Fenster anzeigen.
Win32Api.ShowWindow(hProcess.MainWindowHandle, Win32Api.SW_MAXIMIZE)
Catch ex As Exception
' Fehlerbeschreibung bei auftretenden Fehler anzeigen.
MessageBox.Show(ex.Message.ToString(), "Info")
End Try
End Sub
End Class
Beitrag wurde zuletzt am 29.07.11 um 10:16:08 editiert. | |
Re: Anwendung innerhalb eines Panels bewegen? | | | Autor: jvbsl | Datum: 12.08.11 01:19 |
| Hallo,
das geht auch über die WinAPI:
http://pinvoke.net/default.aspx/user32.SetWindowPos
da nimmst du dir einfach die VB .Net Signatur und rufst diese mit entsprechenden Parametern auf, meiner Meinung nach erklärt sich das von selbst, falls nicht, einfach nochmal fragen ;)
Mfg jvbsl | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|