[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
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