|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
schortcuts erzeugen
|
Seitenanfang |
HI, ich möchte ein Paar verknüpfungen erzeugen und habe es mit sowas versucht : aber anscheinend funktioniert es nicht wisst ihr warum? :($sc = Win32::Shortcut->new($arr[$x][3]); #Pfad\xxx.lnk $sc -> Path($arr[$x][4]); #Pfad\xxx.exe $sc -> Save();
Datum: 04.05.2007-13:03

|
re: schortcuts erzeugen
|
Seitenanfang |
| Gab es Fehlermeldungen? hast Du ein $sc->Close() mit im Code? Bitte mehr Infos...
Datum: 04.05.2007-18:40

|
re: schortcuts erzeugen
|
Seitenanfang |
Das Argument an den Konstruktur 'new' sollte ein vorhandener Shortcut sein, der dann ueber die 'Load'-Funktion geoeffnet wird. Das heiszt
my $sc = Win32::Shortcut->new('myshortcut.lnk');
ist das Gleiche wie
my $sc = Win32::Shortcut->new(); $sc->Load('myshortcut.lnk');
Wenn aber die Datei 'myshortcut.lnk' noch nicht vorhanden ist tritt ein Fehler auf und 'Load' bzw. 'new' liefern 'undef' zurueck, darauf solltest du auch pruefen. Da 'Load' fehlgeschlagen ist, enthaelt das Objekt auch keinen Dateinamen, so schlaegt auch 'Save' fehl, weil nicht bekannt ist wohin die Datei gespeichert werden soll. Loesung: Du musst Save den Dateinamen uebergeben. Aender deinen Code wie folgt ab
my $sc = Win32::Shortcut->new(); $sc->Path($arr[$x][4]); #Pfad\xxx.exe $sc->Save($arr[$x][3]) or die "Error on saving shortcut!";
Tipp: Wenn du fuer dich unbekannte Funktionen und Methoden verwendest, dann schau in die Dokumentation, siehe nach ob die Funktion in irgendeiner Weise einen Fehlercode zurueck gibt. Dann fuege eine entsprechende Fehlerbehandlung in dein Skript ein, in etwa so wie ich das oben getan habe. Nur wenn bekannt ist was fuer ein Fehler auftritt kann man dir hier im Forum schnell weiterhelfen, ansonsten kann es mit den Antworten schon etwas laenger dauern - wie man sehen kann.
Datum: 06.05.2007-12:36

|
re: schortcuts erzeugen
|
Seitenanfang |
damit ihr ein Klaren blick bekommt meine Shortcut funktion sieht so aus:sub SHORTCUT($@) { my ($label, $close, $cont, $yes, $no, $sc, $y); # Local my($x, @arr) = @_; # Input if (exists $arr[$x][4]) { # Run_index exists print "\nab Hier: 1\n"; $y = 3; if (-e $arr[$x][3]) { # Source_index exists print "\nab Hier: 2\n"; if (!Exists($tl)) { # already exist -> Window ( YesButton or NoButton ) print "\nab Hier: 3\n"; $cont=0; $tl = $mw->Toplevel(-title => "Warning"); $label = $tl->Label(-text => ("$arr[$x][3] already exist!\nOverwrite it?"), -height => 12, -width => 140,)->pack(); $yes = $tl->Button(-text =>"Yes",-command =>sub { $tl->destroy; $cont=1})->pack(-side => 'left'); $no = $tl->Button(-text =>"No",-command =>sub { $tl->destroy; })->pack(-side => 'right'); # Exit $tl -> waitWindow; if ($cont == 1) { print "\nab Hier: 4\n"; $sc = Win32::Shortcut->new($arr[$x][3]); #Pfad\xxx.lnk $sc -> Path($arr[$x][4]); #Pfad\xxx.exe $sc -> Save(); Stepdone($x,$y,@arr); } } else { print "\nab Hier: 5\n"; $tl->deiconify(); # exit this window $tl->raise(); # ignore/delete Exceptions } } elsif($arr[$x][3]eq '') { # Destination not found -> Window "Destination not found" print "\nab Hier: 6\n"; $tl = $mw->Toplevel(-title => "Error 003"); $label = $tl->Label(-text => (" $arr[$x][3]Destination not found! "), -height => 12, -width => 140,)->pack(); $close = $tl->Button(-text =>"Close",-command =>sub { $tl->destroy })->pack(); $tl -> waitWindow; Error003($arr[0][1]); # Call Error003() Stepfailed($x,$y,@arr); # Call Stepfailed } else { print "\nab Hier: 7\n"; $sc = Win32::Shortcut->new($arr[$x][3]); #Pfad\xxx.lnk $sc -> Path($arr[$x][4]); #Pfad\xxx.exe $sc -> Save($arr[$x][3]); Stepdone($x,$y,@arr); } } elsif($arr[$x][4]eq '') { # Comand not found -> Window "... Command not found" print "\nab Hier: 8\n"; $y = 4; $tl = $mw->Toplevel(-title => "Error 006"); $label = $tl->Label(-text => (" $arr[$x][4]Comand not found! "), -height => 12, -width => 140,)->pack(); $close = $tl->Button(-text =>"Close",-command =>sub { $tl->destroy })->pack(); $tl -> waitWindow; Error006($arr[0][1]); Stepfailed($x,$y,@arr); } else { # Run_index ($arr[0][4])does not exist -> Window "does not exist" print "\nab Hier: 9\n"; $y = 4; if (!Exists($tl)) { print "\nab Hier: 10\n"; $tl = $mw->Toplevel(-title => "Error"); $label = $tl->Label(-text => (" $arr[$x][4] does not exist! "), -height => 12, -width => 140,)->pack(); $close = $tl->Button(-text =>"Close",-command =>sub { $tl->destroy })->pack(); $tl -> waitWindow; Stepfailed($x,$y,@arr); } else { print "\nab Hier: 11\n"; $tl -> deiconify(); $tl -> raise(); } } }# sub Shortcut
Datum: 07.05.2007-09:48

|
re: schortcuts erzeugen
|
Seitenanfang |
| und nach dem Code ändern nach : $sc = Win32::Shortcut->new(); $sc->Path($arr[$x][4]); #Pfad\xxx.exe $sc->Save($arr[$x][3]) or die "Error on saving shortcut!"; bekomme ich: A subdirectory or file C:\Documents and Settings\All Users\Start Menu\Engineering Applications\PlatformUtilities already exists. Error on saving shortcut! at GetPlatforms.pl line 701. ;-(
Datum: 07.05.2007-10:20

|
re: schortcuts erzeugen
|
Seitenanfang |
ich habe es gefunden :-). funktioniert supa. danke euch trotzdem
Datum: 08.05.2007-10:04

|
re: schortcuts erzeugen
|
Seitenanfang |
Koenntest du fuer andere, die event. auf den gleichen Fehler stoszen, mitteilen was die Loesung des Problems ist?
Datum: 08.05.2007-10:06

|
re: schortcuts erzeugen
|
Seitenanfang |
Natürlich :-) die Lösung sieht bei mir so aus: $sc = Win32::Shortcut->new($arr[$x][3]); $sc->Path($arr[$x][4]); #Pfad\xxx.exe $sc->Save($arr[$x][3]); #Erfolgrich($x,$y,@arr);und im XmlFile muss die Direkte Adresse/URL gegeben sein: $arr[$x][4]= 'http://www.perlunity.de/sid192351711513/cgi-bin/forum/forum_thread.cgi?tid=19932&mid=40476&fid=8&pn=0' $arr[$x][3]='C:\SW_Homepage.lnk' Als Beispiel. ich hoffe dass es hilft
Datum: 09.05.2007-14:46

|
|

|

|

|
 |

|

|
|