window 系統托盤不自動隱藏

2021-09-24 12:55:36 字數 2829 閱讀 8640

例子:將下面**複製到乙個指令碼中去例如123.ps1,

執行完成後需要自己重啟explorer.exe,才能得到效果。

通過這種方法會存在一種問題是需要重啟explorer.exe,所以介面會閃爍一下。

param(

[parameter(mandatory=$true,helpmessage='the name of the program')][string]$programname,

[parameter(mandatory=$true,helpmessage='the setting (2 = show icon and notifications 1 = hide icon and notifications, 0 = only show notifications')]

[validatescript( return $true})]

[int16]$setting

)$enctext = new-object system.text.utf8encoding

[byte] $bytregkey = @()

$strregkey = ""

$bytregkey = $(get-itemproperty $(get-item 'hkcu:\software\classes\local settings\software\microsoft\windows\currentversion\traynotify').pspath).iconstreams

for($x=0; $x -le $bytregkey.count; $x++)

1 2

}}function rot13($bytetorot)

elseif($bytetorot -gt 96 -and $bytetorot -lt 123)

else

} else

}}[byte] $header = @()

$items = @{}

for($x=0; $x -lt 20; $x++)

for($x=0; $x -lt $(($bytregkey.count-20)/1640); $x++)

foreach($key in $items.keys)

1 2 }}

}

這種方法和上面的powershell一樣,會導致介面閃爍。

using system;

using system.collections.generic;

using system.text;

using microsoft.win32;

using system.collections;

using system.diagnostics;

class program

else

}//------------------------

arraylist blocklist = p1.storeblocks(allwithoutheader);

console.writeline("name(or part) of program:");

prname = console.readline();

string alldatastring = null;

bool found = false;

int value = 0;

int blocknumber = 0;

for (int i = 0; i < blocklist.count; i++)}}

}}

if (found == false)

console.writeline("new setting:");

value = convert.toint32(console.readline());

((list)(blocklist[blocknumber]))[528] = (byte)(value);

byte alloriginal = p1.getoriginalformat(blocklist, allwithoutheader.length);

byte combined = p1.combine(header, alloriginal);

mykey.setvalue("iconstreams", combined);

console.writeline("successfully wrote to registry, please restart explorer.exe");

process pp = process.getprocessesbyname("explorer");

foreach (process p in pp)

process.start("explorer.exe");

}private byte combine(byte first, byte second)

private arraylist storeblocks(byte all)

}return main;

}private byte getoriginalformat(arraylist list, int buffersize)

}return original;

}private string transform(string value)

else

}else if (number >= 'a' && number <= 'z')

else

}array[i] = (char)number;

}return new string(array);

}}

具體在win7上工作的很好,win8沒測試,但是win10 1809沒有反應。

系統托盤程式設計

所謂的 托盤 在windows系統介面中,指的就是下面任務條右側,有繫 統時間等等的標誌的那一部分。二 托盤程式設計相關函式 winshellapi bool winapi shell notifyicon dword dwmessage,pnotifyicondata pnid 這個函式呢,負責向...

系統托盤程式

系統托盤程式 與系統托盤通訊的函式 shell notifyicon dword dwmessage,pnotifyicondata pnid 第乙個引數dwmessage可以取以下值 1 nim add 向托盤中加入乙個圖示 2 nim modify修改托盤中的圖示 3 nim delete 從托...

DELPHI 系統托盤

然後詳細說明下具體實現方法 1 在user處添家乙個 shellapi 這樣就可以代用這個api了,如 uses windows,messages,shellapi 2 宣告兩個常量 const mousemsg wm user 1 自定義訊息,用於處理使用者在圖示上點選滑鼠的事件 iid 100 ...