Well, I answered my own question, so I thought I'd post the answer in case
it helps someone else who wants to close a window in this manner. Turns out
I had to create a quoted word list and add WM_CLOSE to it (as a part of my
"use Win32::GUI" line):
####################################################
use Win32::GUI qw( WM_CLOSE );
my $tray = Win32::GUI::FindWindow("PGPtray_Hidden_Window
","PGPtray_Hidden_Window");
Win32::GUI::SendMessage($tray,WM_CLOSE,0,0);
####################################################
To be perfectly honest, I don't understand *why* that fixed the problem, but
it did. I couldn't get any windows to close until I did that-now I can close
any window (that allows it) by finding its handle and sending it the
WM_CLOSE message.
-Rob
_____
From: Perl Rob [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 15, 2007 5:06 PM
To: 'Win32 GUI Users Mailing List'
Subject: RE: FindWindow and SendMessage
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:[EMAIL PROTECTED]
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
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
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/