Forum: PC-Programmierung VB2010 Semikolon Problem


von Msp 4. (msp430_crew)


Lesenswert?

Hallo Liebes Forum. Ich versuche gerade einen String mit Semikolons zu 
übergeben.

Der unten folgende Code funktioniert nicht :-). Wenn ich jedoch die 
System.Diagnostics.Process.Start("c:\test\main.exe " , "\test\ -vga") 
direkt befülle, findet er den Pfad. Wo iat mein Denkfehler?
1
 Private Sub SetApplicationAsChild(ByVal CallingApplication As String, ByVal p As System.Windows.Forms.Panel)
2
        Try
3
            Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(CallingApplication)
4
            hProcess.WaitForInputIdle()
5
            SetParent(hProcess.MainWindowHandle, p.Handle)
6
            ShowWindow(hProcess.MainWindowHandle, SW_MAXIMIZE)
7
        Catch ex As Exception
8
            MessageBox.Show(ex.Message.ToString(), "Info")
9
          End Try
10
    End Sub
11
12
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
13
        Const APP_NAME As String = Chr(34) & "c:\test\main.exe"
14
        Const APP_SEM As String = Chr(34) & " , " & Chr(34)
15
        Const APP_PARAM As String = "\test\ -vga" & Chr(34)
16
        Const APP As String = APP_NAME & APP_SEM & APP_PARAM
17
18
        'System.Diagnostics.Process.Start("C:\Datei.exe", "-Parameter")
19
        SetApplicationAsChild(APP, Panel1)
20
    End Sub

von Peter II (Gast)


Lesenswert?

wo soll das Semikolons überhaupt sein?

Und was heist "funktioniert nicht" gibt es eine Fehlermeldung?

von Msp 4. (msp430_crew)


Lesenswert?

Der String soll so aussehen:
1
"c:\test\main.exe " , "\test\ -vga"

und System.Diagnostics.Process.Start als CallingApplication übergeben 
werden.
Der Parameter wird nicht korrekt übergeben dadurch kann das Sysem die 
Datei nicht finden.

von Peter II (Gast)


Lesenswert?

Msp 430_crew schrieb:
> Der Parameter wird nicht korrekt übergeben dadurch kann das Sysem die
> Datei nicht finden.

wie wird er denn übergeben? Gibt ihn doch mal aus.

von Msp 4. (msp430_crew)


Lesenswert?

Im Debugger sehe die Ausgabe:
1
"c:\test\main.exe " , "\test\ -vga"

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was soll das Komma da?

Der Funktion System.Diagnostics.Process.Start müssen zwei Parameter 
übergeben werden.

Also musst Du Deiner Funktion SetApplicationAsChild auch diese beiden 
Parameter übergeben, damit Du sie dort beide an 
System.Diagnostics.Process.Start übergeben kannst.

Und die Anführungszeichen gehören da auch nicht hin.
1
 Private Sub SetApplicationAsChild(ByVal CallingApplication As String, ByVal Parameters As String, ByVal p As System.Windows.Forms.Panel)
2
        Try
3
            Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(CallingApplication, Parameters)
4
            hProcess.WaitForInputIdle()
5
            SetParent(hProcess.MainWindowHandle, p.Handle)
6
            ShowWindow(hProcess.MainWindowHandle, SW_MAXIMIZE)
7
        Catch ex As Exception
8
            MessageBox.Show(ex.Message.ToString(), "Info")
9
          End Try
10
    End Sub
11
12
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
13
        Const APP_NAME As String = "c:\test\main.exe"
14
        Const APP_PARAM As String = "\test\ -vga"
15
16
        SetApplicationAsChild(APP_NAME, APP_PARAM, Panel1)
17
    End Sub

von Msp 4. (msp430_crew)


Lesenswert?

Hallo Rufus,
schön von Dir zu hören. Es funktioniert jetzt wie gewünscht. Nur öffnet 
sich jetzt die APP nicht eingebettet. Wie kann das sein?

VG
Patti

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hat denn das jemals schon funktioniert?

von Msp 4. (msp430_crew)


Lesenswert?

Ja, ich habe angefangen mit dem BSPL. wo Notepad eingebettet wurde und 
die APP wurde auch in meinem Panel1 angezeigt.
1
Private Sub SetApplicationAsChild(ByVal CallingApplication As String, ByVal p As System.Windows.Forms.Panel)
2
    Try
3
        Dim hProcess As System.Diagnostics.Process = System.Diagnostics.Process.Start(CallingApplication)
4
        hProcess.WaitForInputIdle()
5
        SetParent(hProcess.MainWindowHandle, p.Handle)
6
        ShowWindow(hProcess.MainWindowHandle, SW_MAXIMIZE)
7
    Catch ex As Exception
8
        MessageBox.Show(ex.Message.ToString(), "Info")
9
    End Try
10
End Sub
11
12
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
13
    Const APP_NAME As String = "notepad.exe"
14
    SetApplicationAsChild(APP_NAME, Panel1)
15
End Sub

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, ist die "App" "main.exe" denn ein Windows-Programm mit Fenster(n) 
oder ist das eine Konsolapplikation?

von Msp 4. (msp430_crew)


Lesenswert?

Hi Rufus,
es handelt sich hier um ein normales Fernsterprogramm.

von horstfh (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.