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

使用.NET 4将程序最小化到系统托盘的最简单方法

问题:使用.NET 4将程序最小化到系统托盘的最简单方法是什么?

答案

使用.NET 4将程序最小化到系统托盘的最简单方法是使用Microsoft's Taskbar API。以下是实现此操作的步骤:

  1. 在Visual Studio中创建一个新的Windows应用程序,并选择空白应用程序
  2. 在应用程序的App.xaml.cs文件中,添加以下代码:
代码语言:csharp
复制
using System.Runtime.InteropServices;
using Microsoft.Windows.Shell;

// 导入必要的命名空间
[assembly: ApplicationActivationManager(ActivationType = ApplicationActivationMode.SystemState)]
[assembly: ApplicationShutdownManager]

namespace YourNamespace
{
    class Program : ApplicationActivationManager
    {
        protected override bool OnStartup(EventArgs e)
        {
            // 获取任务栏的ShellFolder
            ShellFolder taskbarFolder = ShellFolder.FromParsingName(ParsingName);

            // 创建一个ShellLink对象,并设置目标路径
            ShellLink shellLink = new ShellLink();
            shellLink.TargetPath = Application.ExecutablePath;

            // 将ShellLink对象添加到任务栏文件夹
            taskbarFolder.Items.Add(shellLink);

            return true;
        }

        protected override void OnShutdown(ShutdownEventArgs e)
        {
            // 从任务栏文件夹中移除ShellLink对象
            ShellFolder taskbarFolder = ShellFolder.FromParsingName(ParsingName);
            taskbarFolder.Items.Remove(shellLink);

            base.OnShutdown(e);
        }
    }
}
  1. App.xaml文件中,设置应用程序的标题和图标:
代码语言:xaml
复制
<Application x:Class="YourNamespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:YourNamespace"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
             xmlns:local1="clr-namespace:YourNamespace.Properties"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
             xmlns:converter="clr-namespace:YourNamespace.Converters"
             xsi:schemaLocation="http://schemas.microsoft.com/winfx/2006/xaml/presentation http://schemas.microsoft.com/winfx/2006/xaml/presentation.xsd">
  <Application.Resources>
    <local:LocalizedStringsConverter x:Key="LocalizedStringsConverter"/>
  </Application.Resources>
</Application>
  1. Resources文件夹中创建一个名为LocalizedStringsConverter.cs的类,并添加以下代码:
代码语言:csharp
复制

using System;

using System.Globalization;

using System.Windows.Data;

using System.Windows.Markup;

// 导入必要的命名空间

assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "YourNamespace")

assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "YourNamespace")

namespace YourNamespace

