X-beliebiges Windows Programm per Button starten


cheker

Grünschnabel
Hallo,

Laut VB.NET MS-PRESS Buch gibt es die Möglichkeit ein x-beliebiges Programm (Windows Anwendung) per Button starten und wieder auch schließen.

Mit der Process.Start Methode.

Das funktioniert auch sehr gut mit Programmen wie Notepad, Word, Excel.
Laut MS-Press Buch startet man mit dieser Methode jedes Programm das sich in die Registrierungsdatenbak des Systems einträgt.

Ich möchte nun ein Programm starten bzw. eine .exe Datei die heißt RLW32.exe, aber da funktioniert es nicht der PC hängt und ich muss neu starten :mad:

Kann es sein das mein Programm wo ich starten will sich nicht in die Registrierungsdatenbank des Systems einträgt?

Falls es jemandem hilft hier mein Code:

In Form3 habe ich eine Process Komponente eingefügt und in RLWProcess umbenannt.
In Eigenschaft von der Komponente bei Filename: RLW32.exe eingetragen.

Imports System.Threading
Imports System.Diagnostics

Public Class Form3
Inherits System.Windows.Forms.Form

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

RLWProcess.Start()

End Sub

Mehr braucht man laut dem Buch MS-PRESS VB.NET nicht.

Kann mir jemand helfen :sad:

Gruß
Chief2
 

Dario Linsky

Erfahrenes Mitglied
Hast Du Deinen Code mal durch den Debugger laufen lassen? Vielleicht stimmt da ja irgendeine Kleinigkeit nicht. Ich würde Dir auch empfehlen, nicht unbedingt fertige Steuerelemente für derartig abstrakte Dinge wie Prozesse oder Datenquellen auf ein Formular zu legen. Erstell solche Sachen lieber im Code selbst, da hast Du mehr Kontrolle darüber und bekommst auch mehr Informationen beim Debuggen.
Ausserdem solltest Du mal versuchen, das besagte Programm per Hand zu starten - vielleicht ist das an sich ja schon nicht in Ordnung und es liegt gar nicht an Deinem Code.
 

cheker

Grünschnabel
Hi Dario,

nein durch den Debugger hab ich es nicht durchlaufen lassen.
Ich habe lediglich nur auf das Playzeichen geklickt (kam keine Fehlermeldung beim Kompilieren) und dann die Sache ausprobiert.
Und da, wenn ich die .exe Datei per Button aufrufen will hängt der PC, da geht gar nichts mehr.

Ich kann die .exe auch über Start/Ausführen wenn ich nur die .exe eintrage nicht ausführen. Fehlermeldung Datei wurde nicht gefunden. Korrekter Pfad und bla Bla...
Allerdings wenn ich den Pfad angebe wo sich die Datei befindet dann geht es, auch mit anderen .exe Dateien.

Wieso funktioniert es mit Word, Notepad.. usw. ohne Pfadangabe?

Gruß
Cheker
 

Alexander Schuc

crazy-weasel
Original geschrieben von cheker

Wieso funktioniert es mit Word, Notepad.. usw. ohne Pfadangabe?

Wenn eine ausführbare Datei in einem von Windows bekanntem Pfad liegt (also einem Pfad der in der Path Variable vorkommt) kann man sie direkt aufrufen, da Windows in diesen Verzeichnissen nachsieht ob dort was entsprechendes liegt.
Notepad z.b. liegt irgendwo direkt im Windows-Ordner.
 

Dario Linsky

Erfahrenes Mitglied
Natürlich gibt es keine Fehlermeldung beim Kompilieren, der Dateiname als Stringliteral ist aus Compiler-Sicht ja auch kein Fehler, kann aber zur Laufzeit sicher ein Problem werden, wenn die Datei nicht vorhanden ist oder die Zielanwendung aus anderen Gründen nicht gestartet werden kann.
Als erstes solltest Du da wirklich einfach mal überprüfen, ob die Anwendung manuell problemlos gestartet werden kann, dann kannst Du den Dateinamen (aus dem Ausführen-Dialog) kopieren und in Deiner Anwendung verwenden. Eventuell solltest Du auch noch auf mögliche Exceptions reagieren (FileNotFoundException, etc). Es kann ja schliesslich auch sein, dass die Anwendung auf anderen Systemen nicht an der gleichen Stelle liegt, also evtl. besser den Dateinamen aus der Registry oder ähnlichen Quellen holen.
Gerade bei Dingen, die zur Entwicklungszeit nicht genau voraussehbar sind, solltest Du da IMHO etwas vorsichtiger sein und besser die entsprechende Methode debuggen, wenn es nicht ganz klappt.
 

cheker

Grünschnabel
Hi Dario,

die Anwendung wo ich per Button aufrufen möchte kann ich manuell ohne Probleme starten, d.h. wenn ich auf das Icon klicke dann wird das Programm aufgerufen.

Ich möchte Dir mal ein Beispiel nennen wie ich das meine.

So nennen wir mal die Datei "Test.exe" Ok.
Der User hat jetzt z.B. von mir das fertige Programm, und er hat die Test.exe auf seinem Rechner installiert.
Er installiert jetzt das fertige Programm und möchte dann die Test.exe von dem Programm aus aufrufen.
Das Programm weiß aber nicht wo der User die Test.exe installiert hat, sprich auf C:\ oder E:\ oder D:\ usw.

Wie könnte so ein Sourcecode denn aussehen?
Ich muss auch keine Processkomponente verwenden.

Könntest Du mir wenn Du Zeit hast mir was kurz zusammenstellen, wenn Dir nichts aus macht?
Vielen Dank

Gruß
cheker
 

Alexander Schuc

crazy-weasel
Hallo.

Du könntest den Pfad zu dieser Datei in einer Konfigurationsdatei speichern.
Wenn du das Programm auslieferst ist diese Variable leer. Dein Programm bemerkt das und fragt den Pfad zur Datei ab, und speichert ihn gleich.

So könntest du das bewerkstelligen.


Mfg,
Alex
 

Dario Linsky

Erfahrenes Mitglied
Für viele Programme werden bei der Installation ein paar Informationen in der Systemregistrierung eingetragen. Diese sind meistens immer an der gleichen Stelle, evtl. kannst Du von dort den Installationspfad rausbekommen.
 

Alexander Schuc

crazy-weasel
Original geschrieben von Dario Linsky
Für viele Programme werden bei der Installation ein paar Informationen in der Systemregistrierung eingetragen. Diese sind meistens immer an der gleichen Stelle, evtl. kannst Du von dort den Installationspfad rausbekommen.

Die Win32-Registry ist allerdings nicht mehr so im Sinne des .net Frameworks.
 

cheker

Grünschnabel
Hallo Alexander,

vielen Dank für Deine Antworten, das mit der Konfigurationsdatei hört sich echt gut an.
Kannst Du mir mal ein Beispiel schreiben wenn s Dir nichts ausmacht, die Datei wo ich starten möchte heißt "RLW32.exe"

Ich wäre Dir sehr dankbar, hilfst mir damit sehr.
Danke

Gruß
Cheker
 

Neue Beiträge