D’oh!

 

I just saw that FindWindow() and SendMessage() are both listed in the “Common Methods” of the ActivePerl documentation. I apologize that I didn’t RTFM before posting!

 

However, I can’t figure out how to properly call the SendMessage() method. It requires an object reference, but how can I create an object reference to a window that isn’t mine?

 

#####################################################

 

use Win32::GUI;

 

my $windowToClose = Win32::GUI::FindWindow("PGPtray_Hidden_Window","PGPtray_Hidden_Window"); # This is a window started by another application

$windowToClose->Win32::GUI::SendMessage("WM_CLOSE",0,0); # This fails because $windowToClose is not an object reference.

 

#####################################################

 

Thanks,

Rob

 


From: Perl Rob [mailto:perlrob@comcast.net]
Sent: Wednesday, August 15, 2007 12:17 PM
To: 'Win32 GUI Users Mailing List'
Subject: FindWindow and SendMessage

 

Hi all,

 

I’m attempting to close a window using the FindWindow() and SendMessage() functions as documented in MSDN. I can’t get it to work, so I was wondering if anyone might help me see what’s wrong with my code:

 

######################################################

 

use Win32::API;

 

my $findWindow = Win32::API->new( 'user32', 'FindWindow', 'PP', 'P' );

my $sendMessage = Win32::API->new( 'user32', 'SendMessage', 'PIIN', 'P' );

 

my $windowToClose = $findWindow->Call("PGPtray_Hidden_Window","PGPtray_Hidden_Window");

$sendMessage->Call($windowToClose,"WM_CLOSE",0,0);

 

######################################################

 

In particular, I’m not sure whether I’m specifying the correct parameters for each method. (Should the parameters for FindWindow() be ‘PP’, with a return value of ‘P’? And should the parameters for SendMessage() be ‘PIIN’, with a return value of ‘P’?)

 

Thanks in advance,

Rob