Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 22.01.2012, 15:38 Titel: Fenster der Eingabeaufforderung anzeigen |
|
|
Hi,
ein kleines "Windows" Problem. Ich habe ein kleines Programm zur Nachbearbeitung von Video Files geschrieben. Das klappt auch so weit i.O aber...
Das Programm wird durch ein anderes Java Programm (ProjectX) gestartet (dort kann man über Nachbearbeiten Progs angeben die gestartet werden sollen)
Nun wird mein Programm ordentlich gestartet und arbeitet auch ok aber es wird nicht wie erwartet während des Programmablaufes ein Eingabeaufforderungsfenster gezeigt indem ich Statusmeldungen ausgeben könnte.
Lange Rede kurze Frage: Das Programm soll nicht nur unter Windows aktiv sein sondern auch ein Fenster der Eingabeaufforderung zeigen und Statusmeldungen ausgeben. Das Fenster sollte zum Programmende auch wieder geschlossen werden, halt eben so als wenn ich es aus der Eingabeaufforderung gestartet hätte.
Wie macht man das?
Grüße
Peter
Editiert durch Moderator: Aussagekräftigeren Themen-Titel angegeben statt im Original "Ich bin ein Dummy..." (Sebastian) |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 22.01.2012, 15:50 Titel: Schön dass Du mir hilfst... |
|
|
Das ist eine gute Frage... Keine Ahnung.
Ich habe es "einfach" mit fbc.exe ohne weitere Parameter compiliert.
Im Programm habe ich auch keine Compoiler Optionen angegeben, falls so was überhaupt geht.
Grüße
Peter |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.01.2012, 16:07 Titel: Re: Schön dass Du mir hilfst... |
|
|
Sams1 hat Folgendes geschrieben: | Ich habe es "einfach" mit fbc.exe ohne weitere Parameter compiliert. |
Das ist OK. Wenn man keine Parameter angibt, wird standardmäßig eine Konsolenanwendung erstellt.
Dann könnte es daran zu liegen, wie das Java-Programm die externe EXE aufruft. Wenn du in deinem FreeBASIC-Programm eine MessageBox aufrufst, ist die dann zu sichtbar, sobald die Java-Anwendung die EXE aufruft? _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 22.01.2012, 16:11 Titel: Ergänzung |
|
|
Ok mit der IDE habe ich verstanden, nein ich benutzte keine (Notepad++) und Compile via Batch File ohne Parameter.
Wenn ich das Programm mit Doppelklick aus dem Explorer starte bekomme ich ein Consolenfenster. Aber halt nicht wenn es von dem anderen Prog (ProjectX) gestartet wird...
Grüße
Peter |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 22.01.2012, 16:25 Titel: MsgBox funktioniert... |
|
|
Danke, dass Du Dich mit meinen Problemen beschäftigst...
Ich habe mal 2 Msgboxen eingebaut, die auch brav funktionieren (d.h. sichbar werden und auch die Events reagieren).
Wenn ich einen "normalen" Print Befehl absetzte erscheint allerdings keine Console und das Programm bleibt (scheinbar) genau an der Stelle stehen. D.h. ich kann es nur über den Task Manager beenden.
Grüße
Peter |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 22.01.2012, 20:06 Titel: Gelöst |
|
|
Es ist so, dass das aufrufende Programm (ProjectX) dies nur als "Subprozess" startet... |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 22.01.2012, 22:16 Titel: |
|
|
Eine Möglichkeit, wenn auch nicht die beste, ist, in deinem FB-Programm ein Grafikfenster zu öffnen. Das wird auch bei externem Aufruf angezeigt und du kannst dort normal über PRINT deine Statusmeldungen ausgeben. Scrollen geht dann allerdings nicht mehr (jedenfalls nicht ohne sehr viel Bastelei oder Verwendung einer GUI). _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.01.2012, 01:03 Titel: |
|
|
Wir(zumindest ich) könnten dir bestimmt besser helfen, wenn du das Programm mal posten würdest..
Ansonsten kann ich nur sagen:komisch bei mir funktioniert die Konsole problemlos..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 23.01.2012, 12:46 Titel: Posting des Programmes... |
|
|
Das Prog ist echt trivial, die Aufgabe ist es mit der Nachbearbeitung aus projectX werden nur 2 Parmeter (Audiodateinamen & videodateinamen) übergeben. Da ich aber für das folgende muxen zusätzlich einen dritten Parameter brauche (Zieldateiname der ungleich Audio/Video) sein soll. Werden einfach die Übergabewerte aus Command(n) ausgelesesn, daraus der Zieldateinamen abgeleitet und anschliessend damit ein Externes Programm (Muxen) gestartet.
Listing (gekürzt)...
Code: | For x=1 To 9
If Len(Command(x)) = 0 Then
Exit For
End If
Parameter(x) =Command(x)
Anz=Anz+1
Next x
'.... Ein paar stringoperationen...
cmdline = param1 & " " & Chr(34) & paramziel & Chr(34) & " " & Chr(34) & paramvideo & Chr(34) & " " & Chr(34) & paramaudio & Chr(34)
Const exename = "D:\Filme_erstellen\Muxen\Mplex.exe"
result = Run( exename, cmdline )
If result = -1 Then
Write #filenum, "Error running "
Else
Write #filenum, "Exit ok"
End If
'#################
'Jetzt schreibt das Prog die Events in eine Logdatei, eigentlich sollte es mit
'Print auf die Console gehen, wenn ich allerdings einen Print absetze bleibt das Prog stehen (es geht keine Konsole auf) |
-------------
M.E. nach kann es nicht am Code liegen, entweder liegt es daran wie es gestartet wird oder es gibt eine spez. Compileroption mit der man eine Console "erzwingen" kann. |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 23.01.2012, 13:59 Titel: |
|
|
ich wage einfach mal zu behaupten dass das programm direkt in die konsole des aufrufenden programms schreibt. Da aber vermutlich dein aufrufendes programm keine konsole anzeigt siehst du davon halt nix. Das ist vermutlich alles.
Wenn du ein normales FB programm startest macht das vermutlich nur ne konsole auf wenns direkt aus windows gestartet wird. Wenn du's über ne konsole schon aufrufst (was der fall ist wenn du run(programm.exe) machst) benutzts die aufrufende konsole mit. Wenn die halt ausgeblendet ist machts aber keine zweite auf sondern schreibt in die ausgeblendete konsole und du siehst davon nix. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 23.01.2012, 14:59 Titel: glaube ich eher nicht... |
|
|
so weit (und dass ist wirklich nicht weit) Windows verstehe muss die Öffnung eines Consolenfensters expizit geschehen. Da das Programm stehen bleibt und als ordentlich ausgeführt in dem Taskmanager steht, wartet es wohl auf die Ausgabe die aber nicht durchgeführt werden kann.
D.h. m.E. dass die Öffnung der Console von Windows ausgeführt wird wenn man eine Exe über den Explorer / cmd startet. Dies geschieht nicht von der Exe aus. Daher müsste das Consolenfenster von der Exe gestartet werden...
Bin mal gespannt ob einer eine Lösung dafür findet! |
|
Nach oben |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 23.01.2012, 17:00 Titel: |
|
|
ProjectX über die Kommandozeile starten |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 23.01.2012, 17:50 Titel: ... |
|
|
ProjectX wird beits über die Batch datei gestartet. D.h. ich mache ich den gesamten workflow für TV Aufzeichnungen von *.wtv to *.dvr-ms to *.mpg to demultiplex / schneiden mit ProjectX to mux mit mplex to mp4 mit Handbrake in einem Rutsch... |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 23.01.2012, 17:53 Titel: |
|
|
RUN ist ein denkbar schlechter Befehl. Versuch es mal mit EXEC oder SHELL. |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 23.01.2012, 18:03 Titel: |
|
|
das ist sicher eine andere Baustelle.
RUN: Transfers control over to an external program. When the program exits, execution will return to the system.
EXEC: Transfers control over to an external program. When the program exits, execution resumes [color=red]immediately[/color] after the call to Exec.
SHELL: Program execution will be [color=red]suspended[/color] until the command interpreter exits. |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 23.01.2012, 18:09 Titel: |
|
|
Dein Code nach RUN wird nicht mehr ausgeführt, bei EXEC schon.
SHELL funktioniert nochmal ganz anders, das Programm wird durch die cmd gestartet, nicht durch das FB-Programm. |
|
Nach oben |
|
|
ytwinky
Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.01.2012, 18:25 Titel: |
|
|
Sams1 hat Folgendes geschrieben: | ..
RUN: Transfers control over to an external program. When the program exits, execution will return to the system.
EXEC: Transfers control over to an external program. When the program exits, execution resumes immediately after the call to Exec.
SHELL: Program execution will be suspended until the command interpreter exits. | ..hieraus folgere ich mal, daß du des Englischen mächtig bist, da du aber PROBLEME mit deinem Programm hast, solltest du imho eine deutsche Hilfe-Datei benutzen(http://www.freebasic-portal.de/befehlsreferenz/)..
Dadurch fallen dann schon mal Übersetzungsfehler aus.
Was ist daran schlimm, das gesamte Programm zu posten?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
|
Sams1
Anmeldungsdatum: 22.01.2012 Beiträge: 12
|
Verfasst am: 23.01.2012, 19:55 Titel: Posting |
|
|
Hi,
es spricht absolut nicht's dagegen dass Prog zu posten. Aber imo trägt es nur zu Verwirrung und nicht zur Lösung bei. Ein Minimalprogramm mit dem es NICHT geht sieht wie folgt aus:
Code: | Print "I love ProjectX"
End |
D.h dieses Programm wird ausgeführt aber nicht beendet wenn es aus ProjectX gestartet wird, aus einer Eingabeaufforderung läuft es selbstverständlich ohne Probleme.
Zum Handbuch, ja ich gebe zu das ich aufgrund schlechter Erfahrungen (nicht hier!) mir abgewöhnt habe übersetzungen zu lesen, da schleichen sich leider oft Fehler ein.
Zuletzt bearbeitet von Sams1 am 23.01.2012, 19:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 23.01.2012, 19:58 Titel: |
|
|
Hast du zufällig den Java-Code griffbereit, mit dem das externe Programm aufgerufen bzw. seine Ausgaben/Ergebnisse abgegriffen werden?
Wegen des Handbuchs: Die deutsche Befehlsreferenz ist streng genommen auch keine Übersetzung des englischen Wiki, sondern wird ständig unabhängig davon gepflegt und überarbeitet. Ich glaube, die deutsche Referenz ist in vielen Fällen sogar umfassender als die englische. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Zuletzt bearbeitet von Sebastian am 23.01.2012, 20:02, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
|