Hi,
Is there a way to detect if a specified program e.g. firefox.exe is
active / on top?
Thanks in advance
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
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs