AJUDA EXECUTAR .EXE DENTRO DO FORM
Citação::
nao esqueca de finalizar o topico, e pontuar abracos..
Vou fazer o download dovisual studio 2010 Professional, assim que abrir o projeto eu finalizo o topico.
Imports System.Runtime.InteropServices
Public Class Form1
Declare Auto Function SetParent Lib [Ô]user32.dll[Ô] (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib [Ô]user32.dll[Ô] (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488
<DllImport([Ô]user32.dll[Ô])> _
Private Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
End Function
<DllImport([Ô]user32.dll[Ô])> _
Public Shared Function MoveWindow(ByVal hWnd As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Boolean) As Boolean
End Function
Structure RECT
Dim Left As Integer [ô] // x position of upper-left corner
Dim Top As Integer [ô] // y position of upper-left corner
Dim Right As Integer [ô] // x position of lower-right corner
Dim Bottom As Integer [ô] // y position of lower-right corner
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim proc As Process
Dim AppPath As String
AppPath = [Ô]C:\windows
otepad.exe[Ô]
proc = Process.Start(AppPath)
proc.WaitForInputIdle()
SetParent(proc.MainWindowHandle, Panel1.Handle)
Dim wRect As RECT = New RECT
GetWindowRect(proc.MainWindowHandle, wRect)
MoveWindow(proc.MainWindowHandle, 0, 0, wRect.Right - wRect.Left, wRect.Bottom - wRect.Top, True)
Button1.BringToFront()
End Sub
End Class
Citação::
Mais rapido segue o codigo, adicione uma form coloque um panel e um botao
Imports System.Runtime.InteropServices
Public Class Form1
Declare Auto Function SetParent Lib [Ô]user32.dll[Ô] (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Integer
Declare Auto Function SendMessage Lib [Ô]user32.dll[Ô] (ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const WM_SYSCOMMAND As Integer = 274
Private Const SC_MAXIMIZE As Integer = 61488
<DllImport([Ô]user32.dll[Ô])> _
Private Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
End Function
<DllImport([Ô]user32.dll[Ô])> _
Public Shared Function MoveWindow(ByVal hWnd As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Boolean) As Boolean
End Function
Structure RECT
Dim Left As Integer [ô] // x position of upper-left corner
Dim Top As Integer [ô] // y position of upper-left corner
Dim Right As Integer [ô] // x position of lower-right corner
Dim Bottom As Integer [ô] // y position of lower-right corner
End Structure
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim proc As Process
Dim AppPath As String
AppPath = [Ô]C:windows
otepad.exe[Ô]
proc = Process.Start(AppPath)
proc.WaitForInputIdle()
SetParent(proc.MainWindowHandle, Panel1.Handle)
Dim wRect As RECT = New RECT
GetWindowRect(proc.MainWindowHandle, wRect)
MoveWindow(proc.MainWindowHandle, 0, 0, wRect.Right - wRect.Left, wRect.Bottom - wRect.Top, True)
Button1.BringToFront()
End Sub
End Class
Impressionante, da errado o botão fica atraz, não fica como o projeto que você colocou disponivel para download, estou usando o visual basic 2008.
Já aproveitando, só uma dúvida, (testando sua paciência) como eu coloco para o notepad(bloco de notas) abrir maximizado ocupando todo o espaço do panel1, e ao redimensionar(diminuir ou aumentar) o form1, como fazer notepad redimensionar junto ?
OBS: só essa dúvida e eu fecho o topico.
Citação::
foto
Sim, mas quando o panel1 é redimensionado o notepad fica do jeito que ele esta, não tem como por um timer para forçar o notepad maximizar a cada tantos segundos?
Não tem como usar a propriedade [Ô]Anchor[Ô] (ancoramento) do objeto?
KURTGU,
Da hora!
Tem como montar um exemplinho bacana e subir aqui pro VBMania?
Valew!
[][ô]s,
tunusat.
Citação::
SHADOWBILL.
Não tem como usar a propriedade [Ô]Anchor[Ô] (ancoramento) do objeto?
Exatamente oque eu pensei, pois eu fiz, mas eu usei a propriedade anchor no Panel1, até ai tudo ok, mas como usar a propriedade anchor para o arquivo a ser executado dentro do panel1, no caso o notepad, usando o código do KURTGU? Pois só o Panel1 é redimensionado, mas o notepad continua no mesmo tamanho.
Anchor na Panel1, mas somente ela redimensiona, o notepad não:
Tentei:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim proc As Process
Dim AppPath As String
AppPath = [Ô]C:\windows
otepad.exe[Ô]
proc = Process.Start(AppPath)
proc.WaitForInputIdle()
SetParent(proc.MainWindowHandle, Panel1.Handle)
Panel1.Anchor = AnchorStyles.Right
Dim wRect As RECT = New RECT
GetWindowRect(proc.MainWindowHandle, wRect)
MoveWindow(proc.MainWindowHandle, 0, 0, wRect.Right - wRect.Left, wRect.Bottom - wRect.Top, True)
Button1.BringToFront()
End Sub
Mas sem sucesso , não sei oque estou fazendo, procurei na internet não acho nada.
[txt-color=#007100] [/txt-color]
Dim proc As Process
Dim AppPath As String
AppPath = [Ô]C:windows
otepad.exe[Ô]
proc = Process.Start(AppPath)
proc.WaitForInputIdle()
SetParent(proc.MainWindowHandle, Panel1.Handle)
Dim wRect As RECT = New RECT
GetWindowRect(proc.MainWindowHandle, wRect)
[txt-color=#e80000] MoveWindow(proc.MainWindowHandle, 0, 0, Panel1.Width, Panel1.Height, True)[/txt-color]
Button1.BringToFront()