![]() |
AW: Text Datei von Delphi Programm an einen Linux PC senden
Wir haben das mal ungefähr so gemacht:
Delphi-Quellcode:
Bei fernsteuern der ganzen Putty-Dinger muss man nur aufpassen, wenn mal der Server wechselt oder so, da Putty dann nachfragt, wenn eine andere Signatur gefunden wird (macht ja Sinn). Aber wenn das im Batch-Betrieb passiert ist das nervig, wobei es da wohl auch Parameter gibt, die dan ggf. verhindern können?
function SendFile:Boolean;
var output:String; begin output:=CaptureConsoleOutput(Command); Result:=Pos('100%',output)>0; end; //Diese Funktion hab ich mal irgendwo gefunden (hier in der DP ?) function CaptureConsoleOutput(const ACommand: String):String; const CReadBuffer = 2400; var saSecurity: TSecurityAttributes; hRead: THandle; hWrite: THandle; suiStartup: TStartupInfo; piProcess: TProcessInformation; pBuffer: array [0 .. CReadBuffer] of AnsiChar; dBuffer: array [0 .. CReadBuffer] of AnsiChar; dRead: DWord; dRunning: DWord; erg:String; begin saSecurity.nLength := SizeOf(TSecurityAttributes); saSecurity.bInheritHandle := True; saSecurity.lpSecurityDescriptor := nil; erg:=''; if CreatePipe(hRead, hWrite, @saSecurity, 0) then begin FillChar(suiStartup, SizeOf(TStartupInfo), #0); suiStartup.cb := SizeOf(TStartupInfo); suiStartup.hStdInput := hRead; suiStartup.hStdOutput := hWrite; suiStartup.hStdError := hWrite; suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; suiStartup.wShowWindow := SW_HIDE; if CreateProcess(nil, pChar(ACommand+' '), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then begin //repeat dRunning := WaitForSingleObject(piProcess.hProcess, 2000); Application.ProcessMessages(); repeat dRead := 0; ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil); pBuffer[dRead] := #0; OemToCharA(pBuffer, dBuffer); erg:=dBuffer; until (dRead < CReadBuffer); //until (dRunning <> WAIT_TIMEOUT); CloseHandle(piProcess.hProcess); CloseHandle(piProcess.hThread); end; CloseHandle(hRead); CloseHandle(hWrite); end; Result:=erg; end; function Command: String; var path:String; begin //hier lag die PSCP.exe mit im Programm-Verzeichnis, daher: path:=ExtractFilePath(Application.ExeName); Result:=path+'pscp.exe -P '+Port+' -pw '+pswrd+' '+ Dateienname+' '+username+'@'+URL+':'+targetdir; //alt mit keyfile im Programm-Verzeichnis: //Result:=path+'pscp.exe -P '+Port+' -i '+path+keyfile+' '+ // Dateiename+' '+username+'@'+URL+':'+targetdir; end; |
AW: Text Datei von Delphi Programm an einen Linux PC senden
Ja, aber er hat es ja jetzt mit WinExec gemacht. Hatte mich da gefragt, wie er den Erfolg auswertet. Das ist ja mit CreateProcess eigentlich einfacher, oder? :|
|
AW: Text Datei von Delphi Programm an einen Linux PC senden
Bis jetzt habe ich den Erfolg noch gar nicht ausgewertet.
|
AW: Text Datei von Delphi Programm an einen Linux PC senden
Bin nicht sicher ob es in deinem Fall hilft, aber kennst du DosCommand im GetIt Package ?
Das kann sowie ich weiss einiges in Richtung stdin stdout bewerkstelligen. Rollo |
AW: Text Datei von Delphi Programm an einen Linux PC senden
DosCommand hört sich sehr interessant an. Wo bekomme ich für Delphi 7 das her?
|
AW: Text Datei von Delphi Programm an einen Linux PC senden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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 by Thomas Breitkreuz