[C#] Process.Start

  • Code:

    Code
    Process.Start(this.tbSAMP.Text + " -c -n " + this.tbUsername.Text + " -h " + this.tbConnectIP.Text + " -p ");



    Code
    Ein Ausnahmefehler des Typs "System.ComponentModel.Win32Exception" ist in System.dll aufgetreten.Zusätzliche Informationen: Das System kann die angegebene Datei nicht finden


    Code
    Informationen über das Aufrufen von JIT-Debuggenanstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.************** Ausnahmetext **************System.ComponentModel.Win32Exception (0x80004005): Das System kann die angegebene Datei nicht finden   bei System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)   bei System.Diagnostics.Process.Start()   bei System.Diagnostics.Process.Start(ProcessStartInfo startInfo)   bei System.Diagnostics.Process.Start(String fileName)   bei Testprojekt.KB.button1_Click(Object sender, EventArgs e) in C:\Users\leonb\Desktop\C# Development\Testprojekt\Testprojekt\Form1.cs:Zeile 121.   bei System.Windows.Forms.Control.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   bei System.Windows.Forms.Control.WndProc(Message& m)   bei System.Windows.Forms.ButtonBase.WndProc(Message& m)   bei System.Windows.Forms.Button.WndProc(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Geladene Assemblys **************mscorlib    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.96.0 built by: NETFXREL2STAGE.    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.----------------------------------------Testprojekt    Assembly-Version: 1.0.0.0.    Win32-Version: 1.0.0.0.    CodeBase: file:///C:/Users/leonb/Desktop/C%23%20Development/Testprojekt/Testprojekt/bin/Debug/Testprojekt.exe.----------------------------------------System.Windows.Forms    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.----------------------------------------System    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.----------------------------------------System.Drawing    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.----------------------------------------System.Configuration    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.----------------------------------------System.Core    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.----------------------------------------System.Xml    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.----------------------------------------System.Windows.Forms.resources    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.----------------------------------------mscorlib.resources    Assembly-Version: 4.0.0.0.    Win32-Version: 4.6.79.0 built by: NETFXREL2.    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.----------------------------------------


    Der Pfad zur SAMP.exe ist zu 100% richtig. (Habe es mir ausgeben lassen)
    Auch die Parameter (Username, IP) sind richtig.
    Wieso zur Hölle sagt er mir er fände die Anwendung nicht?

  • whitetiiger: Nein das ist nicht nötig.


    N0SKILL: So funktioniet Process.Start aber nicht.


    Du hast Atribute genug um alles fehlerfrei festzulegen.


    Du benötigst nur das hier:


    Proz.StartInfo.WorkingDirectory = Path;
    Proz.StartInfo.FileName = ProzessName;
    Proz.StartInfo.Arguments = Args;
    Proz.Start();


    Hab das mal exemplarisch aus einer meiner Solution kopiert.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @BlackAce:


    Code
    private void button1_Click(object sender, EventArgs e)        {            ProcessStartInfo StartInfo = new ProcessStartInfo();            StartInfo.FileName = this.tbSAMP.Text;            StartInfo.Arguments = "-c -n " + this.tbUsername.Text + " -h " + this.tbConnectIP.Text + " -p";            Process.Start();        }


    Wenn ich das so anwende, gibt es mir einen Fehler aus:


    Code
    Für das nicht statische Feld, die Methode oder die Eigenschaft "Process.Start()" ist ein Objektverweis erforderlich.


    /e
    Ups, klar.
    Logischer Denkfehler von mir.
    So geht es:

    Code
    private void button1_Click(object sender, EventArgs e)        {            ProcessStartInfo StartInfo = new ProcessStartInfo();            StartInfo.FileName = this.tbSAMP.Text;            StartInfo.Arguments = "-c -n " + this.tbUsername.Text + " -h " + this.tbConnectIP.Text + " -p";            Process.Start(StartInfo);        }


    Dankeschön!

  • Hast du dich nicht gefragt, wofür das Proz steht ?


    Es muss so aussehen
    Process Proz = new Process();
    Proz.StartInfo.WorkingDirectory = Path; // <- hier wird der Pfad zur Datei angegeben aber OHNE Dateinamen
    Proz.StartInfo.FileName = this.tbSAMP.Text; // <- hier wird NICHT der gesamt Pfad angegeben nur der Dateiname
    Proz.StartInfo.Arguments = "-c -n " + this.tbUsername.Text + " -h " + this.tbConnectIP.Text + " -p";
    Proz.Start();

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Hey, ich gebe dir mal meine GTA Executer-Klasse, du musst sie jedoch Anpassen dann sollte es Funktionieren.


    GtaExecuter.cs (Abgespeckte Version):


    Usings (MainForm):

    Code
    using Microsoft.Win32;


    Mainform (Start button):

    Code
    RegistryKey Key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\SAMP");
                string gtaPath = (string)Key.GetValue("gta_sa_exe");
                GtaExecuter @object = new GtaExecuter(this);
                ParameterizedThreadStart start = new ParameterizedThreadStart(@object.Run);
                Thread thread = new Thread(start);
                thread.Name = "GtaExecuterThread";
                thread.Start(gtaPath);
  • SLaYz:
    Danke, aber ich stehe so kurz davor es zu lösen, möchte ungerne die ganze Arbeit löschen. :-p


    @BlackAce:
    Okay... Aber wie bekomme ich den Pfad raus?
    Ich habe den Pfad - Allerdings nur mit Dateinamen dahinter.
    Also D:Lala/GTA/blabla/samp.exe.
    Wie mache ich daraus jetzt D:Lala/GTA/blabla/ damit ich es als Pfad verwenden kann?
    Und es startet ja GTA - auch das richtige.
    Jetzt connected er eben nur auf den Port :7777 ohne IP. (Mal ganz abgesehen davon das er auf Port 7779 connecten sollte :D )


    /e
    Und ja, er übergibt die IP richtig.
    Hab's mir ausgeben lassen:


  • Du startest ja auch die samp.exe und nicht gta_sa.exe


    Die Parameter sind für die gta_sa.exe, wenn du die nutzen willst, musst du nach dem Start des Prozesses die samp.dll injecten,
    ansonsten connected er immer auf den Localhost.


    die samp.exe kannst du mit iP:port als argument starten.


    Würde ich aber von abraten, man launcht idR auch keinen Launcher um das gewünschte ergebnis zu erhalten, sondern startet das Spiel direkt.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • process.StartInfo.FileName = text.Replace("GTA_SA.exe", "samp.exe");



    Also deinen Code verstehe vielleicvht Gott aber ich nicht! Was mich Interessiert ist lediglich der Start vom Programm durch die Registry mehr nicht, allerdings ist das bei deinem Code sehr unübersichtlich o0 Du Löädst als Mainprogramm den Anticheat und innerhalb essen den Executor der wiederum dann die SAMP Exe mit den Parametern startet ... jedoch das ganze mal ohne Executor sondern eher ganz normal !?