perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 15
Click for quality!




11.02.2012 / 22:28

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragschortcuts 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

Beitragre: schortcuts erzeugen
Seitenanfang
Gab es Fehlermeldungen?

hast Du ein $sc->Close() mit im Code?

Bitte mehr Infos...

Datum: 04.05.2007-18:40

Beitragre: 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

Beitragre: 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

Beitragre: 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

Beitragre: schortcuts erzeugen
Seitenanfang
ich habe es gefunden :-).
funktioniert supa.
danke euch trotzdem

Datum: 08.05.2007-10:04

Beitragre: 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

Beitragre: 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

-






-
-