P
Paul
Hi there. I'm still kind of new to scripting with Ruby. I have
written a small Ruby/Fox app that displays a message in a window at
regular intervals. The 'regular intervals' part is done using the
Windows Task Scheduler.
I'd like only one message window to appear at a time though. What I
am seeing is that if I step away from my computer for a few hours,
there can sometimes be several of these popup windows on the desktop.
I'd like the app to check (when it first starts up) to see if there
are any other instances of this popup window on the desktop, and if
so, just exit... or maybe kill the other window's process (I haven't
decided which yet).
I've found a few snippets of code that let me find the windows
processes and kill them (e.g. see below), but they don't work for me.
My popup window falls under the process name 'ruby.exe' even if the
window title says 'foo'.
Can someone please tell me if this is possible? How can I use Ruby to
find a specific window with a specific title? I don't want to just
kill all the ruby processes in case some other scripts are already
running that should be.
----
require 'win32ole'
mgmt = WIN32OLE.connect('winmgmts:\\\\.')
mgmt.InstancesOf("win32_process").each{ |proc|
puts proc.name
}
mgmt.ExecQuery("Select * from Win32_Process Where Name =
'ruby.exe'").each { |item|
# item.Terminate()
puts 'item = ' + item.to_s
}
----
written a small Ruby/Fox app that displays a message in a window at
regular intervals. The 'regular intervals' part is done using the
Windows Task Scheduler.
I'd like only one message window to appear at a time though. What I
am seeing is that if I step away from my computer for a few hours,
there can sometimes be several of these popup windows on the desktop.
I'd like the app to check (when it first starts up) to see if there
are any other instances of this popup window on the desktop, and if
so, just exit... or maybe kill the other window's process (I haven't
decided which yet).
I've found a few snippets of code that let me find the windows
processes and kill them (e.g. see below), but they don't work for me.
My popup window falls under the process name 'ruby.exe' even if the
window title says 'foo'.
Can someone please tell me if this is possible? How can I use Ruby to
find a specific window with a specific title? I don't want to just
kill all the ruby processes in case some other scripts are already
running that should be.
----
require 'win32ole'
mgmt = WIN32OLE.connect('winmgmts:\\\\.')
mgmt.InstancesOf("win32_process").each{ |proc|
puts proc.name
}
mgmt.ExecQuery("Select * from Win32_Process Where Name =
'ruby.exe'").each { |item|
# item.Terminate()
puts 'item = ' + item.to_s
}
----