RE: MainWindow focus

"Jack D." <[email protected]> Fri, 19 May 2006 15:12:40 -0600
Newsgroups gmane.comp.lang.perl.tk
Message-ID <[email protected]>
> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]] On Behalf Of listmail
> Sent: May 19, 2006 8:27 AM
> To: [email protected]
> Subject: MainWindow focus
> 
> Pardon me for the lack of better terminology.  I need to 
> determine from within a Tk application if it is currently the 
> top level task/process in Windows.  I suppose I mean that 
> MainWindow is currently focused instead of any other windows 
> application.  I am not finding a method that I could use such 
> as in Tk:Widget.  Is this something that needs/can be 
> acheived with an API call?

###################################################
use Tk;
use Win32::API;
use strict;

my $fgwindow='';
my $mw=tkinit;
my $label = $mw->Label(-textvariable=>\$fgwindow)->pack;
$mw->Button(-command=>sub{$mw->destroy},-text=>'Quit')->pack;
$mw->idletasks; #necessary on win32 to get decorative frame
my $ID = hex($mw->frame);
my $API = new Win32::API('user32','GetForegroundWindow','', 'N');
$mw->repeat(500,\&getFgWindow);
MainLoop;

sub getFgWindow {
  my $handle = $API->Call;
  if ($handle == $ID) {
     $fgwindow = "Tk Window has focus";
  }
  else {
     $fgwindow = $handle;
  }
}
###################################################

--
Jack
-++**==--++**==--++**==--++**==--++**==--++**==--++**==
This message was posted through the Stanford campus mailing list
server.  If you wish to unsubscribe from this mailing list, send the
message body of "unsubscribe ptk" to [email protected]