Schrift
[thread]6986[/thread]

Standardbrowser (Seite 3)



<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten
pKai
 2005-05-13 14:28
#54823 #54823
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=sesth,13.May.2005, 10:51]/B verhindert aber die DOS-Box! Probiers einfach mal aus.[/quote]
Ausprobiert... Box erscheint...
Warum das wohl so ist wurde in einem früheren Thread diskutiert:
Die Box erscheint *nicht* bei einem Konsolen-start, wohl aber aus einem GUI-prog (exe). Grund ist wohl, dass start kein eigenständiges Prog. ist, sondern ein internen Befehl des %comspec%. Er braucht zumindest ein Fenster und schafft sich das erstmal, unbeeinflusst von jeglichen Aufrufparametern von start.
I sense a soul in search of answers.
sesth
 2005-05-13 15:27
#54824 #54824
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Quote
Die Box erscheint *nicht* bei einem Konsolen-start, wohl aber aus einem GUI-prog (exe). Grund ist wohl, dass start kein eigenständiges Prog. ist, sondern ein internen Befehl des %comspec%. Er braucht zumindest ein Fenster und schafft sich das erstmal, unbeeinflusst von jeglichen Aufrufparametern von start.

Wie ist das gemeint? Das Perl-Programm wird ja normalerweise über den Interpreter in einer Konsole gestartet. Oder geht es um den direkten Aufruf eines Perl-Skripts aus einem C-Programm (perlcall)?

Wahrscheinlich wird kurz eine Box durch "system" aufgemacht, die ist bei mir (W2K) aber nicht wahrnehmbar. Es bleibt zumindestens keine Box offen.
Gruß
Thomas
Froschpopo
 2005-05-13 15:30
#54825 #54825
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
deshalb hab ich dazugeschrieben, dass sich der code auf Perl Tk bezieht.Die Box wird nicht von system() aufgemacht sondern von "start", damit kann man unter Windows programme starten wie z.b. den IE.
system() ist unter Tk aber generell ein problem da system auf ne rückgabe des aufgerufenen Programms erwartet und solange wie dies der fall ist die gui einschläft
sesth
 2005-05-13 15:42
#54826 #54826
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Auch unter Tk habe mit diesem Beispiel keine Probleme:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use TK;
use strict;
my $url = '[URL=http://wiki.perl-community.de/bin/view/Wissensbasis/StandardBrowserStarten]http://wiki.perl-community.de/bin....Starten[/URL]';
my $mw = MainWindow->new;
$mw->Label(-text => 'Test start')->pack;
$mw->Button(
    -text    => 'Browser',
    -command => sub { system('start "Test" /B "' . $url . '"'); },
)->pack;
$mw->Button(
    -text    => 'Quit',
    -command => sub { exit },
)->pack;
Tk::MainLoop();
Gruß
Thomas
Froschpopo
 2005-05-13 15:55
#54827 #54827
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Was du da gebaut hast hat eigentlich nix mit meinem problem zu tun, denn du rufst das Programm ja aus der konsole aus auf, insofern würde sich beim starten von "start" auch kein neues dos-fenster öffnen weil ja schon eins existiert. Aber ich starte das programm durch ein anderes programm, also nicht aus der dos-promt heraus und das hat zur folge, dass sich dann bei system("start...") ein neues dos-fenster öffnet.

Das ist auch der fall, wenn man versucht das dos-fenster im programm selbst zu unterdrücken UND/ODer wenn man es z.b. zu einer ausführbaren .exe macht um es dann später unabhängig mit doppelklick auf ein icon starten zu können\n\n

<!--EDIT|Froschpopo|1115985568-->
ptk
 2005-05-13 17:01
#54828 #54828
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Hast du schon mal Win32::Process versucht? Da gibt es so Optionen wie CREATE_NO_WINDOW.
pKai
 2005-05-13 22:58
#54829 #54829
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
@ptk: Er benutzt ja Proc::Background, das wiederum erzeugt unter Win den "Subprozess" mit Win32::Process und der Prozess (der Browser) soll natürlich ein Window haben.

@seeth: Kompilier mal dein Prog mit PAR (oder was auch immer) als GUI-Prog in eine EXE. Starte die dann mit Doppelklick im Explorer, und voilà ... Windows erzeugt eine cmd-Box zur Ausführung des "start" egal ob mit oder ohne /b aufgerufen.
*Das* ist das Problem, was FPs Ansatz löst :)\n\n

<!--EDIT|pKai|1116011126-->
I sense a soul in search of answers.
ptk
 2005-05-13 23:02
#54830 #54830
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dann kann man ja Win32::Process direkt benutzen und je nach Wunsch die entsprechenden Flags setzen (mit/ohne Window).
pKai
 2005-05-13 23:07
#54831 #54831
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Proc::Background ist aber portabel zwischen Unix und Win.
Das Problem ist die Geister-Box mit "start", die nicht gewünscht ist wenn das Prog keine native Konsole hat.
I sense a soul in search of answers.
J-jayz-Z
 2005-05-13 23:27
#54832 #54832
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn der system() aufruf nicht portabel ist, kann man auch auf andere Portabilität verzichten. Ich würde da mal sagen ganz oder gar nicht...
Es gibt zwar in Unix/Linux ein command names start, aber da es keinen Standardbrowser gibt unter diesen systemen, wird der auch ganz sicher nicht geöffnet :p

Edit: Mal wieder Standard falsch geschrieben *g\n\n

<!--EDIT|J-jayz-Z|1116012561-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< |< 1 2 3 4 >| >> 34 Einträge, 4 Seiten



View all threads created 2005-05-12 01:55.