Hello,

I need a bit of help here:  I'm try to use the Win32::API module to
call WinAPI's PostMessage() or SendMessage() functions.  Please see below.

use constant;
use Win32:API;
..
..
..
use constant NULL => 0;
use constant WM_COPYDATA => 74;
use constant WM_USERKILL => 99999;
..
..
..

So, would a call to PostMessage() look like

my $PostMessage = new Win32::API "user32", "PostMessage", [qw(N N P P)], 'N';

or

my $PostMessage = new Win32::API "user32", "PostMessage", [qw(N N N
N)], 'N';


Then, how do I properly pack the COPYDATASTRUCT and then get a
pointer to the packed structure in order to pass it as a parameter
in the PostMessage() call?  Does the below bit of code appear
correct?  (Because it doesn't work.)

my $wparm = pack("I", NULL);
my $lpCopydatastruct = pack("III", WM_USERKILL, 4, NULL);
my $lparm = pack("P", $lpCopydatastruct);
my $lresult = $PostMessage->Call($hwnd, WM_COPYDATA, $wparm, $lparm);

Thanks in advance.

ACY

Reply via email to