AutoHotkey: Duplicate starter menu entry: Difference between revisions
Jump to navigation
Jump to search
(Added category AutoHotkey scripts) |
(Update for TC 7.50 rc1) |
||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
; //////////////////////////////////////////////////////////////////////////// | ; //////////////////////////////////////////////////////////////////////////// | ||
; // TC_StartMenu_DuplicateEntry.ahk V1. | ; // TC_StartMenu_DuplicateEntry.ahk V1.2 | ||
; // (W) StatusQuo 2008 for TC 7.02a (tested up to 7. | ; // (W) StatusQuo 2008-2009 for TC 7.02a (tested up to 7.04a and 7.50 rc1) | ||
; // | ; // | ||
; // Duplicates an entry in TC Start Menu or Directory Hotlist | ; // Duplicates an entry in TC Start Menu or Directory Hotlist | ||
Line 17: | Line 17: | ||
; *** store source values | ; *** store source values | ||
ControlGetText, sText3, TEdit3, ahk_class %sClassMainWin%, ; main window | ControlGetText, sText3, TEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, command | ||
ControlGetText, sText2, TEdit2, ahk_class %sClassMainWin%, ; main window | ControlGetText, sText2, TEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, parameters | ||
ControlGetText, sText1, TEdit1, ahk_class %sClassMainWin%, ; main window | ControlGetText, sText1, TEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, start path | ||
if (sText3 = "") | sEditName1 := "TEdit1" ; <= TC 7.04a | ||
sEditName2 := "TEdit2" ; <= TC 7.04a | |||
sEditName3 := "TEdit3" ; <= TC 7.04a | |||
if (sText3 . sText2 . sText1 = "") | |||
{ | |||
sEditName1 := "TAltEdit1" ; >= TC 7.50 | |||
sEditName2 := "TAltEdit2" ; >= TC 7.50 | |||
sEditName3 := "TAltEdit3" ; >= TC 7.50 | |||
ControlGetText, sText3, TAltEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , command | |||
ControlGetText, sText2, TAltEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , parameters | |||
ControlGetText, sText1, TAltEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , start path | |||
} | |||
/* | |||
; --- TC7.04 uses TEdit1+2 for dir menu, TEdit3 is "command" in start menu and empty in dir menu | |||
; --- unusable in TC 7.50 (Beta 4): both dialogs use the same control names + window classes | |||
; *** Auto-detect dir <> starter menu | |||
if (sText3 = "") ; "command" string empty => only usable up to TC 7.04a | |||
{ | { | ||
sDialogType := "dir" | sDialogType := "dir" | ||
} else { | } else { | ||
sDialogType := "start" | sDialogType := "start" | ||
ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window | ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol | ||
ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window | ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen | ||
} | |||
*/ | |||
; *** Auto-detect dir <> starter menu | |||
If (WinActive("Startermenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change start menu ahk_class TUSERMENUCHANGE")) | |||
{ | |||
sDialogType := "start" | |||
ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol | |||
ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen | |||
} else { | |||
If (WinActive("Verzeichnismenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change directory menu ahk_class TUSERMENUCHANGE")) | |||
{ | |||
sDialogType := "dir" | |||
} | |||
} | |||
If (sDialogType = "") ; autodetect failed | |||
{ | |||
MsgBox, 3,, Dialog auto-detection failed (unknown language or version).`n`nIs the dialog = directory hotlist?`n`tYes = directory hotlist`n`tNo = starter menu | |||
IfMsgBox, Yes | |||
sDialogType := "dir" | |||
IfMsgBox, No | |||
sDialogType := "start" | |||
IfMsgBox, Cancel | |||
Return | |||
} | } | ||
Line 32: | Line 74: | ||
if (sDialogType = "dir") | if (sDialogType = "dir") | ||
{ | { | ||
ControlClick, TButton4, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu | ; ControlClick, TButton4, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu | ||
ControlSend, TButton4, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu | |||
} else { | } else { | ||
ControlClick, TButton5, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu | ; ControlClick, TButton5, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu | ||
ControlSend, TButton5, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu | |||
} | } | ||
WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" | WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" | ||
ControlGetText, sMenuTitle, TEdit1, ahk_class %sClassDialog% ; | ; ControlGetText, sMenuTitle, TEdit1, ahk_class %sClassDialog% ; get old title | ||
ControlClick, TButton1, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog | ControlGetText, sMenuTitle, %sEditName1%, ahk_class %sClassDialog% ; get old title | ||
; ControlClick, TButton1, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog | |||
ControlSend, TButton1, {Space}, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog | |||
WinWaitActive, ahk_class %sClassMainWin%, ; main window | WinWaitActive, ahk_class %sClassMainWin%, ; main window | ||
Line 44: | Line 90: | ||
if (sDialogType = "dir") | if (sDialogType = "dir") | ||
{ | { | ||
ControlClick, TButton7, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | ; ControlClick, TButton7, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | ||
ControlSend, TButton7, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | |||
} else { | } else { | ||
ControlClick, TButton8, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | ; ControlClick, TButton8, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | ||
ControlSend, TButton8, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" | |||
} | } | ||
WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" | WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" | ||
ControlSetText, TEdit1, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title | ; ControlSetText, TEdit1, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title | ||
ControlClick, TButton2, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog | ControlSetText, %sEditName1%, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title (TC7.04a:TEdit1) | ||
sOKButTit := "TButton3" ; >= TC 7.50 | |||
if (sEditName1 = "TEdit1") ; <= TC 7.04a | |||
sOKButTit := "TButton2" | |||
; ControlClick, TButton2, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog | |||
; ControlClick, %sOKButTit%, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog | |||
ControlSend, %sOKButTit%, {Space}, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog | |||
WinWaitActive, ahk_class %sClassMainWin%, ; main window | WinWaitActive, ahk_class %sClassMainWin%, ; main window | ||
; *** fill stored values from source entry | ; *** fill stored values from source entry | ||
if (sDialogType = "start") | ; if (sDialogType = "start") ; only TC 7.04a uses just TEdit1+2 for dir menu | ||
{ | { | ||
ControlSetText, TEdit3, %sText3%, ahk_class %sClassMainWin%, ; main window | ; ControlSetText, TEdit3, %sText3%, ahk_class %sClassMainWin%, ; main window | ||
ControlSetText, %sEditName3%, %sText3%, ahk_class %sClassMainWin%, ; main window | |||
} | } | ||
ControlSetText, | ControlSetText, %sEditName2%, %sText2%, ahk_class %sClassMainWin%, ; main window | ||
ControlSetText, | ControlSetText, %sEditName1%, %sText1%, ahk_class %sClassMainWin%, ; main window | ||
if (sDialogType = "start") | if (sDialogType = "start") | ||
Line 73: | Line 128: | ||
; *** set cursor to command value | ; *** set cursor to command value | ||
ControlFocus, TEdit3, ahk_class %sClassMainWin%, ; main window | ; ControlFocus, TEdit3, ahk_class %sClassMainWin%, ; main window | ||
ControlSend, | ControlFocus, %sEditName3%, ahk_class %sClassMainWin%, ; main window | ||
ControlSend, %sEditName3%, {HOME}, | |||
} | } | ||
</pre> | </pre> |
Revision as of 20:12, 26 August 2009
; //////////////////////////////////////////////////////////////////////////// ; // TC_StartMenu_DuplicateEntry.ahk V1.2 ; // (W) StatusQuo 2008-2009 for TC 7.02a (tested up to 7.04a and 7.50 rc1) ; // ; // Duplicates an entry in TC Start Menu or Directory Hotlist ; //////////////////////////////////////////////////////////////////////////// ; *** set window class names sClassMainWin := "TUSERMENUCHANGE" sClassDialog := "TSTDTREEDLG" ; *** wait for & activate window WinWait , ahk_class %sClassMainWin%, IfWinNotActive, ahk_class %sClassMainWin%,, WinActivate, ahk_class %sClassMainWin%, WinWaitActive , ahk_class %sClassMainWin%, ; main "Change Start Menu" ; *** store source values ControlGetText, sText3, TEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, command ControlGetText, sText2, TEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, parameters ControlGetText, sText1, TEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.04a, start path sEditName1 := "TEdit1" ; <= TC 7.04a sEditName2 := "TEdit2" ; <= TC 7.04a sEditName3 := "TEdit3" ; <= TC 7.04a if (sText3 . sText2 . sText1 = "") { sEditName1 := "TAltEdit1" ; >= TC 7.50 sEditName2 := "TAltEdit2" ; >= TC 7.50 sEditName3 := "TAltEdit3" ; >= TC 7.50 ControlGetText, sText3, TAltEdit3, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , command ControlGetText, sText2, TAltEdit2, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , parameters ControlGetText, sText1, TAltEdit1, ahk_class %sClassMainWin%, ; main window ; TC 7.50 , start path } /* ; --- TC7.04 uses TEdit1+2 for dir menu, TEdit3 is "command" in start menu and empty in dir menu ; --- unusable in TC 7.50 (Beta 4): both dialogs use the same control names + window classes ; *** Auto-detect dir <> starter menu if (sText3 = "") ; "command" string empty => only usable up to TC 7.04a { sDialogType := "dir" } else { sDialogType := "start" ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen } */ ; *** Auto-detect dir <> starter menu If (WinActive("Startermenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change start menu ahk_class TUSERMENUCHANGE")) { sDialogType := "start" ControlGet, iCBox2, Checked,, TCheckBox2, ahk_class %sClassMainWin%, ; main window, as symbol ControlGet, iCBox1, Checked,, TCheckBox1, ahk_class %sClassMainWin%, ; main window, fullscreen } else { If (WinActive("Verzeichnismenü ändern ahk_class TUSERMENUCHANGE") or WinActive("Change directory menu ahk_class TUSERMENUCHANGE")) { sDialogType := "dir" } } If (sDialogType = "") ; autodetect failed { MsgBox, 3,, Dialog auto-detection failed (unknown language or version).`n`nIs the dialog = directory hotlist?`n`tYes = directory hotlist`n`tNo = starter menu IfMsgBox, Yes sDialogType := "dir" IfMsgBox, No sDialogType := "start" IfMsgBox, Cancel Return } ; *** get entry title if (sDialogType = "dir") { ; ControlClick, TButton4, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu ControlSend, TButton4, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; DirMenu } else { ; ControlClick, TButton5, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu ControlSend, TButton5, {Space}, ahk_class %sClassMainWin%, ; Button "Change Title"; StartMenu } WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" ; ControlGetText, sMenuTitle, TEdit1, ahk_class %sClassDialog% ; get old title ControlGetText, sMenuTitle, %sEditName1%, ahk_class %sClassDialog% ; get old title ; ControlClick, TButton1, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog ControlSend, TButton1, {Space}, ahk_class %sClassDialog%, ; Button Cancel, close "Change Title" dialog WinWaitActive, ahk_class %sClassMainWin%, ; main window ; *** add new entry if (sDialogType = "dir") { ; ControlClick, TButton7, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" ControlSend, TButton7, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" } else { ; ControlClick, TButton8, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" ControlSend, TButton8, {Space}, ahk_class %sClassMainWin%, ; Button "Add Menu Entry" } WinWaitActive, ahk_class %sClassDialog%, ; dialog "Change Title" ; ControlSetText, TEdit1, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title ControlSetText, %sEditName1%, %sMenuTitle% [copy], ahk_class %sClassDialog% ; Title (TC7.04a:TEdit1) sOKButTit := "TButton3" ; >= TC 7.50 if (sEditName1 = "TEdit1") ; <= TC 7.04a sOKButTit := "TButton2" ; ControlClick, TButton2, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog ; ControlClick, %sOKButTit%, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog ControlSend, %sOKButTit%, {Space}, ahk_class %sClassDialog%, ; Button OK, close "Title" dialog WinWaitActive, ahk_class %sClassMainWin%, ; main window ; *** fill stored values from source entry ; if (sDialogType = "start") ; only TC 7.04a uses just TEdit1+2 for dir menu { ; ControlSetText, TEdit3, %sText3%, ahk_class %sClassMainWin%, ; main window ControlSetText, %sEditName3%, %sText3%, ahk_class %sClassMainWin%, ; main window } ControlSetText, %sEditName2%, %sText2%, ahk_class %sClassMainWin%, ; main window ControlSetText, %sEditName1%, %sText1%, ahk_class %sClassMainWin%, ; main window if (sDialogType = "start") { if iCBox2 Control, Check,, TCheckBox2, ahk_class %sClassMainWin%, ; main window else Control, UnCheck,, TCheckBox2, ahk_class %sClassMainWin%, ; main window if iCBox1 Control, Check,, TCheckBox1, ahk_class %sClassMainWin%, ; main window else Control, UnCheck,, TCheckBox1, ahk_class %sClassMainWin%, ; main window ; *** set cursor to command value ; ControlFocus, TEdit3, ahk_class %sClassMainWin%, ; main window ControlFocus, %sEditName3%, ahk_class %sClassMainWin%, ; main window ControlSend, %sEditName3%, {HOME}, }
Back to AutoHotkey