我可以使用`Win32 :: GUI`为我的命令提示符Perl程序创建系统托盘图标吗?

时间:2010-10-20 07:02:14

标签: perl

我有一个运行无限循环的Perl脚本。我希望能够将其最小化到系统托盘中。我可以使用Win32::GUI创建一个系统托盘图标,当最大化时会显示命令提示符和脚本输出吗?

编辑:我的perl脚本本身就是一个进程。它不断运行。如何将systray图标作为一个更加干净的过程运行?

2 个答案:

答案 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;
}

复制自:

Win32-GUI Tutorial Part4

如果你想在不同的过程中使用托盘图标,可以使用fork(),但是你需要一些方法来协商父子进程。

答案 1 :(得分:0)

我已经使用了ActiveState PerlTray组件,它对我来说效果很好。当然,这是一个商业产品,虽然价格合理(在我看来)。