Schrift
[thread]7411[/thread]

Shell-Command ohne Konsole: wie system(), nur ohne Konsole

Leser: 1


<< >> 8 Einträge, 1 Seite
greenhornet
 2005-10-28 21:19
#59480 #59480
User since
2005-10-08
5 Artikel
BenutzerIn
[default_avatar]
Hi,

ich hab folgendes Problem. Hab mittlerweile n ziemliches Programmpaket in Perl geschrieben, das ganze mit PAR zu nem Executable umgewandelt und auf ne CD-gebrannt... damit's schöner aussieht, hab ich mir dann gleich noch ne Autorun-Datei mit dazu gebastelt, von der aus ich alle Programme starten bzw. installieren kann...

Nun habe ich folgendes Problem.
Wenn ich ein Programm (z.B. Setup von GIMP) ausführen lasse, erscheint jedes mal dieses Konsolenfenster. (Wie bei Start->Ausführen "cmd"). Weiß jemand, wie ich die Programme ohne diese Konsole starten kann???
Hab schon mit rundll32 usw... rumgesucht, aber auf die schnelle nix gefunden.
Ein weiteres Problem ist, dass nicht alles ausführbare Programme sind. Ich würd z.B. auch gern PDF-Dokumente oder Word-Dokumente automatisch mit der Anwendung öffnen lassen, mit der sie in Windows verknüpft sind.

Bin für jeden Ratschlag dankbar,
GwenDragon
 2005-10-28 21:35
#59481 #59481
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
greenhornet
 2005-10-28 22:16
#59482 #59482
User since
2005-10-08
5 Artikel
BenutzerIn
[default_avatar]
Danke, hat den Großteil meiner Probleme gelöst... jetzt muss ich die Dateien nur noch mit den Verknüpften Programmen zum laufen bringen... aber ich glaub das bekomm ich über Win32::Registry raus.

Danke nochmal
pKai
 2005-10-28 23:58
#59483 #59483
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Du kannst es Windows selber aus der Registry suchen lassen.
Quote
system(qq(start "$file"))

startet die mit der Extension von der in $file genannten Datei verknüpften Anwendung mit dieser Datei, so wie es in der Registry eingetragen ist. (So als ob du den Dateinamen in Start->Run gepastet hättest.)

Allerdings bekommst du dann wieder eine sichtbare CMD-Box kurzzeitig.

Diese wiederum solltest du mit
[quote=SetChildShowWindow,perldoc Win32]Win32::SetChildShowWindow(SHOWWINDOW)
[CORE] Sets the *ShowMode* of child processes started by system().
By default system() will create a new console window for child
processes if Perl itself is not running from a console. Calling
SetChildShowWindow(0) will make these new console windows invisible.
[/quote]unsichtbar schalten können (von mir nicht getestet).

Edit: Und wenn du schon selbst mit der Registry arbeitest, dann beherzige bitte den Hinweis in [quote=!,perldoc Win32::Registry]NAME
Win32::Registry - accessing the Windows registry [obsolete, use
Win32::TieRegistry]

[/quote]Ist auch viel eleganter und einfacher YMMV\n\n

<!--EDIT|pKai|1130529897-->
I sense a soul in search of answers.
greenhornet
 2005-10-31 10:17
#59484 #59484
User since
2005-10-08
5 Artikel
BenutzerIn
[default_avatar]
THX, ich hätt's eh mit Win32::TieRegistry gemacht, aber so is ja viel eleganter.

Damit wär auch der Rest meiner Probleme erschlagen..
vayu
 2005-11-04 19:51
#59485 #59485
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ich hab eigentlich so ein ähnliches problem. nur möchte ich gleich wenn ich unter Windows nen doppelklick auf mein .pl skript mache das öffnen der shell verhindern. geht das auch irgendwie?
anti
 2005-11-04 20:37
#59486 #59486
User since
2003-11-29
155 Artikel
BenutzerIn
[default_avatar]
[quote=vayu,04.11.2005, 18:51]ich hab eigentlich so ein ähnliches problem. nur möchte ich gleich wenn ich unter Windows nen doppelklick auf mein .pl skript mache das öffnen der shell verhindern.[/quote]
Soweit ich weiß, statt der perl.exe die wperl.exe verwenden (Activestate vorrausgesetzt). Das Ganze lässt sich unter Windows bei den Ordneroptionen » Dateitypen ändern.

greetz, anti
vayu
 2005-11-04 21:16
#59487 #59487
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
vielen dank :)
<< >> 8 Einträge, 1 Seite



View all threads created 2005-10-28 21:19.