我有一个运行无限循环的Perl脚本。我希望能够将其最小化到系统托盘中。我可以使用Win32::GUI
创建一个系统托盘图标,当最大化时会显示命令提示符和脚本输出吗?
编辑:我的perl脚本本身就是一个进程。它不断运行。如何将systray图标作为一个更加干净的过程运行?
答案 0 :(得分:3)
是的,你可以。
use Win32::GUI();
my $main = Win32::GUI::Window->new(
-name => 'Main',
-text => 'Perl',
-width => 200,
-height => 200
);
my $icon = new Win32::GUI::Icon('GUIPERL.ICO');
my $ni = $main->AddNotifyIcon(
-name => "NI",
-icon => $icon,
-tip => "Hello"
);
Win32::GUI::Dialog();
sub Main_Terminate {
return -1;
}
sub Main_Minimize {
$main->Disable();
$main->Hide();
return 1;
}
sub NI_Click {
$main->Enable();
$main->Show();
return 1;
}
复制自:
如果你想在不同的过程中使用托盘图标,可以使用fork()
,但是你需要一些方法来协商父子进程。
答案 1 :(得分:0)
我已经使用了ActiveState PerlTray组件,它对我来说效果很好。当然,这是一个商业产品,虽然价格合理(在我看来)。