{

代码语言:txt
复制
public class LocalizedStringsConverter : MarkupExtension, IValueConverter
代码语言:txt
复制
{
代码语言:txt
复制
    public LocalizedStringsConverter()
代码语言:txt
复制
    {
代码语言:txt
复制
        // 设置为True以显示本地化字符串,False以显示原始字符串
代码语言:txt
复制
        IsIncluded = true;
代码语言:txt
复制
    }
代码语言:txt
复制
    public override object ProvideValue(IServiceProvider serviceProvider)
代码语言:txt
复制
    {
代码语言:txt
复制
        return this;
代码语言:txt
复制
    }
代码语言:txt
复制
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
代码语言:txt
复制
    {
代码语言:txt
复制
        string text = value as string;
代码语言:txt
复制
        if (text == null)
代码语言:txt
复制
            return "";
代码语言:txt
复制
        // 从资源字符串中提取本地化字符串
代码语言:txt
复制
        string localizableText = Regex.Match(text, @"^\s*localizable:\s*(true|false)\s*").Groups[1].Value;
代码语言:txt
复制
        if (bool.
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET 多个程序集合并成单一程序 4+3 种方法

介绍这些方法原理并帮助你决定哪种方法最适合你想要使用场景。...四种方法 目前我已知 .NET 程序集与依赖合并到一起方法有下面四种: 使用 .NET Core 3.0 自带 PublishSingleFile 属性合并依赖 使用 Fody 使用 SourceYard...使用 .NET Core 3.0 这种自带发布单一 exe 方法会将你程序全部文件(包括所有依赖文件,包括非托管程序集,包括各种资源文件)全部打包一个 exe 中。...关于如何使用 SourceYard 制作一个源代码包方法可以阅读林德熙博客: SourceYard 制作源代码包 关于能够做出源代码包原理,可以阅读我博客: 入门篇: .NET Core 项目打一个简单...core 使用 CoreRT 程序编译为 Native 程序 使用 dnSpy dnSpy 支持添加一个模块程序集,也可以创建模块,还可以程序集转换为模块。

1K30

电脑软件:SmartSystemMenu(窗口置顶工具)介绍

二、软件用途SmartSystemMenu(窗口置顶工具),旨在帮助用户通过简单方式任意窗口进行置顶,从而使得窗口总在屏幕最前端显示,以便于查看与使用,与此同时,你还可以查看窗口句柄,窗口标题,窗口样式...四、功能介绍使用方法:SmartSystemMenu使用非常简单,运行后,默认就会显示在系统托盘中,不会显示任何界面,当你在软件窗口边框上右击,在弹出右键菜单中就可以看到SmartSystemMenu...复制所有窗口文本 (包括控制台、MS Office 产品等) 剪贴板中,同时支持清除剪贴板。系统托盘当前窗口最小化或挂起到系统托盘。按钮操作 :禁用最小化、最大化、关闭按钮其他窗口. ...四、功能介绍使用方法:SmartSystemMenu使用非常简单,运行后,默认就会显示在系统托盘中,不会显示任何界面,当你在软件窗口边框上右击,在弹出右键菜单中就可以看到SmartSystemMenu...复制所有窗口文本 (包括控制台、MS Office 产品等) 剪贴板中,同时支持清除剪贴板。系统托盘当前窗口最小化或挂起到系统托盘。按钮操作 :禁用最小化、最大化、关闭按钮其他窗口.

49640

解决duilib使用zip换肤卡顿问题(附资源集成程序操作方法

之前直接把z资源放到目录里或者把zip集成程序内部,都是没问题。但是如果要换肤就需要用到zip来压缩资源了。        ..., // 来自磁盘zip压缩包 UILIB_RESOURCE, // 来自资源 UILIB_ZIPRESOURCE, // 来自资源zip压缩包 };        使用磁盘文件是简单方法...,开发时选择这个方法,但是实际发布程序后为了资源保密就很少这样做了;使用zip文件也是常用方法,但是问题就在于资源比较多时界面就有明显卡顿;直接使用资源肯定是快速,但是这个方法就太繁琐了,需要逐个去处理每个资源...,用法见MenuDemo;使用资源zip压缩包,这个是我最常用,把资源压缩为zip然后集成程序中,这样不但可以保密资源,而且不会有卡顿现象。...在使用“资源zip压缩包”方法前提下,如果要换肤就使用如下函数,函数参数是新换皮肤资源ID,比如“IDR_ZIPRES2”,函数实际就是从程序资源中找到对应皮肤zip文件,并且调用对应SetResourceZip

1.5K40

一个.NET开源功能丰富、灵活易用 Windows 窗口增强神器

前言 通常情况下 Windows 中软件窗口界面一般只包含还原、移动、大小、最大化、最小化、关闭等几个基本操作: 今天大姚给大家推荐一个.NET开源、免费(MIT License)、功能丰富、灵活易用...系统托盘功能:最小化系统托盘。 启动程序:快速启动预先设置好程序,方便用户快速访问常用应用。 ...等更多实用功能。 支持系统 OS Windows XP SP3 及更高版本。...https://github.com/AlexanderPro/SmartSystemMenu 优秀项目和框架精选 该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解...C#、.NET和.NET Core领域最新动态和最佳实践,提高开发工作效率和质量。...坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀项目和框架不被埋没)。

8510

网课、在线会议等学术交流必备神器之ClickShow

就是那个无处安放鼠标图标有时候并不能很好展示自己实时操作,比如,鼠标点击是左键还是右键,使用了侧键前进还是侧键后退等等。...图1 ClickShow主界面 ClickShow设置界面也非常简介,使用者根据相关提示文本即可完成所需设置,如图2所示。...系统需求:Windows7 sp1+, .Net 4.7.2 版本(win10自带); ② 如需在任务管理器、开始菜单、以管理员身份启动窗口上生效,请将程序(1.3.1+版本)放到 C:\Windows...这时候程序会自动提升权限; ③ 程序启动后自动缩小到系统托盘; ④ 点击X最小化系统托盘; ⑤ 点击托盘图标打开主窗口,右键点击托盘图标打开菜单; 为了让伙伴们有一个直观感受,特地采用ScreenToGif...参考资料:github.com/cuiliang/clickshow 如需转载,请在公众号中回复“转载”获取授权,如未经授权擅自搬运抄袭,本公众号保留一切追责权利!

89640

使用.NET开发一个屏幕OCR工具

本文介绍使用.NET开发一款桌面截图 OCR 工具,软件已开源,地址:https://github.com/sangyuxiaowu/Snipping_OCR 背景 因为不同地方人们使用习惯不同,...所以我们竟然可能会遇到这样场景:按了截图快捷键却发现并没有任何反应,尝试了多次才意识 —— 没有开聊天软件。...软件实现 软件设计非常简单,通过调用 Windows 系统本身截图功能,在用户截图后,从剪贴板获取到图片后通过 PaddleOCRSharp 来进行 OCR 识别,然后结果输出。...得益于开源项目 PaddleOCRSharp[1] 对C++代码修改并封装.NET工具类库,我们可以方便在 .NET 项目中实现 OCR 功能。...Snipping_OCR 可以前往 Github 或 Gitee 下载 https://gitee.com/sang93/Snipping_OCR/releases/ 双击 Snipping_OCR.exe 启动软件,最小化按钮可将其最小化系统托盘

2.1K50

Win7系统中必需记住14个常用快捷键

2.Ctrl+Shift+双击鼠标左键:以管理员身份运行程序   在Win7中,一些程序可能需要“以管理员身份运行”才能正常使用。...右键菜单增加更多选项 4.Shift+右键:在当前文件夹用命令行打开   在windows开始>运行中输入cmd,可以打开命令行窗口。...而按住Shift键,再用鼠标右键点击某个文件夹,右键菜单中就会多出一个“在此处打开命令窗口”选项。 ? 在此处打开命令窗口   点击该项后可以打开命令行窗口,并且当前目录定位这个文件夹。...10.Win+B:光标定位系统托盘   按Win+B可以光标定位屏幕右下角系统托盘上,然后就可以用方向来选择系统托盘图标和时间了。...对当前窗口作用是最小化,另外一个最小化快捷键是Win+M。

1.3K10

Linux上为你任务创建一个自定义系统托盘指示器

本指导将会教你通过简单几个步骤来实现这一目的。 前置条件 我们将要用 Python 来实现一个自定义系统托盘指示器。...) /home//Videos/somevideo.mp4` 替换成你想要播放视频/音频文件路径。...可能性是无穷;比如我用这种方法来从网上获取数据(使用 urllib2 库)并显示出来。...比如 Steam 上 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通方法,我只是最小化窗口然后点击某个自建菜单项,它会执行 killall -9 csgo_linux64 命令...结论 你现在知道了如何为你想要任务创建自己系统托盘指示器了。根据每天需要运行任务性质和数量,此方法可以节省大量时间。

1.8K41

QT之Qml使用QSystemTrayIcon实现系统托盘

系统托盘图标,现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行应用程序可以在其中显示图标和短消息。...网上找到例子大多太凌乱,这里总结下提供个代码封装,方便后续用到了简单使用。  QT中实现这一功能使用QSystemTrayIcon,它为应用程序系统托盘中提供一个图标。...现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行应用程序可以在其中显示图标和短消息。 下面是一个SystemTrayIcon类封装,后面介绍它在Qml中简单使用。...,防止图标不消失 { m_systemTray->hide(); QApplication::exit(0); } 简单使用 首先需要在main函数中把自定义类注册Qml中,使用qmlRegisterType..._34055910博客-CSDN博客 Qt浅谈之三十系统托盘(QSystemTrayIcon)_乌托邦2号博客-CSDN博客 qt 之 QSystemTrayIcon(托盘程序整个例子)_比卡丘不皮博客

2.6K30

Fdog系列(四):使用Qt框架模仿QQ实现登录界面,界面篇。

自定义标题,隐藏任务栏标题,实现系统托盘显示 3. 美化主界面,文本框奇思妙想 4. 实现背景阴影 ---- 一....Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署服务器,web收尾篇。...,从第四篇开始,进入Qt阶段,我开始使用Qt继续进一步创造,带领大家一些知识进行综合。...自定义标题,隐藏任务栏标题,实现系统托盘显示 现在我们系统自动标题隐藏掉,使用我们自定义标题,在这之前,我们先把最小化,关闭按钮实现,虽然可以直接切后台~~~ 同样使用到水平布局,最小化,最大化按钮...除此之外任务栏也不显示程序标题,这正是我们想要,现在我们为这个窗口添加系统托盘,和QQ一样,我们将在系统托盘对其操作。 QSystemTrayIcon类可以帮助我们完成这一操作。

3.7K52

使用QT创建系统托盘

使用QT来创建一个系统托盘,事实上是一件很简单事。为什么这么说?一是因为QT文档给出了比较详细例子,二是QT结构比较优雅,设计风格统一。但是在动手之前,我们要从哪里下手?...第4行设置提示信息。这个提示信息出现在什么时候呢?就是当你鼠标放在系统托盘图标上时,它就会出现。一般设置为程序名称。第5行第13行设置上下文菜单项。这里总共设置了四项。...分别为缩小、放大、还原窗口和推出程序。每一个菜单项在创建后,我们就将其触发信号连接到指定槽函数。第1420行创建好菜单项添加到上下文菜单中去,搞定。第21行这个系统托盘显示出来。...否则在系统托盘看不到图标。 这时功能基本完成,程序在一启动时就可以在系统托盘区看到托盘图标。但是如果在上述构造函数中没有加showMessage()这个函数,将不会出现托盘气球提醒。...功能完成,再看看上下文菜单样子: ? 至此,简单系统托盘功能完成。

2.3K80

【C#】给无窗口进程发送消息

注:本文适用.net2.0+winform程序 一个winform程序,我希望它不能多开(但是如何防多开不是本文要讲),那么在用户启动第二个实例时候,作为第二个实例来说,大概可以有这么几种做法:...首先想到是调用ShowWindow、SetForegroundWindow等API,配合使用可以将被遮挡、最小化窗口前排显示出来,这也是很多涉及这种案例网文介绍方法,此法局限在于,目标进程主窗口必须存在...先说一下什么情况下进程会没窗口,很简单,让Form.Visible=false(或者Form.Hide(),等价)就行,此时窗体就消失了,既不可见,也没有对应任务栏按钮,alt+tab也切不出来。...那什么样程序会这么干,太多了好吧,各种音乐播放器,杀软什么,都允许【关闭/最小化系统托盘】,在你点叉或者最小化后,窗体就会隐藏,只留一个图标在托盘区。...回到问题【如何显示指定进程窗口】,如果你程序不允许关闭托盘区,始终存在窗口的话(最小化也是存在),那你愉快用ShowWindow、SetForegroundWindow等API就好,不用继续。

1.8K30

MFC子窗口任务栏显示图标和主窗口最小化系统托盘中显示图标

MFC子窗口任务栏显示图标很简单, 只需要在子窗口初期化函数OnInitDialog()中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 主窗口在系统托盘中显示图标以及恢复窗口是参考某位大神代码...(一)  原理     1、最小化原理:首先要将窗口隐藏,然后在右下角绘制图标。     ...2、恢复原理:窗口显示,再将托盘中图片删除。...LPARAM lParam)   函数体中增加一个命令响应                         if(nID==SC_MINIMIZE)  ToTray();           //最小化托盘函数...(三)具体函数内容     1、最小化托盘函数 void CMyDlg::ToTray()     {        NOTIFYICONDATA nid;        nid.cbSize=(DWORD

3K80

那些年我们开发应用程序

只支持本地音乐(mp3)文件播放,并且mp3文件名称中不能包含中文名称(这是一个遗憾,但整体体验效果是不错)。mp3_v2应用程序运行时候,可以最小化托盘,并且占用CUP资源非常少。...会给你带来音乐享受。 ? mp3 mp3应用程序是由java语言开发一款音乐(mp3)播放软件,只支持本地音乐(mp3)文件播放,很好支持中文。mp3应用程序运行时候,可以最小化托盘。...alarm_v2 alarm_v2应用程序是由java语言开发一款闹钟软件,简单UI设计,并且提供快速设定时间按钮(+/-1, +/-5, +/-30)。...alarm alarm应用程序是由java语言开发一款闹表软件,这是很早以前(大二时候)凭借自己兴趣开发闹表程序。alarm应用程序提供更换皮肤,系统托盘等功能。...screen-shot screen-shot应用程序是由java语言开发一款截图软件,程序有设计Maven应用。

49420

html 播放rtsp 流rtsp2rtmp

该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。...HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向。...RTSP是用来控制声音或影像多媒体串流协议,并允许同时多个串流需求控制,传输时所用网络通讯协定并不在其定义范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它语法和运作跟HTTP 1.1...---- 分享文章: 相关文章: ngix+uwsgi+django 以及阿里云rds数据库数据导入 基于ffmpegm3u8下载[调整key替换逻辑,更新解析逻辑] Windows 7中Live...Mail和Messenger最小化系统托盘 m3u8 下载工具[Windows] Syser Kernel Debugger v1.99.1900.1185 KeyGen win7去掉快捷方式小箭头正确方法

3.6K20
领券