相关疑难解决方法(0)

如何获取通知区域图标列表?

我正在尝试将代码添加到通知区域中可见的所有图标的列表中,在时间的左侧.我一直在试验,EnumDesktopWindowsGetWindowLong没有找到任何方法来挑出系统托盘图标.谢谢!

windows winapi taskbar

6
推荐指数
1
解决办法
1028
查看次数

如何获取具有系统托盘图标的进程

我正在尝试创建获取具有systray图标的进程列表的应用程序。
我搜索了很多,发现了一些参考文献:

  1. http://www.raymond.cc/blog/find-out-what-program-are-running-at-windows-system-tray/

  2. https://superuser.com/questions/708674/how-to-find-out-what-process-a-system-tray-icon-corresponds-to

  3. 哪个Windows进程正在显示给定的任务栏系统任务栏图标?

  4. https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/53e27f60-37af-406f-bbdc-45db2bd3dee6/how-to-find-a-system-tray-process

  5. https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/4c4f60ce-3573-433d-994e-9c17f95187f0/finding-which-applications-and-services-are-list-in-the-system-托盘?论坛=一般

  6. http://www.codeproject.com/Articles/10497/A-tool-to-order-the-window-buttons-in-your-taskbar

  7. 从系统任务栏中的图标获取工具提示文本

它们都是很好的资源,但对我来说最有用的是3和4。

1中,有一个我想要的例子。

我想要具有systray图标的进程列表:
在此处输入图片说明 名为“ AnVir任务管理器”的应用程序示例

使用链接6中的代码,我成功遍历了系统托盘按钮并看到每个按钮的文本:
在此处输入图片说明

但是我不确定如何找到与每个纸盘图标相关的过程。

他在代码项目中提到可以帮助识别过程的信息是,dwData但是问题是当我发现Systray中出现的按钮时,它的dwData = 0
在此处输入图片说明

码:

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SystrayIcons
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            Engine.findProcessInSystray();
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Engine.findProcessInSystray();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Engine.cs

using System;
using System.Collections.Generic;
using …
Run Code Online (Sandbox Code Playgroud)

c# c++ winapi taskbar

5
推荐指数
1
解决办法
1268
查看次数

标签 统计

taskbar ×2

winapi ×2

c# ×1

c++ ×1

windows ×1