更改指定程序托盘图标示例

简单的修改更改指定程序托盘图标示例,给需要的人

base64Code:="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"
hIcon:=CreateIconFromBase64(base64Code, 48)
;;hIcon:=LoadPicture("Shell32.dll", "Icon42 w48 h-1", IMAGE_ICON:=1)
try TrayIconInfo := GetTrayIconInfo(DllCall("GetCurrentProcessId"))   ;获取指定程序的托盘图标信息,传入pid或exe进程名
if TrayIconInfo.hWnd&&hIcon
	ReplaceTrayIcon(hIcon, TrayIconInfo.hWnd, TrayIconInfo.Id)
MsgBox % TrayIconInfo.hWnd&&hIcon?"修改成功!":"修改失败!"


BitmapFromBase64(ByRef base64) { ; Modified from just me's ImageToInclude
	hBitmap := 0
	VarSetCapacity(B64, StrLen(base64) << !!A_IsUnicode)
	B64 := base64
	If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", 0, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
		Return False
	VarSetCapacity(Dec, DecLen, 0)
	If !DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &B64, "UInt", 0, "UInt", 0x01, "Ptr", &Dec, "UIntP", DecLen, "Ptr", 0, "Ptr", 0)
		Return False
	; Bitmap creation adopted from "How to convert Image data (JPEG/PNG/GIF) to hBITMAP?" by SKAN
	; -> http://www.autohotkey.com/board/topic/21213-how-to-convert-image-data-jpegpnggif-to-hbitmap/?p=139257
	hData := DllCall("Kernel32.dll\GlobalAlloc", "UInt", 2, "UPtr", DecLen, "UPtr")
	pData := DllCall("Kernel32.dll\GlobalLock", "Ptr", hData, "UPtr")
	DllCall("Kernel32.dll\RtlMoveMemory", "Ptr", pData, "Ptr", &Dec, "UPtr", DecLen)
	DllCall("Kernel32.dll\GlobalUnlock", "Ptr", hData)
	DllCall("Ole32.dll\CreateStreamOnHGlobal", "Ptr", hData, "Int", True, "PtrP", pStream)
	hGdip := DllCall("Kernel32.dll\LoadLibrary", "Str", "Gdiplus.dll", "UPtr")
	VarSetCapacity(SI, 16, 0), NumPut(1, SI, 0, "UChar")
	DllCall("Gdiplus.dll\GdiplusStartup", "PtrP", pToken, "Ptr", &SI, "Ptr", 0)
	DllCall("Gdiplus.dll\GdipCreateBitmapFromStream",  "Ptr", pStream, "PtrP", pBitmap)
	DllCall("Gdiplus.dll\GdipCreateHBITMAPFromBitmap", "Ptr", pBitmap, "PtrP", hBitmap, "UInt", 0)
	;DllCall("Gdiplus.dll\GdipDisposeImage", "Ptr", pBitmap)
	DllCall("Gdiplus.dll\GdiplusShutdown", "Ptr", pToken)
	DllCall("Kernel32.dll\FreeLibrary", "Ptr", hGdip)
	DllCall(NumGet(NumGet(pStream + 0, 0, "UPtr") + (A_PtrSize * 2), 0, "UPtr"), "Ptr", pStream)
	Return {hBitmap:hBitmap,pBitmap:pBitmap}
}

CreateIconFromBase64(base64, icoSize){
	chars := StrLen(base64)
	if !DllCall("Crypt32\CryptStringToBinary", "Str", base64, "UInt", chars, "UInt", 1
		, "Ptr", 0, "UIntP", bytes, "UIntP", 0, "UIntP", 0)
		throw "CryptStringToBinary failed. LastError: " . A_LastError
	VarSetCapacity(icoData, bytes, 0)
	DllCall("Crypt32\CryptStringToBinary", "Str", base64, "UInt", chars, "UInt", 1
		, "Str", icoData, "UIntP", bytes, "UIntP", 0, "UIntP", 0)
	Return DllCall("CreateIconFromResourceEx", "Ptr", &icoData, "UInt", bytes, "UInt", true
		, "UInt", 0x30000, "Int", icoSize, "Int", icoSize, "UInt", 0, "Ptr")
}

ReplaceTrayIcon(hIcon, hWnd, iconId) {
	static flag := NIF_ICON := 2, action := NIM_MODIFY := 1
	VarSetCapacity(NOTIFYICONDATA, size := A_PtrSize*4 + 8, 0)
	NumPut(size  , NOTIFYICONDATA)
	NumPut(hWnd  , NOTIFYICONDATA, A_PtrSize)
	NumPut(iconId, NOTIFYICONDATA, A_PtrSize*2)
	NumPut(flag  , NOTIFYICONDATA, A_PtrSize*2 + 4)
	NumPut(hIcon , NOTIFYICONDATA, A_PtrSize*3 + 8)
	Return DllCall("Shell32\Shell_NotifyIcon", "UInt", action, "Ptr", &NOTIFYICONDATA)
}

