Fehler bei Ausführung von "tlbimp.exe" durch Process - Instanz



  • Erstmal folgender C# - Code:

    ///////////////////////////////////////////////////////////////////////
    		//
    		// Ermöglicht komfortableren Umgang mit tlbimp.exe
    		//
    		// txtLibrary:         Eingabefeld Pfad zur importierenten DLL
    		// txtOutputDirectory: Verzeichnis wo die DLL hinimportiert werden soll
    		//
    		// Vereinfacht wird damit folgender Konsolenbefehl.
    		//
    		// tlbimp "%SYSTEMROOT%\System32\ShDocVw.dll" /out:"%VSINSTALLDIR%\PublicAssemblies\Interop.ShDocVw.dll"
    		private void btnImport_Click(object sender, System.EventArgs e)
    		{
    			try
    			{
    				Process proc = new Process();
    				string param = txtLibrary.Text + " /:out" + txtOutputDirectory.Text;
    
    				///////////////////////////////////////////////////////////
    				//
    				// Nur zum testen um zu sehen wie der Übergabeparameter
    				// von tlbimp.exe aussieht
    				using (StreamWriter sw = new StreamWriter("c:\\param.txt"))
    				{
    					sw.WriteLine(param);
    				}
    				///////////////////////////////////////////////////////////
    
    				proc.StartInfo.FileName = "C:\\Programme\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\Bin\\tlbimp.exe";
    				proc.StartInfo.UseShellExecute = false;
    				proc.StartInfo.RedirectStandardOutput = true;
    				proc.StartInfo.RedirectStandardError = true;
    
    				proc.StartInfo.CreateNoWindow = true;
    				proc.StartInfo.Arguments = param;
    				proc.Start();
    
    				//Wartet bis der Prozess beendet wird
    				proc.WaitForExit();
    
    				// bei: /out:
    				// mekert er wegen dem Zeichen / obwohl wenn man es manuell
    				// in der Konsole eingibt es anstandslos abläuft
    				txtProccessOutput.Text += "Prozessausgabe:\r\n---------------------------\r\n\r\n";
    				txtProccessOutput.Text += proc.StandardOutput.ReadToEnd();
    				txtProccessOutput.Text += "\r\n\r\nFehler:\r\n----------\r\n\r\n";
    				txtProccessOutput.Text += proc.StandardError.ReadToEnd();
    
    				Process.Start("explorer.exe", "C:\\Programme\\Microsoft Visual Studio .NET 2003\\Common7\\IDE\\PublicAssemblies");
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.Message);
    			}
    		}
    

    Also wie man sicher aus dem Code rauslesen kann habe ich für
    tlbimp.exe einen Grafischen Aufsatz gemacht den ich in der Entwicklungsumgebung gleich unter Extras eingebunden habe.

    Zusätzlich ist eine Textbox vorhanden auf die die Standardausgabe und
    die Standardfehlerausgabe umgelenkt wird!

    Das Programm läuft doch der der initierte Process tlbimp.exe
    wird gestartet aber nicht mit Erfolg beendet.
    Er bringt folgenden Fehler:

    TlbImp error: Ambiguous option: /

    . Die Option /out: wird aber leider syntaktisch mit einem Slash geschrieben.
    Wenn ich denn Befehl manuell über cmd.exe einhacke gehts. Das GUI
    macht nicht mehr als diesen sonst einghackten String selbst zusammenzubauen.

    mfg sclearsceen 🙂 😕 😞



  • hmm hat keiner einen Vorschlag? 😞



  • hmm hat keiner einen Vorschlag? 😞



  • Was soll mehrdeutig am Zeichen / sein die Option /:out wird so gebraucht, bei tlbimp.exe.

    Ich habe hier echt keine Ahnung.



  • /out:, nicht /:out



  • hmm ja wieder mal Tomaten auf den Augen wie so manchmal Danke 👍


Anmelden zum Antworten