国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【W(wǎng)inUI 3】用H.NotifyIcon顯示系統(tǒng)任務欄(托盤)圖標,實現(xiàn)程序后臺運行

這篇具有很好參考價值的文章主要介紹了【W(wǎng)inUI 3】用H.NotifyIcon顯示系統(tǒng)任務欄(托盤)圖標,實現(xiàn)程序后臺運行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言&問題背景

Windows平臺上很多需要持續(xù)后臺運行的程序,都有顯示任務欄圖標的需求,主要來顯示狀態(tài)信息、提供功能菜單欄。但UWP或Windows App SDK并沒有提供對應的API,相反可能是在有意的抑制此項功能,我有理由懷疑是微軟的戰(zhàn)略布局。

但很顯然,這項功能目前并不能有其它完美的替代解決方案,所以需要借助其它手段調(diào)用Win32 API實現(xiàn)。確實如此,GitHub中H.NotifyIcon庫就幫助我們在WPF和WinUI平臺上實現(xiàn)了。我們只需使用其NuGet包即可顯示自己的任務欄圖標。

但請注意,UWP程序強調(diào)生命周期管理,在后臺期間會自動掛起。在官方的文檔中,UWP確實有“在后臺無限期運行”的解決方案,但一經(jīng)使用則不能發(fā)布到Microsoft Store。為了響應其設計理念、也因為作者確實此方面涉足不深,本篇文章不探討UWP平臺的任務欄圖標功能或后臺運行功能。

解決方案

在NuGet源中,找到H.NotifyIcon包,根據(jù)你的需要選擇H.NotifyIcon.WinUIH.NotifyIcon.Uno等包并安裝。
注意,根據(jù)項目實例和自述文件,可以有多種聲明與使用方法

  1. 直接全部在MainWindow內(nèi)聲明
<Window 
	...
	xmlns:tb="using:H.NotifyIcon"
	>
	<Grid>
		<Grid.Resources>
	        <MenuFlyout x:Key="TrayContextFlyout">
	            <MenuFlyoutItem Command="{StaticResource XamlUICommand類指令}" />
	            <MenuFlyoutSeparator />
	            <MenuFlyoutItem Command="{StaticResource XamlUICommand類指令}" />
	        </MenuFlyout>
	    </Grid.Resources>
	    <tb:TaskbarIcon
	    	x:Name="TrayIconView"
	        ToolTipText="懸停時顯示的提示語文字,如ToolTip"
	        IconSource="圖標文件路徑,如/Images/TrayIcons/Logo.ico"
	        ContextMenu="ContextMenu資源,如{StaticResource TrayMenu}"
	        MenuActivation="顯示菜單欄的行為,如LeftOrRightClick"
	        TrayPopup="彈出窗口資源,如{StaticResource TrayStatusPopup}"
	        PopupActivation="顯示彈出窗口的行為,如DoubleClick"
	        LeftClickCommand="左鍵單擊執(zhí)行的命令,如{StaticResource Command}"
	        ContextMenuMode="SecondWindow"
	        NoLeftClickDelay="True"
	        />
	</Grid>
</Window>
  1. 定義一個UserControl,再在MainWindow使用
<Window 
   ...
   xmlns:views="using:UserControl所在命名空間"
   >
   <Grid>
   		...
   		<views:TrayIconView x:Name="TrayIconView" />
   </Grid>
</Window>
<UserControl ... >
    <UserControl.Resources>
       <MenuFlyout x:Key="TrayContextFlyout">
	        <MenuFlyoutItem Command="{StaticResource XamlUICommand類指令}" />
	        <MenuFlyoutSeparator />
	        <MenuFlyoutItem Command="{StaticResource XamlUICommand類指令}" />
	    </MenuFlyout>
    </UserControl.Resources>

    <tb:TaskbarIcon
	        ToolTipText="懸停時顯示的提示語文字,如ToolTip"
	        IconSource="圖標文件路徑,如/Images/TrayIcons/Logo.ico"
	        ContextMenu="ContextMenu資源,如{StaticResource TrayMenu}"
	        MenuActivation="顯示菜單欄的行為,如LeftOrRightClick"
	        TrayPopup="彈出窗口資源,如{StaticResource TrayStatusPopup}"
	        PopupActivation="顯示彈出窗口的行為,如DoubleClick"
	        LeftClickCommand="左鍵單擊執(zhí)行的命令,如{StaticResource Command}"
	        ContextMenuMode="SecondWindow"
	        NoLeftClickDelay="True"
	        />
