RunShell() beenden (erledigt)
Moderator: Moderatoren
RunShell() beenden (erledigt)
Hallo,
mein altes Thema putty zwecks Datentausch online:
ich kann putty per runshell starten :
runshell(" -load meinenTunnel -pw MeinPasswort","C:\programme\putty\putty.exe",.T.,.F.)
klappt wunderbar, Start in der Anwendung, wenn nötig, Daten schaufeln und fertig.
Würde es aber auch gern wieder in der Anwendung beenden statt im cmd-Fenster `exit` einzugeben.
Für einen Tip wäre ich dankbar
mein altes Thema putty zwecks Datentausch online:
ich kann putty per runshell starten :
runshell(" -load meinenTunnel -pw MeinPasswort","C:\programme\putty\putty.exe",.T.,.F.)
klappt wunderbar, Start in der Anwendung, wenn nötig, Daten schaufeln und fertig.
Würde es aber auch gern wieder in der Anwendung beenden statt im cmd-Fenster `exit` einzugeben.
Für einen Tip wäre ich dankbar
Zuletzt geändert von Fischkopp am Di, 25. Aug 2015 12:27, insgesamt 1-mal geändert.
Grüße aus Berlin
Reiner
Reiner
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: RunShell() beenden
Einfach .T. als letzten Parameter. Dann sieht man auch die Box nicht.
Wenn Du .F. als vorletzten Parameter wählst, wird synchron gestartet. Deine App wartet also, bis der Befehlsprozessor beendet wurde. Du kannst dann statt der CMD-Box einen Wartedialog oder so anzeigen. Und in der nächsten Zeile verschwinden lassen.
Also: Einfach die letzten beiden Parameter vertauschen.
Wenn Du .F. als vorletzten Parameter wählst, wird synchron gestartet. Deine App wartet also, bis der Befehlsprozessor beendet wurde. Du kannst dann statt der CMD-Box einen Wartedialog oder so anzeigen. Und in der nächsten Zeile verschwinden lassen.
Also: Einfach die letzten beiden Parameter vertauschen.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: RunShell() beenden
Ach so: Es kann dann sinnvoll sein, den Rückgabewert zu betrachten. Im asynchronen Modus (Dein Programm wartet NICHT) ist er 0, wenn die Anwendung gestartet werden konnte, und ansonsten -1. Im synchronen Modus kannst Du den tatsächlichen Code, den das aufgerufene Programm bei der Beendigung erzeugt hast, weiterverarbeiten. Liefert putty.exe z.B. 0 zurück, wenn alle Daten ordentlich verarbeitet werden konnten und kein Fehler auftrat, dann kannst Du das in der Anwendung mitteilen. Du kannst aber auch, wenn putty.exe z.B. eine 2 liefert, weil die Daten nicht gelesen werden konnten, auf Fehlerfälle reagieren.
Herzlich,
Tom
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2832
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 99 Mal
- Danksagung erhalten: 13 Mal
Re: RunShell() beenden
Hallo, Tom -
Sinn der putty-Sitzung ist es, während des Xbase++ Programms einen Tunnel bereitzustellen, über den auf Daten (meist SQL-Server) zugegriffen werden kann.
Hallo, Reiner -
eine kurze Recherche ergab mehrere Hinweise auf "sendkeys". Da müsstest Du aber selbst weitersuchen.
Sinn der putty-Sitzung ist es, während des Xbase++ Programms einen Tunnel bereitzustellen, über den auf Daten (meist SQL-Server) zugegriffen werden kann.
Hallo, Reiner -
eine kurze Recherche ergab mehrere Hinweise auf "sendkeys". Da müsstest Du aber selbst weitersuchen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Re: RunShell() beenden
Hallo, Tom
ganz so einfach ist es wohl nicht
Die aufgerufene putty.exe muß ja aktiv sein, um 1- 100 sql-Befehle abzusetzten, synchron geht also nicht.
Die sql-Befehle werden ja nicht direkt mit übergeben, sondern an localhost geschickt !
Ob das Fenster sichtbar ist oder nicht, ist sekundär, z.Zt. zwecks Kontrolle/Test da.
ganz so einfach ist es wohl nicht
Die aufgerufene putty.exe muß ja aktiv sein, um 1- 100 sql-Befehle abzusetzten, synchron geht also nicht.
Die sql-Befehle werden ja nicht direkt mit übergeben, sondern an localhost geschickt !
Ob das Fenster sichtbar ist oder nicht, ist sekundär, z.Zt. zwecks Kontrolle/Test da.
Grüße aus Berlin
Reiner
Reiner
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: RunShell() beenden
Ah. Verstehe.
TaskKill.exe sollte dann helfen. Wäre dann aber ein weiterer Befehlsprozessor.
TaskKill.exe sollte dann helfen. Wäre dann aber ein weiterer Befehlsprozessor.
Herzlich,
Tom
Tom
Re: RunShell() beenden
Hallo, Georg
das scheint der Weg zu sein, aber wie finde ich in xBase das Fenster wieder, um es anzusprechen ?
Da mein Programm ja weiterläuft, ist putty im Hintergrund, aber da können ja viele Fenster sein
das scheint der Weg zu sein, aber wie finde ich in xBase das Fenster wieder, um es anzusprechen ?
Da mein Programm ja weiterläuft, ist putty im Hintergrund, aber da können ja viele Fenster sein
Grüße aus Berlin
Reiner
Reiner
Re: RunShell() beenden
@Tom
ja, wäre ja ok, aber woher nehme ich die `process ID` dieses tasks ?
ja, wäre ja ok, aber woher nehme ich die `process ID` dieses tasks ?
Grüße aus Berlin
Reiner
Reiner
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: RunShell() beenden
Hat Roger Donnay gerade in seinem Forum erläutert:
Geht aber auch beides (TaskList und TaskKill) direkt via API. Musst Du mal suchen, Jimmy hatte Beispiele gepostet, wenn ich mich recht erinnere.
Code: Alles auswählen
RunShell('/C TaskList.Exe /V /FO CSV > tasklist.csv')
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: RunShell() beenden
Ergänzung: Ich würde beides nicht über den Befehlsprozessor abwickeln, weil das nicht verlässlich ist. Wenn's aber nur um Fensterkosmetik geht, mag das reichen.
Herzlich,
Tom
Tom
Re: RunShell() beenden
@Tom
ja schön, soweit geht das mit taskkill, aber trotzdem habe ich noch die Abfrage, ob der Task beendet werden soll.
werde mich wohl doch mit `sendkeys` beschäftigen müssen, soll ja `n simples `exit` kriegen.
Aber heute nicht mehr, nu is Feierabend
Danke !
ja schön, soweit geht das mit taskkill, aber trotzdem habe ich noch die Abfrage, ob der Task beendet werden soll.
werde mich wohl doch mit `sendkeys` beschäftigen müssen, soll ja `n simples `exit` kriegen.
Aber heute nicht mehr, nu is Feierabend
Danke !
Grüße aus Berlin
Reiner
Reiner
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: RunShell() beenden
ich finde den Weg von Roger es in eine CSV umzuleiten nicht gerade elegant ...Tom hat geschrieben:Hat Roger Donnay gerade in seinem Forum erläutert:Geht aber auch beides (TaskList und TaskKill) direkt via API.Code: Alles auswählen
RunShell('/C TaskList.Exe /V /FO CSV > tasklist.csv')
Musst Du mal suchen, Jimmy hatte Beispiele gepostet, wenn ich mich recht erinnere.
statt RunShell kann man Pablos TRunProcess.zip verwenden was dir gleich das Handle des aufzurufenden Programms gibt.
- Dateianhänge
-
- TRunProcess.zip
- need ot4xb
- (3.95 KiB) 239-mal heruntergeladen
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: RunShell() beenden
Einer CMD Box kann man einen eindeutigen Namen geben und diesen über die Windows suchen ...
Mit dem Namen kann man ein Fenster nach vorne bringen oder auch beenden.
Ich vermute aber dass putty noch läuft und es putty ist, das man mit exit schließt oder ?
Ob das dann einfach so abgewürgt werden darf ?
Mit dem Namen kann man ein Fenster nach vorne bringen oder auch beenden.
Ich vermute aber dass putty noch läuft und es putty ist, das man mit exit schließt oder ?
Ob das dann einfach so abgewürgt werden darf ?
Gruß
Hubert
Hubert
Re: RunShell() beenden
Hallo, Hubert
die Meldung kommt schon von Putty, abwürgen ist unelegant, da hast du schon recht
Ich werde es so lassen mit der Abfrage, sie aber ans Ende meines Programms stellen, dann ist das
vom Ablauf her sauber und auch für alle anderen Nutzer zu verstehen.
Werde noch sicherstellen, das Putty nicht 2x aufgerufen wird, dann sollte alles schön sein.
Dank an alle und `ne erfolgreiche Woche
die Meldung kommt schon von Putty, abwürgen ist unelegant, da hast du schon recht
Ich werde es so lassen mit der Abfrage, sie aber ans Ende meines Programms stellen, dann ist das
vom Ablauf her sauber und auch für alle anderen Nutzer zu verstehen.
Werde noch sicherstellen, das Putty nicht 2x aufgerufen wird, dann sollte alles schön sein.
Dank an alle und `ne erfolgreiche Woche
Grüße aus Berlin
Reiner
Reiner