Detecting active windows process

Hi,

Is there a way to detect if a specified program e.g. firefox.exe is
active / on top?

Thanks in advance

Danny H. wrote:

Is there a way to detect if a specified program e.g. firefox.exe is
active / on top?

One way is to use the GetForegroundWindow() Windows API. In case the
user is in a dialog window, you might need to step back through the
ownership chain to get the real main window. Then check the window class
name for the application’s main window, often that gives away the
application.

Best regards,

Jari W.

On 26 nov, 14:44, Jari W.
[email protected] wrote:

Best regards,

Jari W.

Thank you very much, this seems to work:
Win32API.new(“user32”,“GetForegroundWindow”,[],“N”).call

The only problem I have now is that the above example returns an
integer of a pointer / program id?
Now I have searched on google for an half an hour but I cannot find
out how to get the name of the process returned by the Win32API.

Thanks in advance

On Nov 26, 6:10 am, Danny H. [email protected] wrote:

Hi,

Is there a way to detect if a specified program e.g. firefox.exe is
active / on top?

require ‘sys/proctable’
require ‘win32/api’
include Win32
include Sys

GetForegroundWindow = API.new(‘GetForegroundWindow’, ‘V’, ‘L’,
‘user32’)
GetWindowThreadProcessId = API.new(‘GetWindowThreadProcessId’, ‘LP’,
‘L’, ‘user32’)

pid = [0].pack(‘L’)
hwnd = GetForegroundWindow.call
GetWindowThreadProcessId.call(hwnd, pid)
pid = pid.unpack(‘L’)[0]

p ProcTable.ps(pid).comm

Regards,

Dan