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
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]
>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.
|
|
|
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.
Top Community Contributors
|