首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C Sharp中获取当前活动窗口的图标?

在C#中获取当前活动窗口的图标可以通过以下步骤实现:

  1. 首先,需要引用System.Runtime.InteropServices命名空间,以便使用Windows API函数。
  2. 使用GetForegroundWindow函数获取当前活动窗口的句柄。
  3. 使用GetWindowThreadProcessId函数获取当前活动窗口所属进程的ID。
  4. 使用OpenProcess函数打开进程,获取进程的句柄。
  5. 使用GetModuleFileNameEx函数获取进程的可执行文件路径。
  6. 使用ExtractIconEx函数获取进程的图标。
  7. 使用DestroyIcon函数释放图标资源。

下面是一个示例代码:

代码语言:txt
复制
using System;
using System.Drawing;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll")]
    private static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);

    [DllImport("kernel32.dll")]
    private static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);

    [DllImport("psapi.dll")]
    private static extern int GetModuleFileNameEx(IntPtr hProcess, IntPtr hModule, out string lpFilename, int nSize);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern bool DestroyIcon(IntPtr handle);

    [DllImport("shell32.dll", CharSet = CharSet.Auto)]
    private static extern int ExtractIconEx(string lpszFile, int nIconIndex, out IntPtr phiconLarge, out IntPtr phiconSmall, int nIcons);

    static void Main()
    {
        IntPtr hWnd = GetForegroundWindow();
        int processId;
        GetWindowThreadProcessId(hWnd, out processId);

        IntPtr hProcess = OpenProcess(0x0410, false, processId);
        string fileName;
        GetModuleFileNameEx(hProcess, IntPtr.Zero, out fileName, 1024);

        IntPtr hIconLarge, hIconSmall;
        ExtractIconEx(fileName, 0, out hIconLarge, out hIconSmall, 1);

        Icon icon = Icon.FromHandle(hIconSmall);
        // 使用图标进行操作...

        DestroyIcon(hIconLarge);
        DestroyIcon(hIconSmall);
    }
}

这段代码通过调用Windows API函数获取当前活动窗口的句柄和进程ID,然后打开进程并获取进程的可执行文件路径。最后,使用ExtractIconEx函数获取进程的图标,并将其转换为Icon对象进行操作。

请注意,这只是一个简单的示例代码,实际应用中可能需要进行错误处理和资源释放等操作。另外,获取到的图标可能是多个图标中的一个,可以根据需要进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

56秒

PS小白教程:如何在Photoshop中给灰色图片上色

1分10秒

PS小白教程:如何在Photoshop中制作透明玻璃效果?

22秒

PS使用教程:如何在Mac版Photoshop中新建A4纸?

1分26秒

PS小白教程:如何在Photoshop中完美合并两张图片?

4分32秒

PS小白教程:如何在Photoshop中使用蒙版工具插入图片?

2分29秒

基于实时模型强化学习的无人机自主导航

领券