mit.ohne.ahnung
Goto Top

Exe ohne Fenster aus vb aufrufen

Hallo Zusammen,

ich erstelle gerade ein Programm mit Visual Studio und möchte eine exe aufrufen ohne das ein Fenster erscheint.

so funktioniert das:

set WshShell = WScript.CreateObject("WScript.Shell")  
Return = WshShell.Run("C:Solutio\Client\Charly\solutio.app\dbbackup.exe", 0, True)  
Set WshShell = Nothing

jetzt zu meinem Problem:

wie bekomme ich das


Private Sub CheckboxIntDasi_Click(sender As Object, e As EventArgs) Handles CheckboxIntDasi.CheckedChanged
        If CheckboxIntDasi.Checked = True Then
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub


wie bekomme ich das in zeile 2 nach Then hinein???

hatte das schon am laufen mit process.start(C:\solutio\client\charly\solutio\dbbackup.exe am laufen.
nur da kommt ein Commandfenster wenn ich die dbbackup.exe aufrufe, und das möchte ich nicht.

nach vielem probieren funktioniert das auch nicht mehr.. face-sad
jetzt bekomme ich einen end if fehler wenn ich das nach dem "Then" process.start(C:\solutio\client\charly\solutio\dbbackup.exe einfüge???

Hoffe Ihr könnt mir helfen...

Grüße Frank

Nachtrag:

soweit so gut.... funzt alles soweit... nur das die dbbackup.exe ohne fenster läuft bekomm ich nicht hin...

mit process.start kann ich das Fenster nicht unterdrücken face-smile

Private Sub Cmdauswahl_Click(sender As Object, e As EventArgs) Handles Cmdauswahl.Click
        If CheckboxIntDasi.Checked = True Then
            WshShell.Run("C:Solutio\Client\Charly\solutio.app\dbbackup.exe", 0, True)  
        End If

    End Sub

und mit dieser Variante bekomme ich:

Fehler 1 "WshShell" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\Frank\documents\visual studio 2012\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 88 13 WindowsApplication1


Für einen guten Tipp wäre ich dankbar.

Content-Key: 240854

Url: https://administrator.de/contentid/240854

Printed on: April 23, 2024 at 20:04 o'clock

Member: colinardo
Solution colinardo Jun 13, 2014 updated at 18:44:12 (UTC)
Goto Top
Hallo Frank,
Dim proc As New Process()
proc.StartInfo.FileName = "C:\solutio\client\charly\solutio\dbbackup.exe"  
proc.StartInfo.CreateNoWindow = True
proc.Start()
proc.WaitForExit()
Weitere Eigenschaften und Beispiele für das ProcessStartinfo-Objekt kannst du in der Referenz nachlesen:
http://msdn.microsoft.com/de-de/library/system.diagnostics.processstart ...

Grüße Uwe
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 13, 2014 at 17:16:21 (UTC)
Goto Top
Hallo Uwe,

meinst du das so?
Private Sub Cmdauswahl_Click(sender As Object, e As EventArgs) Handles Cmdauswahl.Click
        If CheckboxIntDasi.Checked = True Then
            Dim startInfo("C:\solutio\client\charly\solutio\dbbackup.exe")  
            startInfo.WindowStyle = ProcessWindowStyle.Hidden
            Process.Start(startInfo)
        End If


    End Sub

da bekomme ich folgende Fehler:

Fehler 1 "WindowStyle" ist kein Member von "System.Array". C:\Users\Frank\documents\visual studio 2012\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 89 13 WindowsApplication1

Fehler 2 Fehler bei der Überladungsauflösung, da keine zugreifbare "Start" mit diesen Argumenten aufgerufen werden kann:
"Public Shared Function Start(startInfo As System.Diagnostics.ProcessStartInfo) As System.Diagnostics.Process": Der Wert vom Typ "1-dimensionales Array von Object" kann nicht in "System.Diagnostics.ProcessStartInfo" konvertiert werden.
"Public Shared Function Start(fileName As String) As System.Diagnostics.Process": Der Wert vom Typ "1-dimensionales Array von Object" kann nicht in "String" konvertiert werden. C:\Users\Frank\documents\visual studio 2012\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 90 13 WindowsApplication1

Gruß Frank
Member: colinardo
colinardo Jun 13, 2014 updated at 17:25:34 (UTC)
Goto Top
wrong!

Private Sub CheckboxIntDasi_Click(sender As Object, e As EventArgs) Handles CheckboxIntDasi.CheckedChanged
        If CheckboxIntDasi.Checked = True Then
Dim proc As New Process()
proc.StartInfo.FileName = "C:\solutio\client\charly\solutio\dbbackup.exe"  
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
proc.StartInfo.UseShellExecute = false
proc.Start()
proc.WaitForExit()
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 13, 2014 at 17:33:01 (UTC)
Goto Top
Sorry Uwe,

mein Fehler, habe mich wohl nicht verständlich ausgedrückt.

Habe mehrere Checkboxen, und wenn ich eine anklicke geht der Hacken bei der anderen raus.... jetzt will ich wenn ich auf Button "interneDasi" markiert habe und auf weiter Button klicke das die exe startet ohne Fenster.

hier der ganze code
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cmdzurAuswahl.Click
        PictureBox1.Visible = False
        PaneltoolAuswahl.Visible = True
        cmdzurAuswahl.Visible = False
        Cmdauswahl.Visible = True
    End Sub

    Private Sub CheckboxIntDasi_Click(sender As Object, e As EventArgs) Handles CheckboxIntDasi.CheckedChanged
        If CheckboxIntDasi.Checked = True Then
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub


    Private Sub CheckboxExtDasi_Click(sender As Object, e As EventArgs) Handles CheckBoxExtDasi.CheckStateChanged
        If CheckBoxExtDasi.Checked = True Then
            CheckboxIntDasi.CheckState = CheckState.Unchecked
            CheckBoxDBdump.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If



    End Sub

    Private Sub CheckboxDBdump_Click(sender As Object, e As EventArgs) Handles CheckBoxDBdump.CheckStateChanged
        If CheckBoxDBdump.Checked = True Then
            CheckboxIntDasi.CheckState = CheckState.Unchecked
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub


    Private Sub CheckboxSMS_Click(sender As Object, e As EventArgs) Handles CheckBoxSMS.CheckedChanged
        If CheckBoxSMS.Checked = True Then
            CheckboxIntDasi.CheckState = CheckState.Unchecked
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxDBdump.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub

    Private Sub Checkboxmail_Click(sender As Object, e As EventArgs) Handles CheckBoxMail.CheckedChanged
        If CheckBoxMail.Checked = True Then
            CheckboxIntDasi.CheckState = CheckState.Unchecked
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxDBdump.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckBoxfrei.CheckState = CheckState.Unchecked
        End If

    End Sub

    Private Sub Checkboxfrei_Click(sender As Object, e As EventArgs) Handles CheckBoxfrei.CheckedChanged
        If CheckBoxfrei.Checked = True Then
            CheckBoxExtDasi.CheckState = CheckState.Unchecked
            CheckBoxDBdump.CheckState = CheckState.Unchecked
            CheckBoxMail.CheckState = CheckState.Unchecked
            CheckBoxSMS.CheckState = CheckState.Unchecked
            CheckboxIntDasi.CheckState = CheckState.Unchecked
        End If

    End Sub


   Private Sub Cmdauswahl_Click(sender As Object, e As EventArgs) Handles Cmdauswahl.Click
        If CheckboxIntDasi.Checked = True Then
            Dim startInfo("C:\solutio\client\charly\solutio\dbbackup.exe")  
            startInfo.WindowStyle = ProcessWindowStyle.Hidden
            Process.Start(startInfo)
        End If


    End Sub
End Class

also ab Zeile 86 liegt mein Problem...

gruß Frank
Member: colinardo
colinardo Jun 13, 2014 updated at 18:44:47 (UTC)
Goto Top
so wie ich das jetzt auf meinen Smartphone sehen kann sollte das reichen:
Private Sub Cmdauswahl_Click(sender As Object, e As EventArgs) Handles Cmdauswahl.Click
        If CheckboxIntDasi.Checked = True Then
          Dim proc As New Process()
          proc.StartInfo.FileName = "C:\solutio\client\charly\solutio\dbbackup.exe"  
          proc.StartInfo.CreateNoWindow = True
          proc.Start()
        End if
    End Sub
wenn du auf das Ende der Datensicherung warten willst musst du noch ein proc.WaitForExit() hinten anfügen.
Ansonsten morgen wieder wenn ich am
Rechner sitze

Grüße Uwe
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 13, 2014 at 18:09:18 (UTC)
Goto Top
Hallo Uwe,

die DBBackuo.exe läuft... aber leider wieder mit Fenster face-smile

trotzdem erstmal vielen Dank......

bis morgen und schönen abend..

Gruß Frank
Member: colinardo
colinardo Jun 13, 2014 updated at 20:40:52 (UTC)
Goto Top
ist das eine Konsolenanwendungen oder ein normales Windows-Programm ?
Wenn es ein normales Windowsprogramm ist lass mal die Zeile mit ShellExecute raus.
und mach noch ein
proc.StartInfo.CreateNoWindow = True mit rein. (habe es oben bereits korrigiert)
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 14, 2014 at 10:58:18 (UTC)
Goto Top
Hallo Uwe,
das Command Fenster kommt wieder..... mit dieser dbbackup.exe werden asc-Files neu geschrieben aus einer PostgreSQL-DB.
Leider weiß ich nicht wie die exe erstellt wurde.... vermute aber das es ein script ist und nur zur exe gemacht wurde.....
Würde ja die SQL-Befehle nehmen... nur leider weiß ich nicht wirklich wie oder was genau die dbbackup.exe macht....

Wie schon gesagt... wenn ich diese dbbackup.vbs nehme und damit die dbbackup.exe aufrufe, läuft der task ohne Fenster.
set WshShell = WScript.CreateObject("WScript.Shell")  
Return = WshShell.Run("C:Solutio\Client\Charly\solutio.app\dbbackup.exe", 0, True)  
Set WshShell = Nothing

nur leider bekomm ich das so nicht in meinem script zum laufen.

Gruß Frank
Member: colinardo
colinardo Jun 14, 2014 updated at 11:41:14 (UTC)
Goto Top
OK dann hilft eventuell noch ein angehängtes CloseMainWindow() bei hartnäckigen Verweigerern face-wink
Dim proc As New Process
proc.StartInfo.CreateNoWindow = True
proc.StartInfo.FileName = "C:Solutio\Client\Charly\solutio.app\dbbackup.exe"  
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
proc.StartInfo.UseShellExecute = False
proc.Start()
proc.CloseMainWindow()
alternativ gibt es noch folgende Methode die du bei dem Programm probieren kannst, welches das Äquivalent zum VBS Code ist:
Shell("C:Solutio\Client\Charly\solutio.app\dbbackup.exe", AppWinStyle.Hide)  
Ohne weitere Info zum Programm ist das hier ansonsten schwer ...

Grüße Uwe
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 14, 2014 at 11:41:58 (UTC)
Goto Top
Hallo Uwe,
CloseMainWindow war die Lösung .... Super ! ! Danke dir...
Zu meinem (Anfänger) verständnis.....
Das proc.CloseMainWindow() macht doch nichts anderes als das Fenster zu schließen das zuvor aufgerufen wurde... aber der Prozess läuft weiter???

Danke dir Uwe

Nette Grüße aus Limburg

Frank
Member: colinardo
Solution colinardo Jun 14, 2014 updated at 12:28:40 (UTC)
Goto Top
Zitat von @Mit.ohne.Ahnung:
Zu meinem (Anfänger) verständnis.....
Das proc.CloseMainWindow() macht doch nichts anderes als das Fenster zu schließen das zuvor aufgerufen wurde... aber der
Prozess läuft weiter???
ja kannst du ja im Taskmanager überprüfen face-wink kommt aber immer auf das Verhalten der Anwendung drauf an, ob sich der Prozess nicht doch ganz beendet:
http://msdn.microsoft.com/de-de/library/system.diagnostics.process.clos ...

Auch nette Grüße aus der Eifel
Uwe
Member: Mit.ohne.Ahnung
Mit.ohne.Ahnung Jun 14, 2014 at 11:45:32 (UTC)
Goto Top
Hab ich und das macht er auch face-smile

Perfekt... danke dir Uwe....

Gruß Frank