![]() |
Probleme mit ShellExecute (pscp.exe)
Hiho,
ich hab da ma wieder ne Frage: Ich möchte eine Datei von einem Windows Rechner (der wo das Programm läuft) auf einen Linux-Rechner kopieren. Das mache ich bisher wie folgt:
Delphi-Quellcode:
Die ganzen <>-Teile sind natürlich in echt komplett & korrekt gefüllt, nur aus Datenschutzgründen hier nich aufgeführt. *G*
copyExe := '<path>\pscp.exe';
copyParams := '-l <user> -pw <password> ' + targetName + ' <server>:<path>'; copyDir := ExtractFileDir(copyExe); ShellExecute(self.Handle, 'open', PChar(copyExe), PChar(copyParams), PChar(copyDir), SW_SHOWNORMAL); ... Wenn mein Programm jetzt an diese Stelle kommt, schickt es den Befehl weg, bekommt auch keine Fehlermeldung, PSCP poppt auf und geht sofort wieder zu ohne was zu machen. Dann dachte ich, das was an dem Befehl falsch wäre, wenn ich mir aber copyExe und copyParams z.B. ma in ne LOG ausgeben lasse und vom selben Rechner über cmd ausführe, klappt der Befehl 1A. Hat wer ne Idee, woran das liegen kann, dass ein Befehl aus cmd heraus klappt, aber aus meinem Delphi Programm nicht? Oder vielleicht einfach nur nen Tipp, wie ich die Ausgabe von PSCP abfragen kann, denn bisher sehe ich ja nicht mal ne Fehlermeldung, sondern halt nur dasses nich gefunzt hat. ... Oder liegt es vielleicht an Putty´s PSCP? Bei anderen Programmen arbeite ich praktisch genauso mit ShellExecute und da funzt es... Danke im Voraus cu Patrick |
Re: Probleme mit ShellExecute (pscp.exe)
|
Re: Probleme mit ShellExecute (pscp.exe)
ShellExecute läuft nur auf Windows, soviel ich weis. Schau mal im Lazarusforum nach, dort wurde das kürzlich diskutiert. Ansonsten dort die Frage nochmals stellen, dort wird Ihnen geholfen, denn dort tummeln sich die Linux Cracks.
![]() Peter |
Re: Probleme mit ShellExecute (pscp.exe)
Wieso Lazarus? :gruebel:
|
Re: Probleme mit ShellExecute (pscp.exe)
Lies meine Antwort, dann erübrigt sich Deine Frage.
Peter |
Re: Probleme mit ShellExecute (pscp.exe)
Hi,
Zitat:
Zitat:
ich muß DeddyH zustimmen. Errraddicator führt das Windows Programm doch auf einem Windows Rechner aus. War der Verweis auf Lazarus und "Linux-Cracks" ein Mißverständnis? Zitat:
Delphi-Quellcode:
Gruß Assertor
ShellExecute(0, 'open', PChar(copyExe), PChar(copyParams), PChar(copyDir), SW_SHOWNORMAL); // <- statt Self.Handle eine 0
|
Re: Probleme mit ShellExecute (pscp.exe)
Habs ma mit 0 anstatt self.Handle ausprobiert, bringt auch nix.
So hatte ich es btw auch ganz zuerst, habs dann aus lauter Verzweiflung schon von 0 auf self.Handle geändert :D ... Den Rückgabewert habe ich mir auch noch ma inne Log ausgeben lassen und der ist 42, was laut Hilfe ja soviel wie erfolgreich heißt. Das Kommandozeilenfenster von PSCP geht ja auch auf, das heißt ShellExecute muss ja den Befehl weg geschickt haben. Allerdings schließt es sich sofort wieder. Dann habe ich gedacht, mein Befehl wäre falsch, aber wenn ich den gleichen Befehl 1:1 so inner Kommandozeile eintippe, funktionert er... Das entzieht sich irgendwie meinem Verstand. :wiejetzt: ... Gibts denn vielleicht ne Möglichkeit die Ausgabe von PSCP von der Kommandozeile in eine Textdatei umzuleiten, ähnlich wie ein ">" in der Kommandozeile selbst? Damit ich mal sehe, was PSCP eventuell zu meckern hat? |
Re: Probleme mit ShellExecute (pscp.exe)
So wie ich es verstanden habe, soll das Programm unter Linux laufen, doch wenn ich das so lese, meint er wahrscheinlich, dass er von einem reinen Windows auf einen Rechner mit Linux und Wine oder so wechselt. Genaue Angaben wäre für eine richtige Antwort hilfreich.
Unter Linux läuft ShellExecute nicht, dort muss man das anders Programmieren. Ausserdem kann man auch plattformübergreifend diesen Link anders Programmieren, ohne ShellExecute. Dieses Thema wurde im Lazarus Forum diskutiert inkl. Lösungsvorschläge. Deshalb mein Hinweis zu diesem Forum. Peter |
Re: Probleme mit ShellExecute (pscp.exe)
Hallo,
schreib Dir 'ne Batchdatei, in die Du den Aufruf von pscp.exe so rein schreibst, wie er vom Dos-Prompt aus funktioniert. Dahinter schreibst Du pause und rufst nun über ShellExecute die Batchdatei auf. Als Ergebnis sollte die Batchdatei nach dem Aufruf des Programmes stehen bleiben und auf einen Tastatusdruck warten. Mit ein bisserl Glück kannst Du dort dann auch eventuelle Fehlermeldungen von pscp.exe sehen. |
Re: Probleme mit ShellExecute (pscp.exe)
Oder statt das Programm direkt den Kommandointerpreter (cmd.exe) aufrufen und den ganzen jetzigen Aufruf als Parameter (evtl. angeführt von "/c") übergeben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz