Zum Inhalt springen

VB2005: Externe Programme steuern


Iceman346

Empfohlene Beiträge

Im Internet findet man zwar Unmengen an Tipps zu älteren VB Versionen, aber bei den .net Teilen ist man eher aufgeschmissen.

Folgendes Problem: Ich versuche mir momentan VB beizubringen, da darin viele der hier auf der Arbeit genutzten Programme geschrieben sind. Nun hab ich es mir zur Aufgabe gemacht ein kleines Programm zu schreiben, welches ein externes Konsolenprogramm auf Knopfdruck starten und beenden kann. Dies wirft aber einige seltsame Probleme auf.

Mein bisheriger Code sieht so aus:

Public Class Form1

    Dim gestartet As Boolean = False

    Dim FTP As Process

    Dim config As Process


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

        TextBox1.Text = "FTP Kopierer gestoppt."

        TextBox1.BackColor = Color.Red

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If Not gestartet Then

            FTP = Process.Start("FTP.exe")

            TextBox1.Text = "FTP Kopierer gestartet."

            TextBox1.BackColor = Color.Green

            Button1.Text = "FTP Kopierer stoppen."

            gestartet = True

        ElseIf gestartet Then

            FTP.Kill()

            TextBox1.Text = "FTP Kopierer gestoppt."

            TextBox1.BackColor = Color.Red

            Button1.Text = "FTP Kopierer starten."

            gestartet = False

        End If

    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        If Not gestartet Then

            config = Process.Start("Config.exe")

            gestartet = True

        ElseIf gestartet Then

            config.Kill()

            gestartet = False

        End If

    End Sub

End Class

(und ja ich weiß, dass ich die gestartet Variable so nicht weiterbenutzen kann)

Der Aufruf und das Beenden der Config.exe funktioniert dabei problemlos, aber die FTP.exe startet er nicht. Stattdessen öffnet er den Firefox mit ftp://ftp.exe/ in der URL Leiste. Kann mir irgendwer sagen wo mein Fehler liegt?

Ist es möglich die FTP.exe so zu öffnen, dass das Konsolenfenster nicht sichtbar ist?

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Hat das einen Grund, dass du eine Textbox, statt einem Label nimmst?

Nö, eigentlich nicht. Soll auch keine Eingabe rein oder so, könnts auch alles auf Labels ändern, aber das sollte ja nicht die Quelle des Problemes sein ;)

2. Liegt die ftp.exe im gleiche Verzeichnis?

Ja natürlich.

3. Was macht die FTP.exe? Das ftp-Protokoll startet eigentlich immer den eingestellten Standardbrowser.

Die verbindet sich mit einem FTP Server, schaut ob da Dateien liegen, kopiert diese runter und wiederholt diesen Vorgang alle X Sekunden. Ist nen C++ Programm welches ich geschrieben habe, dass hier auf der Arbeit momentan als Hilfe läuft. Startet man das Programm von Hand läuft auch alles wie es soll.

Edit: Interessanterweise ist Firefox nichtmal der Standardbrowser ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die verbindet sich mit einem FTP Server, schaut ob da Dateien liegen, kopiert diese runter und wiederholt diesen Vorgang alle X Sekunden. Ist nen C++ Programm welches ich geschrieben habe welches hier auf der Arbeit momentan als Hilfe läuft. Startet man das Programm von Hand läuft auch alles wie es soll.

Also Startet es normal eine Console?

Hast du schonmal den absoluten Pfad angegeben?

Bzw. was sagt der FF bei der FTP-URI?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Startet es normal eine Console?

Hast du schonmal den absoluten Pfad angegeben?

Bzw. was sagt der FF bei der FTP-URI?

Ist ne ganz normale Konsolenanwendung, ja. Mit dem absoluten Pfad startete es, hab nun den Aufruf auf

FTP = Process.Start(System.AppDomain.CurrentDomain.BaseDirectory() & "FTP.exe")

geändert, damit funktioniert alles wie gewünscht.

Wäre noch die Frage, ob es möglich ist das Konsolenfenster der aufgerufenen Anwendung zu verstecken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du kein Konsolenfenster willst, dann erstell das Programm doch einfach nicht als Konsolenanwendung.

Das Programm existiert halt nu als Konsolenanwendung und ehrlich gesagt hab ich in C++ noch nie was anderes als Konsolenanwendungen erstellt, wüsste also garnicht wie ich anfangen sollte.

Hab aber im Internet ne Codezeile gefunden die in C++ das Fenster verstecken soll, werd die dann zur Not noch in das Programm einbauen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ftp.StartInfo.CreateNoWindow = True
Das tats nicht, mit
FTP.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

gehts aber.

Dann noch eine Frage: Ich habe nun in meinem Programm eine TextBox worin das Log des hinterliegenden FTP Programmes ausgelesen wird. Kann ich dies irgendwie so einstellen, dass er nach jedem Lesevorgang ganz bis zum Ende scrollt? Ich habe schon versucht den Cursor zum Ende zu setzen, aber dadurch scrollt er nicht runter.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Funktioniert, vielen Dank :)

Ich nutz die Textbox im Endeffekt nur um den Inhalt des Logs darzustellen. Soll also auch keine Eingabe drüber kommen oder so. Da man über die Textbox sehr einfach ne Scrolleiste bekommt hab ichs so gebaut. Ist vielleicht nicht ganz so schön, aber funktioniert wie gedacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...