Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fenster der Eingabeaufforderung anzeigen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 22.01.2012, 14:38    Titel: Fenster der Eingabeaufforderung anzeigen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.01.2012, 14:44    Titel: Antworten mit Zitat

Hallo und willkommen im Forum!

1) Welche IDE benutzt du? FBEdit oder FBIDE? Wenn du FBEdit verwendest, musst du "Windows Console" als Projekttyp auswählen (siehe Screenshot 1) und sicherstellen, dass oben rechts in der IDE (da gibt es so eine Combobox-Auswahl) auch "Windows Console" steht (siehe Screenshot 2) und nicht "Windows GUI".

2) Compilierst du mit dem Parameter -s gui? Wenn ja, sollte der hier auf jeden Fall weggelassen werden, damit das cmd-Fenster auch angezeigt wird.

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 22.01.2012, 14:50    Titel: Schön dass Du mir hilfst... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.01.2012, 15:07    Titel: Re: Schön dass Du mir hilfst... Antworten mit Zitat

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?
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 22.01.2012, 15:11    Titel: Ergänzung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 22.01.2012, 15:25    Titel: MsgBox funktioniert... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 22.01.2012, 19:06    Titel: Gelöst Antworten mit Zitat

Es ist so, dass das aufrufende Programm (ProjectX) dies nur als "Subprozess" startet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 22.01.2012, 21:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 23.01.2012, 00:03    Titel: Antworten mit Zitat

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..zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 23.01.2012, 11:46    Titel: Posting des Programmes... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 23.01.2012, 12:59    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 23.01.2012, 13:59    Titel: glaube ich eher nicht... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 23.01.2012, 16:00    Titel: Antworten mit Zitat

ProjectX über die Kommandozeile starten
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 23.01.2012, 16:50    Titel: ... Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 23.01.2012, 16:53    Titel: Antworten mit Zitat

RUN ist ein denkbar schlechter Befehl. Versuch es mal mit EXEC oder SHELL.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 23.01.2012, 17:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 23.01.2012, 17:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 23.01.2012, 17:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sams1



Anmeldungsdatum: 22.01.2012
Beiträge: 12

BeitragVerfasst am: 23.01.2012, 18:55    Titel: Posting Antworten mit Zitat

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, 18:58, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 23.01.2012, 18:58    Titel: Antworten mit Zitat

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.
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!


Zuletzt bearbeitet von Sebastian am 23.01.2012, 19:02, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz