Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WinAPI获取与正在运行的应用程序关联的图标_Winapi - Fatal编程技术网

使用WinAPI获取与正在运行的应用程序关联的图标

使用WinAPI获取与正在运行的应用程序关联的图标,winapi,Winapi,如果我知道Hwnd,如何获取正在运行的应用程序的图标?如果你有Hwnd,你可以使用WINAPI GetWindowThreadProcessId获取进程ID。 有了它,您可以创建一个C#进程对象。接下来,您可以迭代流程的ProcessModule集合以获取可执行文件的文件名。最后,您可以使用WINAPI函数ExtractIconEx从路径中获取图标 Pinvoke有关于这两种WINAPI方法的信息 如果您有窗口的手柄,您可以使用: 这只适用于某些应用程序(在Windows7下),如Steam、

如果我知道Hwnd,如何获取正在运行的应用程序的图标?

如果你有Hwnd,你可以使用WINAPI GetWindowThreadProcessId获取进程ID。 有了它,您可以创建一个C#进程对象。接下来,您可以迭代流程的ProcessModule集合以获取可执行文件的文件名。最后,您可以使用WINAPI函数ExtractIconEx从路径中获取图标

Pinvoke有关于这两种WINAPI方法的信息


如果您有窗口的手柄,您可以使用:


这只适用于某些应用程序(在Windows7下),如Steam、Firefox,但不适用于VisualStudio或Explorer、Skype。您还可以尝试使用WM_GETICON,如本例中所示,但这仍然只能为其他应用程序提供小图标。即使应用程序明显有更大的图标(如任务栏上),也许更好的方法是从应用程序exe文件中获取图标?链接断开了
HICON icon = (HICON)GetClassLong(window, GCL_HICON);