パクろうと 思っちゃみたが 道険し! そんなもんだよ世の中は その7

AHKで一番にやったことは、ホットキーで各アプリを起動させることだった。
なりふり構わず、何でもかんでも割り振って・・  挙句・・ どのキーに何を割り当てたかがわからん!で終わった。(笑)
だったら、メニュー型ランチャーを、やってこませ!ということで、何種類か作った。S君の指導のもとに。
過去に、いろいろなランチャーを試してきたが・・、AHK で構築したのが一番 爺には向いているようだ。
現在3種類のメニューを気分で使っているが、使用頻度の高いのは これ!
爺のはこの部分だけで、1200行以上は軽くあるので、バッサ バッサとカットして載せてますが・・

 こんな感じ



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$<^LWIN::					; MENU
	win3 := WinExist("A")
;;;;;;;  SystemMenu   ;;;;;;;;;;
	Menu, SystemMenu, Add, コンピュータの電源を切る, CPUOFF
	Menu, SystemMenu, Add, ファイル名を指定して実行, XRUN
	Menu, SystemMenu, Add, コンピュータの管理 (&c), CplComputerMaintenance
	Menu, SystemMenu, Add, システムのプロパティ (&s), CplSystem
	Menu, SystemMenu, Add, タスクマネージャ, taskman
	Menu, SystemMenu, Add,

;;;;;;;   AhkStartupMenu  ;;;;;;;;;;;;;
	Menu, AhkStartupMenu, Add, ◆ WINDOWS 設定関連 ◆, :SystemMenu
	Menu, AhkStartupMenu, Add, 
	Menu, AhkStartupMenu, Add, AHK_SPY (&a),AU3_Spy
	Menu, AhkStartupMenu, Add, AutoScriptWriter,ASW
	Menu, AhkStartupMenu, Add, 窓 コ ン (&m),	Madocon
	Menu, AhkStartupMenu, Add, ResHacker (&r),	ResHacker
	Menu, AhkStartupMenu, Add, Winspector (&w),Winspector
	Menu, AhkStartupMenu, Add, ahkコンパイラ (&c),COMP

;;;;;;;      MainMenu  ;;;;;;;;;;;
	Menu, MainMenu, Add, ◯ AHK & Start UP 関連 ◯, :AhkStartupMenu
	Menu, MainMenu, Add, 
	Menu, MainMenu, Add, BunBackup (&b),BunBackup
	Menu, MainMenu, Add, DVD Decrypter (&d),DVDDecrypter
	Menu, MainMenu, Add, Lyrics Master (&l),LyricsMaster
	Menu, MainMenu, Add, MMname2_ (&m),MMname2
	Menu, MainMenu, Add, LINK+++(&+),+NetDrive
	Menu, MainMenu, Add, LINK---(&-),-NetDrive
	Menu, MainMenu, Add, ハードウエアの取り外し (&h),hotplug


IfWinActive,ahk_class ahk_class MediaPlayerClassicW
	{
	Gosub,MPC
	Menu, MPCMenu, Color, B0B000
	Menu, MPCMenu, Show
	Menu, MPCMenu, DeleteAll
	Menu, SystemMenu, DeleteAll      	;sys ━━┓
	Menu, MainMenu, DeleteAll        	;main━━┫
	Menu, AhkStartupMenu, DeleteAll  	;tool━━┛
	return
	}
IfWinActive,ahk_class ahk_class Hidemaru32Class
	{
	Gosub,HIDEMARU
	Menu, Hidemaru32Class, Color, F0AACC
	Menu, Hidemaru32Class, Show
	Menu, Hidemaru32Class, DeleteAll
	Menu, SystemMenu, DeleteAll      	;sys ━━┓
	Menu, MainMenu, DeleteAll        	;main━━┫
	Menu, AhkStartupMenu, DeleteAll  	;tool━━┛
	return
	}
 else
	{	
	Menu, MainMenu, Color, C0C0C0
	Menu, MainMenu, Show
	Menu, SystemMenu, DeleteAll      	;sys ━━┓
	Menu, MainMenu, DeleteAll        	;main━━┫
	Menu, AhkStartupMenu, DeleteAll  	;tool━━┛
	return
	}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;   秀  丸   MENU-SUB ;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HIDEMARU:
	 win3 := WinExist("A")
	 Menu, Hidemaru32Class, Add, コマンド一覧... -232, Launcher
	 Menu, Hidemaru32Class, Add, 追加コピー -43, Launcher
	 Menu, Hidemaru32Class, Add, grepの実行... -59, Launcher
	 Menu, Hidemaru32Class, Add, 他の秀丸エディタと同時スクロール... -165, Launcher
	 Menu, Hidemaru32Class, Add, キー操作の記録開始/終了 -58, Launcher
	 Menu, Hidemaru32Class, Add, キー操作の再生 -60, Launcher
	 Menu, Hidemaru32Class, Add, キー操作の保存... -105, Launcher
	 Menu, Hidemaru32Class, Add, キー操作の読込み... -106, Launcher
	 Menu, Hidemaru32Class, Add, ファイルタイプ別の設定... -54, Launcher
	 Menu, Hidemaru32Class, Add, 動作環境... -81, Launcher
	 Menu, Hidemaru32Class, Add, キー割り当て... -55, Launcher
	 Menu, Hidemaru32Class, Add,
	 Menu, Hidemaru32Class, Add, == MainManu ==, :MainMenu

 Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;   MPC   MENU-SUB ;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MPC:
	win3 := WinExist("A")
	Menu, MPCMenu, Add, ◯ MAIN へ ◯, :MainMenu
	Menu, MPCMenu, Add, 
	Menu, MPCMenu, Add, 1/2サイズ (&H)  -832,Launcher
	Menu, MPCMenu, Add, 標準サイズ (&N)  -833,Launcher
	Menu, MPCMenu, Add, 2倍サイズ (&D)  -834,Launcher
	Menu, MPCMenu, Add, 
	Menu, MPCMenu, Add, ウィンドウのサイズに拡大 (&S)  -838,Launcher
	Menu, MPCMenu, Add, 内側からウィンドウに接触 (&z)  -839,Launcher
	Menu, MPCMenu, Add, 外側からウィンドウに接触 (&x)  -840,Launcher
	Menu, MPCMenu, Add, 
	Menu, MPCMenu, Add, アスペクト比を保持 トグル (&K)  -841, Launcher
	Menu, MPCMenu, Add, アスペクト比を調整 デフォルト (&0)  -850,Launcher
	Menu, MPCMenu, Add, アスペクト比を調整 4:3 (&1)  -851,Launcher
	Menu, MPCMenu, Add, アスペクト比を調整 5:4  -852,Launcher
	Menu, MPCMenu, Add, アスペクト比を調整 16:9 (&2)  -853,Launcher
	Menu, MPCMenu, Add, 
	Menu, MPCMenu, Add, 常に手前に表示 無効  -883, Launcher
	Menu, MPCMenu, Add, 常に手前に表示 有効  -884, Launcher
	Menu, MPCMenu, Add, 常に手前に表示 再生中  -885, Launcher
	Menu, MPCMenu, Add, 
 return

