Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Finding Process Name using Window Handle
Anukul Singhal
3/9/2009 8:05:00 PM
Hi,
In my project, I have a requirement to work with any client application
which I need to kill (if an instance exists) before invoking a fresh
instance. Currently, I have hardcoded the name of the process to
terminate a client before opening it. What I am looking for is a way to
find the process name (using any Win32API or using a Window Handle). I
found out how to get a Window Handle for the client application that is
invoked, is that something I can use to get the process name, or any
other way? Please see the code I am using:
def killApp
wmi = WIN32OLE.connect("winmgmts://")
processes = wmi.ExecQuery("select * from win32_process")
for process in processes do
if process.Name.include? "AppName.exe" then
process.Terminate
end
end
end
Would really appreciate your help.
Thanks,
Anukul
--
Posted via
http://www.ruby-...
.
2 Answers
daz
3/10/2009 3:22:00 AM
0
Ted Baker wrote:
> Hi all,
>
> I have successfully managed to implement the following apis
>
> findWindow=Win32API.new("user32.dll", "FindWindow", ['P','P'], 'N')
> sendMessage=Win32API.new("user32.dll", "SendMessage",['N','N','N','P'],
> 'N')
> getMenu=Win32API.new("user32.dll", "GetMenu", ['N'], 'N')
> getMenuItemCount=Win32API.new("user32.dll", "GetMenuItemCount",['N'],
> 'N')
> getSubMenu=Win32API.new("user32.dll", "GetSubMenu", ['N','N'], 'N')
> deleteMenu=Win32API.new("user32.dll", "DeleteMenu", ['N','N','N',],'N')
> drawMenuBar=Win32API.new("user32.dll", "DrawMenuBar", ['N'], 'N')
> setWindowLong=Win32API.new("user32.dll", "SetWindowLong",['N','N','N'],
> 'N')
>
> but am unable to get getMenuItemInfo to work, this is because it takes a
> type structure and boolean as parameters and i can't figure it out...
>
> this is what i have
>
> getMenuItemInfo =Win32API.new("user32.dll", "GetMenuItemInfo",
> ['L','L','NEED','NEED'], 'L')
>
> the api is as follows...
>
> BOOL GetMenuItemInfo(
> HMENU hMenu,
> UINT uItem,
> BOOL fByPosition,
> LPMENUITEMINFO lpmii
> );
>
> typedef struct tagMENUITEMINFO {
> UINT cbSize;
> UINT fMask;
> UINT fType;
> UINT fState;
> UINT wID;
> HMENU hSubMenu;
> HBITMAP hbmpChecked;
> HBITMAP hbmpUnchecked;
> ULONG_PTR dwItemData;
> LPTSTR dwTypeData;
> UINT cch;
> HBITMAP hbmpItem;
> } MENUITEMINFO, *LPMENUITEMINFO;
>
> any help greatly appreciated...
>
> Thanks
>
> Ted
Very late reply.
You should have been directed towards Ruby/DL in the
standard library.
This is now preferred to Win32API which is in the process
of being obsoleted.
http://www.jbrowse.com/text/r...
daz
daz
3/10/2009 3:27:00 AM
0
>>> Oops, that was to the wrong thread.
Anukul Singhal wrote:
> Hi,
>
> In my project, I have a requirement to work with any client application
> which I need to kill (if an instance exists) before invoking a fresh
> instance. Currently, I have hardcoded the name of the process to
> terminate a client before opening it. What I am looking for is a way to
> find the process name (using any Win32API or using a Window Handle). I
> found out how to get a Window Handle for the client application that is
> invoked, is that something I can use to get the process name, or any
> other way? Please see the code I am using:
>
> def killApp
> wmi = WIN32OLE.connect("winmgmts://")
> processes = wmi.ExecQuery("select * from win32_process")
> for process in processes do
> if process.Name.include? "AppName.exe" then
> process.Terminate
> end
> end
> end
>
> Would really appreciate your help.
>
> Thanks,
> Anukul
Hi,
I only looked briefly at this but you might find some clues
from solutions in other languages and be able to convert them
yourself.
http://forums.networkautomation.com/forum/messageview.cfm?FTVAR_FORUMVIEWTMP=Threaded&catid=4&thr...
http://www.purebasic.fr/english/viewtopic.php?p=264755&highlight=&sid=d3f90592c990c78a0c1039...
I hope this is more helpful than getting no reply :)
daz
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Finding Process Name using Window Handle
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password