What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » How to detect fullscreen application?

How to detect fullscreen application?
Author: Message:
V@no
Full Member
***

Avatar
sexy

Posts: 162
Joined: Mar 2004
O.P. How to detect fullscreen application?
Hello!

WLM by itself has compatibility to detect fullscreen application. Can we use that feature in our scripts?
Or is there another way detect it?

So far I could only find Detect Full Screen application topic, I've tried proposed code but it fails: when WMP is in fullscreen, it fails at GetWindowRect check, on PotPlayer it fails at IsIconic.

The code:
Javascript code:
// Check if full screen app is running
function IsFullScreenAppRunning ()
{
  var hWnd = Interop.Call('user32', 'GetForegroundWindow');
 
  if(!hWnd)
  {
    Debug.Trace(1);
    return false;
  }
 
  if(!Interop.Call('user32', 'IsWindowVisible', hWnd) || Interop.Call('user32', 'IsIconic', hWnd) || !Interop.Call('user32', 'IsZoomed', hWnd))
  {
    Debug.Trace(2 + " | " + Interop.Call('user32', 'IsWindowVisible', hWnd) + " | " +Interop.Call('user32', 'IsIconic', hWnd) + " | " +Interop.Call('user32', 'IsZoomed', hWnd));
    return false;
  }
 
  var rc;
 
  if(!Interop.Call('user32', 'GetWindowRect', hWnd, rc))
  {
    Debug.Trace(3);
    return false;
  }
  Debug.Trace(4 + " | " + rc.right + " | " + rc.left + " | " + Interop.Call('user32', 'GetSystemMetrics', SM_CXSCREEN));
  return (rc.right - rc.left  >= Interop.Call('user32', 'GetSystemMetrics', SM_CXSCREEN) &&  rc.bottom - rc.top >= Interop.Call('user32', 'GetSystemMetrics', SM_CYSCREEN));
}


Any help would be appreciated.

Thank you.
11-28-2010 05:25 PM
Profile PM Find Quote Report
Matti
Elite Member
*****

Avatar
Script Developer and Helper

Posts: 1646
Reputation: 39
31 / Male / Flag
Joined: Apr 2004
RE: How to detect fullscreen application?
Your conversion from C++ is faulty. There are no structure types (RECT) or pass-by-reference operators (&) in JScript. Also, you can't access structure members using "rc.left" or "rc.top". I suggest you learn more about Interop and DataBloc before attempting to do such conversions.

Anyway, to get you started, I tried to convert the snippet from that thread to JScript. I didn't test whether this actually works, but it shows the principles. Have a go with it and see if you can work out the rest.
Javascript code:
var SM_CXSCREEN = 0;
var SM_CYSCREEN = 1;
 
function IsFullScreenAppRunning() {
    var hWnd = Interop.Call('user32', 'GetForegroundWindow');
 
    if(!hWnd)
        return false;
 
    if(!Interop.Call('user32', 'IsWindowVisible', hWnd) || Interop.Call('user32', 'IsIconic', hWnd) || !Interop.Call('user32', 'IsZoomed', hWnd))
        return false;
 
    var rc = Interop.Allocate(16);
    if(!Interop.Call('user32', 'GetWindowRect', hWnd, rc))
        return false;
       
    var width = rc.ReadDWORD(8) - rc.ReadDWORD(0);
    var height = rc.ReadDWORD(12) - rc.ReadDWORD(4);
 
    return (width >= Interop.Call('user32', 'GetSystemMetrics', SM_CXSCREEN) && height >= Interop.Call('user32', 'GetSystemMetrics', SM_CYSCREEN));
}

Plus! Script Developer | Plus! Beta Tester | Creator of Countdown Live | Co-developer of Screenshot Sender 5

Found my post useful? Rate me!
11-28-2010 06:13 PM
Profile E-Mail PM Web Find Quote Report
V@no
Full Member
***

Avatar
sexy

Posts: 162
Joined: Mar 2004
O.P. RE: RE: How to detect fullscreen application?
Thank you.
The code some-what working, but not with every fullscreen applications. For example in some cases it still fails recognize WMP (Windows Media Player) or firefox (via F11 key), but it works fine on PotP...

P.S.
In code from the original topic seems to be bad logic when checking if window is maximized. Instead of
Javascript code:
if(!Interop.Call('user32', 'IsWindowVisible', hWnd) || Interop.Call('user32', 'IsIconic', hWnd) || !Interop.Call('user32', 'IsZoomed', hWnd))


it should be:
Javascript code:
if(!Interop.Call('user32', 'IsWindowVisible', hWnd) || Interop.Call('user32', 'IsIconic', hWnd) || Interop.Call('user32', 'IsZoomed', hWnd))


11-28-2010 08:18 PM
Profile PM Find Quote Report
Matti
Elite Member
*****

Avatar
Script Developer and Helper

Posts: 1646
Reputation: 39
31 / Male / Flag
Joined: Apr 2004
RE: How to detect fullscreen application?
As I said, I literally converted what was in that post to JScript. I'll let you play with it and see if you can get it working the way you want. :)
Plus! Script Developer | Plus! Beta Tester | Creator of Countdown Live | Co-developer of Screenshot Sender 5

Found my post useful? Rate me!
11-28-2010 08:52 PM
Profile E-Mail PM Web Find Quote Report
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On