使用WinAPI获取与正在运行的应用程序关联的图标
如果我知道Hwnd,如何获取正在运行的应用程序的图标?如果你有Hwnd,你可以使用WINAPI GetWindowThreadProcessId获取进程ID。 有了它,您可以创建一个C#进程对象。接下来,您可以迭代流程的ProcessModule集合以获取可执行文件的文件名。最后,您可以使用WINAPI函数ExtractIconEx从路径中获取图标 Pinvoke有关于这两种WINAPI方法的信息使用WinAPI获取与正在运行的应用程序关联的图标,winapi,Winapi,如果我知道Hwnd,如何获取正在运行的应用程序的图标?如果你有Hwnd,你可以使用WINAPI GetWindowThreadProcessId获取进程ID。 有了它,您可以创建一个C#进程对象。接下来,您可以迭代流程的ProcessModule集合以获取可执行文件的文件名。最后,您可以使用WINAPI函数ExtractIconEx从路径中获取图标 Pinvoke有关于这两种WINAPI方法的信息 如果您有窗口的手柄,您可以使用: 这只适用于某些应用程序(在Windows7下),如Steam、
如果您有窗口的手柄,您可以使用:
这只适用于某些应用程序(在Windows7下),如Steam、Firefox,但不适用于VisualStudio或Explorer、Skype。您还可以尝试使用WM_GETICON,如本例中所示,但这仍然只能为其他应用程序提供小图标。即使应用程序明显有更大的图标(如任务栏上),也许更好的方法是从应用程序exe文件中获取图标?链接断开了
HICON icon = (HICON)GetClassLong(window, GCL_HICON);