最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 顯示、隱藏窗口對(duì)應(yīng)的任務(wù)欄

 更新時(shí)間:2021年10月02日 08:20:20   作者:唐宋元明清2188  
WPF中全屏窗口,會(huì)自動(dòng)隱藏任務(wù)欄,那非全屏窗口如何隱藏任務(wù)欄?甚至有沒有一種場(chǎng)景,隱藏任務(wù)后自定義一套系統(tǒng)任務(wù)欄來顯示?這篇文章主要介紹了C# 顯示、隱藏窗口對(duì)應(yīng)的任務(wù)欄,需要的朋友可以參考下

WPF中全屏窗口,會(huì)自動(dòng)隱藏任務(wù)欄。

那非全屏窗口如何隱藏任務(wù)欄?甚至有沒有一種場(chǎng)景,隱藏任務(wù)后自定義一套系統(tǒng)任務(wù)欄來顯示?

以下會(huì)分階段講述一些概念,任務(wù)欄、查找窗口、控制窗口顯示。

1. 主屏任務(wù)欄

任務(wù)欄,其實(shí)也是一個(gè)窗口,主屏的任務(wù)欄名稱是"Shell_TrayWnd"。

所以可以通過名稱查找窗口,然后對(duì)窗口進(jìn)行顯示、隱藏操作。

以下是主屏幕任務(wù)欄的控制操作:

public static class ScreenTaskBar
    {
        private const int SwHide = 0; //隱藏窗口
        private const int SwRestore = 9;//還原窗口

        [DllImport("user32.dll")]
        private static extern int ShowWindow(int hwnd, int nCmdShow);
        [DllImport("user32.dll")]
        private static extern int FindWindow(string lpClassName, string lpWindowName);
        /// <summary>
        /// 顯示任務(wù)欄
        /// </summary>
        public static void Show()
        {
            ShowWindow(FindWindow("Shell_TrayWnd", null), SwRestore);
        }
        /// <summary>
        /// 隱藏任務(wù)欄
        /// </summary>
        public static void Hide()
        {
            ShowWindow(FindWindow("Shell_TrayWnd", null), SwHide);
        }
    }

2.多屏任務(wù)欄

如果是多屏,對(duì)任務(wù)欄進(jìn)行處理的場(chǎng)景,一般是對(duì)窗口所對(duì)應(yīng)的任務(wù)欄操作。

如何獲取任意窗口所在的任務(wù)欄呢?既然任務(wù)欄也是窗口,那么我們的關(guān)注點(diǎn)就是如何找到任務(wù)欄窗口了。

User32有EnumWindows函數(shù),可以遍歷當(dāng)前電腦的所有窗口。

 private delegate bool EnumWindowProc(IntPtr hWnd, int lParam);
     [DllImport("user32")]
    private static extern bool EnumWindows(EnumWindowProc lpEnumFunc, int lParam);

EnumWindowProc定義了委托的處理。添加回調(diào)方法,返回的參數(shù)是句柄信息:

bool OnEnumWindow(IntPtr hWnd, int lparam)
     {
        //添加代碼XXX
         return true;
     }

