sign in | join about | help | sitemap
Connecting Tech Pros Worldwide
Logan's Avatar

Get Executable name from Window Handle


Question posted by: Logan (Guest) on July 21st, 2005 09:45 PM
I need to get the executable name for window under the cursor. I feel like
my code is pretty close but the i never find a process.Handle that matches
the handle under my mouse.

here is my code:
public object ParentExecutable(IntPtr hWndUnderMouse)
{
object p = null;
System.Diagnostics.Process[] allProcesses =
System.Diagnostics.Process.GetProcesses();
for(int iii = 0; iii < allProcesses.Length; iii++)
{
try
{
if(((System.Diagnostics.Process)allProcesses[iii]).Handle ==
hWndUnderMouse)
{
p = ((System.Diagnostics.Process)allProcesses[iii]);
iii = allProcesses.Length;
}
}
catch{}
}
return p;
}
Thanks in advance for any help,
~Logan


2 Answers Posted
Logan's Avatar
Guest - n/a Posts
#2: Re: Get Executable name from Window Handle

I figured out what i needed to do. here is the new code


[DllImport("user32")]
public extern static int GetWindowThreadProcessId(
int hwnd,
ref int lpdwProcessId);
public object ParentExecutable(IntPtr hWnd)
{
object p = null;
int id = 0;
int i = UnManagedMethods.GetWindowThreadProcessId(hWnd.ToI nt32(),ref id);

System.Diagnostics.Process[] allProcesses =
System.Diagnostics.Process.GetProcesses();
for(int iii = 0; iii < allProcesses.Length; iii++)
{
try
{
if(((System.Diagnostics.Process)allProcesses[iii]).Id == id)
{
p = ((System.Diagnostics.Process)allProcesses[iii]);
iii = allProcesses.Length;
}
}
catch{}
}
return p;
}


"Logan" <logan@globalweb.net> wrote in message
news:uk2JRC9AFHA.3708@TK2MSFTNGP14.phx.gbl...[color=blue]
>I need to get the executable name for window under the cursor. I feel like
>my code is pretty close but the i never find a process.Handle that matches
>the handle under my mouse.
>
> here is my code:
> public object ParentExecutable(IntPtr hWndUnderMouse)
> {
> object p = null;
> System.Diagnostics.Process[] allProcesses =
> System.Diagnostics.Process.GetProcesses();
> for(int iii = 0; iii < allProcesses.Length; iii++)
> {
> try
> {
> if(((System.Diagnostics.Process)allProcesses[iii]).Handle ==
> hWndUnderMouse)
> {
> p = ((System.Diagnostics.Process)allProcesses[iii]);
> iii = allProcesses.Length;
> }
> }
> catch{}
> }
> return p;
> }
> Thanks in advance for any help,
> ~Logan
>
>[/color]


Mattias Sjögren's Avatar
Mattias Sjögren July 21st, 2005 09:45 PM
Guest - n/a Posts
#3: Re: Get Executable name from Window Handle

>I need to get the executable name for window under the cursor.

There's a Win32 API function GetWindowModuleFileName that does this.

[color=blue]
>I feel like
>my code is pretty close but the i never find a process.Handle that matches
>the handle under my mouse.[/color]

That's because window handles and process handles are different
things.



Mattias

--
Mattias Sjögren [MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
 
Not the answer you were looking for? Post your question . . .
196,832 members ready to help you find a solution.
Join Bytes.com

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 196,832 network members.
Post your question now . . .
It's fast and it's free

Popular Articles

Top Community Contributors