Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Win32::Shortcut - странное поведение ярлыков


Автор: aksined 11.9.2008, 19:56
Добрый день
Код рабочий. Ярлыки создаются. Непонятный аспект:
Ярлыки для папок и ехе-шника работают адекватно.
А вот с ярлыками на файлы cmd что-то совсем непонятное. При клике по ним вроде бы ничего не происходит (ожидается открытие консольного окна). На самом деле скрипт запускается и отрабатывает то, что от него требуется. Если в конце поставить pause, то в менеджере задач висит процесс. Такое ощущение, что окно консоли просто скрыто (hidden). Если его активировать, то весь вывод цмд-шника в нём будет.
Если же открыть свойства ярлыка и произвести незначащие действия, например удалить комментарий, после этого ярлык ведёт себя нормально - при старте открывается окно консоли (всё как обычно).
Получается, что перл создаёт какой-то странный ярлык

Для полноты картины привожу полный листинг:
Код

#!perl -w
use strict;
use Win32::Shortcut;
my $target = $ARGV[0];
my %h = ( 'open' => 'open',
            'secret' => 'secret',
            'crypt.cmd' => 'зашифровать',
            'decrypt.cmd' => 'расшифровать',
            'notepad.exe' => 'блокнот',
        );
for my $cur (keys %h) {
    my $link = Win32::Shortcut->new();
    $link->{'Path'} = "$target\\$cur";
    $link->{'WorkingDirectory'} = "$target";
    $link->{'Description'} = $h{$cur};
    (my $path = $ENV{'userprofile'}) =~ s!\\!/!g;
    if(-d "$path/Desktop"){ $path .= '/Desktop' }
    elsif(-d "$path/Рабочий стол"){ $path .= '/Рабочий стол' }
    else {
        print "There isn't 'Desktop' in userprofile, therefore you should create links manually\nPress <Enter> for exit...";
        <>;
        exit;
    }
    $link->Save("$path/$cur.lnk");
    $link->Close();
}


Автор: nitr 12.9.2008, 01:03
Да, интересно. Проблема есть. А начинает работать ярлык при любом изменении ярлыка, т.е. когда вы применяете изменения, то Windows корректно записывает этот ярлык.lnk.

Добавлено через 12 минут и 51 секунду
Да и размер разный получается...

Добавлено через 13 минут и 10 секунд
Если никто не подскажет smile то пишите в bugtrack автору.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)