然后可以在回調(diào)內(nèi)部添加代碼,根據(jù)窗口的句柄信息,我們?nèi)ツ么翱诘囊恍┬畔?,類名、窗口?biāo)題、窗口的Bounds(位置、大?。?/p>

[DllImport("user32")]
    private static extern int GetClassName(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
    [DllImport("user32")]
    private static extern int GetWindowText(IntPtr hWnd, StringBuilder lptrString, int nMaxCount);
    [DllImport("user32")]
    private static extern bool GetWindowRect(IntPtr hWnd, ref LPRECT rect);

以下是部分遍歷出來的窗口類信息:

所以,可以篩選出那些以TrayWnd字符串結(jié)尾的,這些都是任務(wù)欄窗口。

之后就是如何篩選出我們想要的任務(wù)欄,即窗口對(duì)應(yīng)的任務(wù)欄。

窗口與任務(wù)欄,是通過屏幕關(guān)聯(lián)在一起的。通過窗口獲取當(dāng)前屏幕信息,任務(wù)欄的Bounds如果與屏幕Bounds相交,則說明此任務(wù)欄在此屏幕內(nèi)。

 var intPtr = new WindowInteropHelper(window).Handle;//獲取當(dāng)前窗口的句柄
     var screen = Screen.FromHandle(intPtr);//獲取當(dāng)前屏幕
     var currentScreenBounds = screen.Bounds;
     var taskBars = windows.Where(i => i.ClassName.Contains("TrayWnd"));
     var currentTaskBar = taskBars.FirstOrDefault(i => i.Bounds.IntersectsWith(currentScreenBounds));

獲取任務(wù)欄,也可以通過任務(wù)欄的句柄獲取屏幕,與主窗口所在屏幕判斷是否同一個(gè)。

獲取了指定的任務(wù)欄信息后,我們就可以控制任務(wù)欄顯示、隱藏了。調(diào)用下user32下函數(shù)ShowWindow即可:

private const int SwHide = 0; //隱藏窗口
    private const int SwRestore = 9;//還原窗口
    /// <summary>
    /// 通過句柄,窗體顯示函數(shù)
    /// </summary>
    /// <param name="hWnd">窗體句柄</param>
    /// <param name="cmdShow">顯示方式</param>
    /// <returns>返回成功與否</returns>
    [DllImport("user32.dll", EntryPoint = "ShowWindowAsync", SetLastError = true)]
    public static extern bool ShowWindow(IntPtr hWnd, int cmdShow);

這里的ShowWindow,與上面默認(rèn)任務(wù)欄操作所調(diào)用的ShowWindow不一樣,句柄參數(shù)是IntPtr

到此這篇關(guān)于C# 顯示、隱藏窗口對(duì)應(yīng)的任務(wù)欄的文章就介紹到這了,更多相關(guān)C# 顯示隱藏窗口任務(wù)欄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#實(shí)現(xiàn)HSL顏色值轉(zhuǎn)換為RGB的方法

    C#實(shí)現(xiàn)HSL顏色值轉(zhuǎn)換為RGB的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)HSL顏色值轉(zhuǎn)換為RGB的方法,涉及C#數(shù)值判定與轉(zhuǎn)換的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    這篇文章主要介紹了CAD2008+VS2008開發(fā)ObjectARX加載失敗問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • C#新手常犯的錯(cuò)誤匯總

    C#新手常犯的錯(cuò)誤匯總

    這篇文章主要介紹了C#新手常犯的錯(cuò)誤匯總,對(duì)于經(jīng)驗(yàn)豐富的C#程序員同樣具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • Unity3D UGUI實(shí)現(xiàn)縮放循環(huán)拖動(dòng)卡牌展示效果

    Unity3D UGUI實(shí)現(xiàn)縮放循環(huán)拖動(dòng)卡牌展示效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D UGUI實(shí)現(xiàn)縮放循環(huán)拖動(dòng)展示卡牌效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#逐行讀取文本文件的幾種有效方法

    C#逐行讀取文本文件的幾種有效方法

    在C#中,我們可以使用各種方法來讀取和寫入文本文件,本文主要給大家介紹了C#逐行讀取文本文件的幾種有效方法,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • C#正則表達(dá)式Regex用法詳解

    C#正則表達(dá)式Regex用法詳解

    本文詳細(xì)講解了C#正則表達(dá)式Regex的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 解析c# yield關(guān)鍵字

    解析c# yield關(guān)鍵字

    這篇文章主要介紹了c# yield關(guān)鍵字的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • c#生成驗(yàn)證碼程序

    c#生成驗(yàn)證碼程序

    這篇文章主要介紹了使用c#生成驗(yàn)證碼的示例,大家參考使用吧
    2014-01-01
  • c# WPF中System.Windows.Interactivity的使用

    c# WPF中System.Windows.Interactivity的使用

    這篇文章主要介紹了c# WPF中System.Windows.Interactivity的使用,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#如何利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析

    C#如何利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析

    這篇文章主要為大家詳細(xì)介紹了C#利用結(jié)構(gòu)體對(duì)固定格式數(shù)據(jù)進(jìn)行解析,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

阜阳市| 温泉县| 兴国县| 镇江市| 金华市| 沾化县| 朝阳区| 太原市| 横山县| 甘泉县| 正镶白旗| 星座| 揭西县| 平陆县| 苍山县| 贵溪市| 万安县| 慈溪市| 蕲春县| 界首市| 石楼县| 洛隆县| 蓬溪县| 漳平市| 北票市| 石泉县| 双峰县| 阳城县| 开阳县| 融水| 阿图什市| 错那县| 将乐县| 南江县| 伊宁市| 固阳县| 玉环县| 广安市| 铜川市| 贡山| 读书|