上が、メニューのメニュー部分?(笑)
味噌は、要所?に 「win3 := WinExist("A")」が織り込んであるところ。(笑)
S君たちだと win3 なんて変数は使わずに、hWIN とかなんでしょうが・・(笑)
アクティブなウインドウ次第で、表示するメニューを替えるので、ランチャーにも編集・表示・操作などの
ショートカットにも・・。 ahk ですもの、当り前か!
一目瞭然ですが、爺のご同輩レベルの方のため、ザァーっと解説

いちばん深いところに、  SystemMenu  次に  AhkStartupMenu  次に   MainMenu  という形をとってます。
MainMenu から、AhkStartupMenu が呼び出せ、次に SystemMenu が呼び出せます。
自分はそれぞれの、先頭か最後に Menu, *****, Add, ◯ MAIN へ ◯, :MainMenu とか
 Menu, ++++, Add, ◆ WINDOWS 設定関連 ◆, :SystemMenu とか書いて、MainMenu や SystemMenu へ移ってます。

次の
IfWinActive,ahk_class ahk_class MediaPlayerClassicW 等々ですが、
このメニューを  <^LWIN  で呼び出した時のアクティブ窓が MPC とか 秀丸 等々の時は、GOSUB で
夫々のメニューを表示しに行きます。 そして、そこから 元の MainMenu に戻っています。

書き方は みな同じですので、要領かませば どんどん メタボできます。(笑)

次は、メニューで選んだら、行の最後の ?? ン? なんてったっけ(笑)
アあああぁ?   ラベル? だったっけ その ラベルさんのとこにとんできます。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;  Launcher  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;  Launcher  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Launcher:
	 St1 := A_ThisMenuItem
	 StringGetPos,Var,St1,-,R1
	 Var = % Var+2			; Var := Var + 2
	 StringMid,St1,St1,Var
	 SendMessage, 0x111 ,  %St1% ,,,Ahk_id %win3%
 Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;   SystemMenu  ;;;;;;;;;;;;;;;;;;;;;;;;;;
CPUOFF:
	hSellTrayWnd := DllCall("FindWindow", "Str", "shell_traywnd")
	DllCall("SendMessageA", "Int", hSellTrayWnd, "Int", 0x111, "Int", 0x1FA)
 return
XRUN:
	hSellTrayWnd := DllCall("FindWindow", "Str", "shell_traywnd")
	DllCall("SendMessageA", "Int", hSellTrayWnd, "Int", 0x111, "Int", 0x191)
 return
taskman:
	hSellTrayWnd := DllCall("FindWindow", "Str", "shell_traywnd")
	DllCall("SendMessageA", "Int", hSellTrayWnd, "Int", 0x111, "Int", 0x1A4)
 return
hotplug:
;	run,rundll32 shell32.dll`,Control_RunDLL hotplug.dll
	Run control hotplug.dll
 return
ScreenSaver:
#F1::
	RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, ScreenSaveActive, 1
	SendMessage, 0x112, 0xF140, 0,, Program Manager
;	RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop, ScreenSaveActive, 0
 return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;   MainMenu   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WebPrintBrowser:
	run, "E:\_Install_040413\wpb\WebPrintBrowser.exe"
 return

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;; MainMenu   最前列に固定させる  トグル ;;;;;;;;;;;;;;;;;;
SAT:
	winset, alwaysontop, toggle,  ahk_id %win3%
 return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;  MainMenu;;;  AutoScriptWriter  ;; AHKバンドル  ;;;;;;
ASW:
  cuteExec("F:\AutoHotkey\AutoScriptWriter\AutoScriptWriter.exe","ahk_class ASW_Dev_01")
 return

みたいに・・・ 終わり (笑)

MPC、秀丸、卓駆、超マイナーなDBPro(笑)みたいに お行儀のいいソフトは リソースハッカー辺りで
WM_COMMAND に送る引数を一気に調べられるので、この例では Launcher: ひとつで賄えるので楽ですが、
そうじゃないのは・・ シコシコ・・と かつ 粛々と・・  なんとか してくださいませ。(笑)