</UserControl>

個人更推薦第二種方法,這樣不讓主窗口文件顯得臃腫,方便維護。
注意替換以上文字部分,要自行在Resources部分定義XamlUICommand指令并在MenuFlyoutItem中使用。

注意:在退出(Window Closed或自定義退出命令中)程序時,要調(diào)用TrayIconView.Dispose()方法。
注意:在退出(Window Closed或自定義退出命令中)程序時,要調(diào)用TrayIconView.Dispose()方法。
注意:在退出(Window Closed或自定義退出命令中)程序時,要調(diào)用TrayIconView.Dispose()方法。

這里補充說明一下以上文字部分的注釋:

  • XamlUICommand類指令,直接定義在菜單欄中顯示的圖標、標簽內(nèi)容等的自定義命令,可在WinUI示例代碼找到說明。
  • ContextMenuMode="SecondWindow"指定了菜單欄顯示模式?!癝econdWindow”指創(chuàng)建新的窗口覆蓋Win32菜單欄,以使用WinUI風格設計的菜單欄。
    注意:作者在指定到本模式時,在Window代碼中注冊Activated等事件會產(chǎn)生運行時錯誤,因為H.NotifyIcon也會對UI元素事件進行注冊,見issue #37。因此你需要將注冊到這些事件的代碼移動到App.xaml.cs或刪除本項屬性,則會默認僅使用Win32風格菜單欄(不自動再創(chuàng)建窗口)。
    【W(wǎng)inUI 3】用H.NotifyIcon顯示系統(tǒng)任務欄(托盤)圖標,實現(xiàn)程序后臺運行

至此,題目的問題已經(jīng)得到解決。
本篇博客有待更新,H.NotifyIcon提供了更多實用方法和屬性,包括XAML生成托盤圖標、以效率模式隱藏窗口到后臺等,讀者可以自行從文首的GitHub鏈接到倉庫探索。

總結&反思

WinUI沒有提供系統(tǒng)托盤圖標的API,所以要調(diào)用H.NotifyIcon這類庫來實現(xiàn)。
我本人十分欣賞這個項目,它可以用窗口覆蓋的形式,應用WinUI風格的菜單欄到托盤圖標,看起來符合Fluent Design設計語言,而不是老式的Win32風格。

非常感謝H.NotifyIcon的作者,從本項目可以看見很多可以讓項目更符合Windows 11語言的新奇點子,暫時介紹不完了。文章來源地址http://www.zghlxwxcb.cn/news/detail-459744.html

