깜박이지 않고 재로드하기 Tray Icon - Autohotkey Script


0

나는하고 싶다. 다시로드 없이 섬광 그만큼 트레이 아이콘 , 내 Windows 10 64 / 비트 시스템에.

사용할 수있는 간단한 Autohotkey 스크립트가 있습니까?

내가 뛰고 싶지 않아. 다시로드 명령 My Autohotkey 트레이 아이콘이 사라지고 특정 시간에 다시 나타납니다. (그리고 내 작업 표시 줄에 다른 모든 트레이 아이콘이 재정렬됩니다.)

이 Ahk Script를 실행하고 [F1] 키를 클릭하면, 내게 무슨 뜻인지 알 수 있습니다.

#SingleInstance force

;if you have Many variables +-1000x and you want to clean them.
;you can use the Reload Command to empty them.
;but i do not want that the System Tray will be Flashing. and it will reordered all my other Tray icons.

f1:: ;Restart script and clear all variables.
reload
return

f2::
a1 := 100
;a.... := ....
a1000 := 100
return


~esc::exitapp

.

큰 소리로 말하자면, 시스템 트레이 아이콘에 이미 존재하는 트레이 아이콘을 다시로드하고 무시할 수있는 Ahk 스크립트를 작성할 수 있다면 큰 소리로 말하지 말아야합니다. 왜 우리가 다시로드 할 것인지, 또는 명령을 사용할 수 있는지 [ReloadIgnoreTray] 또는 [#ReloadIgnoreTray]처럼 [#notrayicon]

어쩌면 Autohotkey를 만들었던 제작자가 Reload 명령을 변경하거나 업그레이드 할 수 있습니다. Reload 명령은이 작업을 수행해야합니다. 먼저 Tray 아이콘의 이름을 찾습니다. 기존의 경우 Tray Icon을 다시로드하지 않습니다. (유일한 질문은 트레이 아이콘을 다시로드하지 않고 TrayMenus를 변경할 수 있다는 것입니다)

답변:


1

트레이 아이콘을 깜박이지 않고 새로 고침을하려면.

리틀 트릭으로 그렇게 할 수 있습니다.

이것을 해결하기 위해 (외부 트레이 아이콘과 함께 트레이 메뉴)

이 두 개의 Ahk Script를 시도하면 곧 갈 준비가됩니다.

더 이상 당신의 모든 변수 또는 다른 것을 지우기 위해 많은 코드 라인을 작성하지 않아야합니다.

  • Example1.ahk - 귀하의 메인 스크립트입니다. (이것은 #Notrayicon 명령을 사용하여 트레이 아이콘을 숨 깁니다.)

  • Example1Tray.ahk는 외부 스크립트입니다. (이것을 실행하면 메인 스크립트 자동 실행)

주 - 이것은 수행 할 수 있음을 보여주는 간단한 예일뿐입니다.

Example1.ahk

#Notrayicon
#SingleInstance force

;Click on <esc> key - to exit
;Click on <f1> key - to do an Reload Without Flashing Tray Icon
;Click on <f2> key - to do put the variables
;Click on <f3> key - to show if the variables is be Cleared

;Tip - if you change the Name Example1.ahk into Example2.ahk 
;Then you can use ReplaceAll Function in Notepad - ReplaceAll Example1 to Example2

WriteReg_Example1("Suspend","0")
WriteReg_Example1("Exit","0")

mode=1


loop
{
;----------------
RegRead, x, HKEY_CURRENT_USER,software\Example1,Suspend ; read SuspendValue
if x=1
{
WriteReg_Example1("Suspend","0")
x=0
Suspend
}
;----------------

;----------------
RegRead, x, HKEY_CURRENT_USER,software\Example1,Exit ; read ExitValue
if x=1
{
exitapp
WriteReg_Example1("Exit","0")
x=0
}
;----------------

} ;End Loop

;if you have Many variables +-1000x and you want to clean them.
;you can use the Reload Command to empty them.
;but i do not want that the System Tray will be Flashing. and it will reordered all my other Tray icons.


;----------------------------------
#if mode
f1:: ;Restart script and clear all variables.
reload
return

f2::
a1 := 100
;a.... := ....
a1000 := 100
msgbox a1 = %a1% to a1000 = %a1000%
return

f3::
msgbox a1 = %a1% to a1000 = %a1000%
return


~esc::exitapp
#if
;----------------------------------

;----------------------------------
WriteReg_Example1(KeyName,KeyValue)
{
RegWrite, REG_SZ, HKEY_CURRENT_USER,software\Example1,%KeyName%,%KeyValue%  ;write Registry for External Program
}
;---------------------------------

Example1Tray.ahk

;#Notrayicon
#Persistent
OnExit, DoExitExternal
#SingleInstance force
mode=1

;Tip - if you change the Name Example1.ahk into Example2.ahk 
;Then you can use ReplaceAll Function in Notepad - ReplaceAll Example1 to Example2 and it is done!

WriteReg_Example1("Suspend","0")
WriteReg_Example1("Exit","0")

Menu, Tray, NoStandard ; Remove the Standard Menu items

Menu, Tray, Add , H&elp, DoHelp
Menu, Tray, Add , W&indow Spy, DoWindowSpy
Menu, Tray, Add , S&uspend Script, DoSuspendExternal 
Menu, Tray, Add , E&xit, DoExitExternal 

;----------------
#If WinNotExist Example1.ahk 
{
run Example1.ahk 
}
;----------------

loop
{
} ;End Loop

;----------------
DoHelp:
run C:\Program Files\AutoHotkey\AutoHotkey.chm
return
;----------------

;----------------
DoWindowSpy:
run C:\Program Files\AutoHotkey\AU3_Spy.exe
return
;----------------

;----------------
DoSuspendExternal:
WriteReg_Example1("Suspend","1")
if a=1
{
Menu, Tray, Icon , Shell32.dll, 29, 1
a=0
}else{
Menu, Tray, Icon, Shell32.dll, 132, 1
a=1
}
return
;----------------

;----------------
DoExitExternal:
WriteReg_Example1("Suspend","0")
WriteReg_Example1("Exit","1")
sleep 250
ExitApp
return
;----------------

;----------------------------------
WriteReg_Example1(KeyName,KeyValue)
{
RegWrite, REG_SZ, HKEY_CURRENT_USER,software\Example1,%KeyName%,%KeyValue%  ;write Registry for External Program
}
;----------------------------------

;----------------------------------
#if mode
~esc::
gosub DoExitExternal
return
#if
;----------------------------------

1

다시로드를 수행하여 무엇을 달성하려고합니까?

AutoHotkey에 구워진 reload 명령에 대한 기본 재로드 동작을 (쉽게) 수정할 수는 없지만 함수 호출을 호출하고 트레이에 추가하는 것만으로 필요한 모든 변수를 다시 초기화 할 수 있습니다 메뉴를 "소프트 재로드"옵션으로 선택하면 지우려는 내부 상태 변수가 지워집니다.

대화와 자연을 자동으로 닫으려고한다면 좀 더 복잡 할 수 있습니다.

트레이 메뉴에 옵션을 추가하고 옵션을 선택할 때 실행될 외부 함수를 가져온 다음 해당 함수에 코드를 추가하여 전체 다시로드하지 않고 재설정하려는 값을 재설정합니다. 트레이 아이콘의 위치가 재설정됩니다.

Main:

    Menu, Tray, Add, SoftRestart, myFuncSoftRestart
Return

f1::reload

f2::
    a := 100
    a100 := 100
return    

myFuncSoftRestart() {       ; use this function to clear internal state variables
    a :=""
    a100 := ""
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.