GetTrayIconInfo(proceccNameOrPID := "") {
	static TB_GETBUTTON	:= 0x417
		  , TB_BUTTONCOUNT := 0x418
		  , ptrSize := 4 << A_Is64bitOS
		  , szTBBUTTON := 8 + ptrSize*3
		  , szTRAYDATA := 16 + ptrSize*2
	
	Arr := []
	dhw_prev := A_DetectHiddenWindows
	DetectHiddenWindows, On
	WinGet, PID, PID, ahk_exe explorer.exe
	RB := new RemoteBuffer(PID, szTRAYDATA)
	found := false
	Loop 2 {
		if (A_Index = 2)
			ControlGet, hToolBar, hwnd,, ToolbarWindow321, ahk_class NotifyIconOverflowWindow
		else {
			for k, v in ["TrayNotifyWnd", "SysPager", "ToolbarWindow32"]
				hToolBar := DllCall("FindWindowEx", "Ptr", k = 1 ? WinExist("ahk_class Shell_TrayWnd") : hToolBar, "Ptr", 0, "Str", v, "UInt", 0, "Ptr")
		}
		SendMessage, TB_BUTTONCOUNT,,,, ahk_id %hToolBar%
		Loop % ErrorLevel {
			SendMessage, TB_GETBUTTON, A_Index - 1, RB.ptr,, ahk_id %hToolBar%
			try RB.Read(TBBUTTON, szTBBUTTON)
			catch
				continue
			try RB.Read(TRAYDATA, szTRAYDATA, NumGet(&TBBUTTON + 8 + ptrSize) - RB.ptr)
			catch
				continue
			tipOffset := NumGet(&TBBUTTON + 8 + ptrSize*2) - RB.ptr
			try RB.Read(tip, 1024, tipOffset)
			hWnd := NumGet(TRAYDATA)
			WinGet, PID, PID, ahk_id %hWnd%
			(PID = proceccNameOrPID && found := true)
			WinGet, processName, ProcessName, ahk_id %hWnd%
			(processName = proceccNameOrPID && found := true)
			WinGetTitle, title, ahk_id %hWnd%
			
			Arr.Push({ PID: PID, ProcessName: processName, ID: NumGet(&TRAYDATA + ptrSize, "UInt"), WinTitle: title
						, hWnd: hWnd, Tip: tip, CallbackMessage: NumGet(&TRAYDATA + 4 + ptrSize, "UInt")
						, HICON: NumGet(&TRAYDATA + 16 + ptrSize, ptrSize = 4 ? "UInt" : "UInt64") })
		} until found
	} until found
	DetectHiddenWindows, %dhw_prev%
	if (proceccNameOrPID && !found)
		throw "Icon of specified process not found"
	Return found ? Arr.Pop() : Arr
}

class RemoteBuffer
{
	__New(PID, size) {
		static flags := (PROCESS_VM_OPERATION := 0x8) | (PROCESS_VM_WRITE := 0x20) | (PROCESS_VM_READ := 0x10)
			  , Params := ["UInt", MEM_COMMIT := 0x1000, "UInt", PAGE_READWRITE := 0x4, "Ptr"]
			
		if !this.hProc := DllCall("OpenProcess", "UInt", flags, "Int", 0, "UInt", PID, "Ptr")
			throw Exception("Can't open remote process PID = " . PID . "`nA_LastError: " . A_LastError, "RemoteBuffer.__New")
		
		if !this.ptr := DllCall("VirtualAllocEx", "Ptr", this.hProc, "Ptr", 0, "Ptr", size, Params*) {
			DllCall("CloseHandle", "Ptr", this.hProc)
			throw Exception("Can't allocate memory in remote process PID = " . PID . "`nA_LastError: " . A_LastError, "RemoteBuffer.__New")
		}
	}
	__Delete() {
		DllCall("VirtualFreeEx", "Ptr", this.hProc, "Ptr", this.ptr, "UInt", 0, "UInt", MEM_RELEASE := 0x8000)
		DllCall("CloseHandle", "Ptr", this.hProc)
	}
	Read(ByRef localBuff, size, offset = 0) {
		VarSetCapacity(localBuff, size, 0)
		if !DllCall("ReadProcessMemory", "Ptr", this.hProc, "Ptr", this.ptr + offset, "Ptr", &localBuff, "Ptr", size, "PtrP", bytesRead)
			throw Exception("Can't read data from remote buffer`nA_LastError: " . A_LastError, "RemoteBuffer.Read")
		Return bytesRead
	}
	Write(pData, size, offset = 0) {
		if !res := DllCall("WriteProcessMemory", "Ptr", this.hProc, "Ptr", this.ptr + offset, "Ptr", pData, "Ptr", size, "PtrP", bytesWritten)
			throw Exception("Can't write data to remote buffer`nA_LastError: " . A_LastError, "RemoteBuffer.Write")
		Return bytesWritten
	}
}

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA捐赠
共{{data.count}}人
人已捐赠
其他

findtext v2

2022-5-22 15:47:35

其他案例

[第1001关] 极速构建一个输出热字符串输出的形码输入法

2022-5-23 9:13:24

6 条回复 A文章作者 M管理员
  1. hexuren
    1河许人给您打赏了¥2
  2. dbgba
    dbgba给您打赏了¥5
  3. doge

    大佬,我想问一下,有没有这样的软件或脚本:比如我打开了一个Chrome,我正在浏览网页,但是我想把任务栏(非托盘)上的Chrome图标给隐藏掉。因为平时工作开了很多窗口,任务栏太挤了,不能第一时间找到我想要的。

    • 蜜獾哥

      ; Ctrl+f1一键隐藏或恢复当前活动窗口的任务栏图标,代码就这样窗口ToolWindow对应样式是0x80,怎么实现方便自己研究
      DetectHiddenWindows, On

      ^F1::
      WinHide, % “ahk_id ” (AID:=WinExist(“A”))
      WinSet, ExStyle, ^0x80, ahk_id %AID%
      WinShow, ahk_id %AID%

      Return

    • doge

      谢谢,我研究研究

个人中心
购物车
优惠劵
有新私信 私信列表
搜索