Thank you Robert, I`ll have a play with this later this week (dont hold your breath, I didnt even get around to looking at SetWindowsHookEx :) )

Steve


Robert May wrote:
Steve Loughran wrote:
 > I have seen several programs that have installed some
 > kind of "hotkey" event handler that the controlling program
 > is sent when triggered, even if the window is minimized,
 > or in the system tray, or does not currently have
 > keyboard/system focus. All the keyboard related items I can
 > find in the Win32::GUI docs only appear to work when the
 > program's window is active. How have these other programs
 > done this? Just a pointer to the correct call would would
 > be enough to keep me quiet for another week.. honest :)

I stumbled across this today. See the MSDN documentation for WM_SETHOTKEY and (if you want to do something other than activate the window) RegisterHotKey() - Hook()ing the WM_HOTKEY message. Note the comment in the code below about setting the modifiers.

Regards,
Rob.

#!perl -w
use strict;
use warnings;

use Win32::GUI 1.03_04, qw( WM_SETHOTKEY VK_A );

sub HOTKEYF_SHIFT()   {0x01}
sub HOTKEYF_CONTROL() {0x02}
sub HOTKEYF_ALT()     {0x04}
sub HOTKEYF_EXT()     {0x08}

my $mw = Win32::GUI::Window->new(
        -size => [400,300],
);

# $key: any virtual key except Esc, TAB, SPACE and a few others.
my $key = VK_A;
# $modifier: any combination of the HOTKEYF_* constants (or 0 for no modifier)
my $modifier = HOTKEYF_CONTROL;
# Watch out.  Despite what the MS documentation says the modifier
# goes in the upper byte of a short, not the upper WORD of a
# DWORD.  I.e. the left shift is 8 bits, not 16 bits
my $wParam = ($modifier << 8) + $key;

# Run this script and minimise the window.  Ctrl-A will restore the
# window and make it the foreground window
my $ret = $mw->SendMessage(WM_SETHOTKEY, $wParam, 0);
print "$ret \n";

$mw->Show();
Win32::GUI::Dialog();
__END__

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Perl-Win32-GUI-Users mailing list
Perl-Win32-GUI-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users
http://perl-win32-gui.sourceforge.net/


Reply via email to