到了這里,關于【W(wǎng)inUI 3】用H.NotifyIcon顯示系統(tǒng)任務欄(托盤)圖標,實現(xiàn)程序后臺運行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Windows 10桌面右下角時間圖標添加秒鐘顯示&右下角系統(tǒng)時間添加星期幾

    Windows 10桌面右下角時間圖標添加秒鐘顯示&右下角系統(tǒng)時間添加星期幾

    1.在桌面上按 “Win+R” 打開運行窗口,輸入 “ regedit ” 點確定; 2.在注冊表中進入 “ HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerAdvanced ” 這個目錄下; 3.在空白處單擊鼠標右鍵新建 “ DWORD(32位)值 \\\"; 4.把新建的數(shù)值名稱修改為 ” ShowSecondsInSystemClock “ ,并且數(shù)值

    2024年02月16日
    瀏覽(34)
  • Django實戰(zhàn)項目-學習任務系統(tǒng)-查詢列表分頁顯示

    Django實戰(zhàn)項目-學習任務系統(tǒng)-查詢列表分頁顯示

    接著上期代碼框架,6個主要功能基本實現(xiàn),剩下的就是細節(jié)點的完善優(yōu)化了。 接著優(yōu)化查詢列表分頁顯示功能,有很多菜單功能都有查詢列表顯示頁面情況,如果數(shù)據(jù)量多,不分頁顯示的話,頁面展示效果就不太好。 本次增加查詢列表分頁顯示功能,對一個查詢列表功能進

    2024年02月05日
    瀏覽(21)
  • win10系統(tǒng)任務欄不顯示已開啟的軟件-解決辦法

    win10系統(tǒng)任務欄不顯示已開啟的軟件-解決辦法

    首先我們要排除是否是任務欄屬性被關閉: 如果不是設置問題,那我們需要去任務管理器里看看: 查看explorer.exe是否開啟,要求應該是關閉狀態(tài)。 之后應該是不能通過win+R來啟動“運行”來輸入cmd了,我們可以通過任務管理器: 來喚醒dos窗口在里面直接輸入: reg add HKCUS

    2024年02月11日
    瀏覽(22)
  • 如何在Windows系統(tǒng)中檢測和結束運行中的程序(任務管理器顯示運行程序可能有bug)

    如何在Windows系統(tǒng)中檢測和結束運行中的程序(任務管理器顯示運行程序可能有bug)

    在Windows系統(tǒng)的日常使用和管理過程中,我們經(jīng)常需要檢測某個程序是否正在運行,并在必要時結束它。本文將詳細介紹如何在Windows系統(tǒng)中檢測運行中的程序,并提供多種方法來結束這些程序。 1. 任務管理器 最直觀的方法是使用任務管理器。通過按下 Ctrl + Shift + Esc 快捷鍵,

    2024年02月21日
    瀏覽(13)
  • Win10系統(tǒng)更新后【開機黑屏/白屏,不顯示桌面,但是鼠標和任務管理器都好使】問題的解決

    Win10系統(tǒng)更新后【開機黑屏/白屏,不顯示桌面,但是鼠標和任務管理器都好使】問題的解決

    如題,這個問題我碰到好幾次了。解決方法就是啟動explorer.exe??梢詤⒖既缦戮W(wǎng)址: win10啟動后黑屏只有鼠標是什么原因_windows10開機后黑屏只有鼠標如何解決-windows系統(tǒng)之家 ? 最近更新之后發(fā)現(xiàn)剛開機殺毒軟件(火絨)跳出一個攔截,然后就沒有桌面了。查看安全日志: 問題原

    2024年02月22日
    瀏覽(28)
  • wpf增加系統(tǒng)托盤圖標

    wpf增加系統(tǒng)托盤圖標

    使用系統(tǒng)托盤,可以為用戶提供一個簡便快捷的操作習慣。 wpf中增加系統(tǒng)托盤圖標有2種 第一種,使用Hardcodet.NotifyIcon.Wpf開源組件 1.建立一個wpf程序 2.安裝Hardcodet.NotifyIcon.Wpf 3.增加圖片 圖片選擇資源,否則獲取不到路徑 4.界面前臺代碼 其中此處可以重寫MenuItem的樣式,以及其

    2024年02月10日
    瀏覽(30)
  • Electron 系統(tǒng)托盤圖標

    一、在入口文件electron.js中引入 Tray , Menu , nativeImage 二、在初始化完成后添加圖片

    2024年02月12日
    瀏覽(20)
  • Win11其他系統(tǒng)托盤圖標清除無效項

    Win11其他系統(tǒng)托盤圖標清除無效項

    【問題描述】 “個性化任務欄其他系統(tǒng)托盤圖標”中存在無效的應用項 圖片來源 【解決方案】 win+R ,輸入 regedit 打開注冊表編輯器 進入路徑: HKEY_CLASSES_ROOTLocal SettingsSoftwareMicrosoftWindowsCurrentVersionTrayNotify 刪除其中的 IconStream 和 PastIconStream 兩項 打開任務管理器,找到

    2024年02月11日
    瀏覽(105)
  • [ Windows 10 ] 任務欄按鈕不顯示正在打開的窗口了(打開任何程序任務欄圖標按鈕都不顯示)

    [ Windows 10 ] 任務欄按鈕不顯示正在打開的窗口了(打開任何程序任務欄圖標按鈕都不顯示)

    系統(tǒng)是Windows 10 professional版本,在一次突然開機后,發(fā)現(xiàn)點開程序后,在任務欄什么都不顯示,任務欄按鈕和圖標狀態(tài)均不顯示了,但是程序在運行。 當時兄弟們我心態(tài)直接蹦了啊,100萬個草泥馬根本停不下來,口里不斷重復學習英文單詞: what\\\'s the f**king going on? 異常情況如

    2024年02月04日
    瀏覽(24)
  • EditText不顯示系統(tǒng)鍵盤,可用來顯示自定義的鍵盤

    EditText不顯示系統(tǒng)鍵盤,可用來顯示自定義的鍵盤

    系統(tǒng)鍵盤 包含普通鍵盤和現(xiàn)在很多ROM定制的密碼安全鍵盤 調(diào)用已下方法即可解決: https://developer.android.google.cn/reference/android/widget/TextView#setShowSoftInputOnFocus(boolean) 但是,此方法是API 21Android 5.0加入的, 所以為了兼容低版本, 建議使用已下方法: ?public static final boolean notShowSoftInput

    2024年04月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包