.exe in form1 openen

Status
Niet open voor verdere reacties.

geert160

Gebruiker
Lid geworden
31 jan 2009
Berichten
43
Ik weet hoe bv. kladblok kan geopend worden.
Kladblok gaat open in een nieuw kadertje.

Mijn vraag is of het mogelijk is om een .exe te openen in een form.
Net zoals wanneer u een textbox hebt met buttons ernaast zo zou ik dus een exe willen openen in een form maar de exe moet mooi op het form openen.
Dus niet in een ander kadertje.
Ik zou dosbox willen openen in een form.

Het is voor mezelf, ik probeer iets bij te leren door zo van die zaken te proberen.
 
Ik weet hoe bv. kladblok kan geopend worden.
Kladblok gaat open in een nieuw kadertje.

Mijn vraag is of het mogelijk is om een .exe te openen in een form.
Net zoals wanneer u een textbox hebt met buttons ernaast zo zou ik dus een exe willen openen in een form maar de exe moet mooi op het form openen.
Dus niet in een ander kadertje.
Ik zou dosbox willen openen in een form.

Het is voor mezelf, ik probeer iets bij te leren door zo van die zaken te proberen.

Ik heb ondertussen een stukje code dat werkt.

Code:
Public Class Form1
    Dim proc As Process
    Private Const WM_SYSCOMMAND As Integer = 274

    Private Const SC_MAXIMIZE As Integer = 61488

    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 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
        'Run Notepad application inside Panel1 control



        proc = Process.Start("Notepad.exe")

        proc.WaitForInputIdle()

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' Close process by sending a close message to its main window.
        proc.CloseMainWindow()
        ' Free resources associated with process.
        Proc.Close()


    End Sub

    Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        
        proc = Process.Start("C:\Program Files\DOSBox-0.72\dosbox.exe")

        proc.WaitForInputIdle()

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    End Sub

    
End Class

Wat vinden jullie van deze oplossing?
 
Niemand???

Ok mischien wel op volgende vraag.

Onderstaande code gaat dosbox starten.
Nu vraag ik me af hoe ik het argument -noconsole kan toevoegen.


Code:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        
        proc = Process.Start("C:\Program Files\DOSBox-0.72\dosbox.exe")

        proc.WaitForInputIdle()

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    End Sub
 
No console

Niemand???

Ok mischien wel op volgende vraag.

Onderstaande code gaat dosbox starten.
Nu vraag ik me af hoe ik het argument -noconsole kan toevoegen.


Code:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        
        proc = Process.Start("C:\Program Files\DOSBox-0.72\dosbox.exe")

        proc.WaitForInputIdle()

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
    End Sub

Oplossing gevonden.
Dom van mij dat ik het niet eerder heb gevonden.

Alleen opend dosbox nu buiten het Form.
Ik begrijp niet waarom dosbox nu niet als parent geopend wordt.
Zou iemand mij hier een beetje uitleg over kunnen geven?

Code:
 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        proc = Process.Start("C:\Program Files\DOSBox-0.72\dosbox.exe", "-noconsole")

        proc.WaitForInputIdle()

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
        
    End Sub
 
Onderstaande code werkt heel goed. :cool:

Code:
 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        proc = Process.Start("C:\Program Files\DOSBox-0.72\dosbox.exe", "-noconsole")

        proc.WaitForInputIdle()
        For Each proc As Process In Process.GetProcesses()
            If proc.MainWindowTitle.StartsWith("DOSBox") Then
                handle = proc.MainWindowHandle
            End If
        Next

        SetParent(proc.MainWindowHandle, Me.Panel1.Handle)

        SendMessage(proc.MainWindowHandle, WM_SYSCOMMAND, SC_MAXIMIZE, 0)
        
    End Sub

Iemand een idee hoe ik sendkeys kan toepassen op die Handle ???
 
sendkeys

onderstaande code werkt niet


Code:
 Public Function whichbuttonpushed(ByVal _sender As String) As String



        SetActiveWindow(Me.Panel1.Handle) 'Set focus Active window



        Select Case _sender
            Case "btna"
                keybd_event(VK_A, 0, 0, 0) 'send a key
                keybd_event(VK_A, 0, KEYEVENTF_KEYUP, 0) 'release a key 
                My.Computer.Keyboard.SendKeys("22", True)

        End Select

    End Function
 
Ik zal het ook maar hier effe posten:

Wat dacht je hiervan:

4 apps in 1 form

Ja, je leest en ziet het goed: dat zijn 4 losse programma's die allemaal in 1 form draaien, zonder hun titelbalken!

Calculator ziet er wat vreemd uit maar dat komt omdat calculator een vaste grootte (vaste form size) heeft en dus niet groter/kleiner gemaakt kan worden.
 
Heel knap

Dat ziet er super goed uit.
Kan u mij iets meer uitleg geven over uw Form ?
Ben er 100% zeker van dat ik daar veel uit kan leren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan