AutoHotkey: Duplicate starter menu entry: Difference between revisions

From TotalcmdWiki
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.1
; // TC_StartMenu_DuplicateEntry.ahk V1.2
; // (W) StatusQuo 2008 for TC 7.02a (tested up to 7.03)
; // (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% ; Title
; 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, TEdit2, %sText2%, ahk_class %sClassMainWin%, ; main window
ControlSetText, %sEditName2%, %sText2%, ahk_class %sClassMainWin%, ; main window
ControlSetText, TEdit1, %sText1%, ahk_class %sClassMainWin%, ; main window
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,  TEdit3, {HOME},  
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