*menuHacker [#xfcad7d1]

&ref(menuhacker_ss.png,nolink);

#contents

**menuHackerについて [#h70e0d41]
:作者様|folia(◆WoqZr951YI)
:作者様ホームページ「B@r09u3⇔Style Op.2」|http://hp.vector.co.jp/authors/VA026310/
:最新バージョン|Ver.1.10a [08/10/01]
:ソフトのコンセプト|readme.txt より
>システムメニューを拡張し、以下の機能を追加するソフトです。~
~
「プログラムのフォルダを開く」~
「最前面」~
「シェード」(ウィンドウをタイトルバーのみにしたり戻したりする)~
「このウィンドウを除外して全て閉じる」~
~
システムメニューとは、タイトルバーの左端のアイコンをクリックしたときに表示されるメニューのことです。タイトルバー右クリックやAlt+Space、タスクバーのボタンを右クリックし
たときにも表示されます。

**最新バージョンの変更点 [#fe7f38c7]
-透明度を取得するWindowsAPI(GetLayeredWindowAttributes)が安定して動作しないので、各ウィンドウの透明度をmenuHacker側で管理するようにした。

***[[更新履歴>menuHacker / History]] [#qf81d60d]
***[[更新履歴>menuHacker/History]] [#qf81d60d]

**概要 [#pa1c3779]
-常駐し、システムメニューを変更
-外部exeとの連携で色々と自由にできる
-ランチャとしても便利

**書式説明 [#sd5d121f]

***注意 [#fc8dc124]
-列順に、上からシステムメニューに追加されていく
-行頭にセミコロンがある行はコメント行
-各トークン周囲の空白文字(半角スペース、タブ文字)、空行は無視される (ファイルパスなどの半角スペースは考慮される)
-''&''を英字または数字(2バイト文字はダメ)の前に書くと、メニュー表示中でのホットキーになる

***基本的な書き方 [#ac798fee]
基本的に以下のような書き方になる。
 {コマンド名}, {コマンド}, {オプション1}, {オプション2}
オプションに何も書かなかった場合、そこは無視されて次のオプションが考慮される。

***セパレート [#x2812cd5]
行頭が''-'' (ハイフン)の場合、セパレータが追加される。行頭に一個でも、沢山書いても同じ。
 -

 --------------------------
この二つは同じ動作をする。

***縦のセパレート [#e8289df8]
行頭が''='' (イコール)の場合、縦のセパレートとなる。 (縦にセパレートが引かれ、右に列が追加される)
 =

 ==========================

***階層化 [#jff65a81]
''[''と'']''で囲み、改行することで、メニューを階層化する。制限数は通常の使用ならば特にない模様。 (10層ほど作成してみたが、問題なし)
 [{メニュー名1}
 	{コマンド名}, {コマンド}, {オプション1}, {オプション2}
 	[{メニュー名2}
 		[{メニュー名3}
 		{コマンド名}, {コマンド}, {オプション1}, {オプション2}
 		]
 	{コマンド名}, {コマンド}, {オプション1}, {オプション2}
 	]
 ]
3層にした例。

**コマンド一覧 [#p7296cd2]

***ファイル実行 [#j7a5a0b5]
指定したファイルを起動する。

''書き方''
 {コマンド名}, run, {ファイルパス}, {コマンドラインオプション}, {作業フォルダ}, {起動時のウインドウの状態}
''書式例'' (readme.txtをメモ帳で最大化して開く)
 メモ帳でmenuHackerのreadmeを開く (&N), run, C:\WINDOWS\NOTEPAD.EXE, E:\app\menuHacker\readme.txt, ,3
起動時のウインドウの状態は、以下のようになっている。
-''0'' ... 非表示
-''1'' ... ノーマル (デフォルト)
-''2'' ... 最小化
-''3'' ... 最大化
-''6'' ... 最小化
-''7'' ... 最小化

***PostMessage [#r883df7d]
指定したウインドウにメッセージをポスト(PostMessage)する。

''書き方''
 {コマンド名}, postmessage, {ウインドウの指定}, {メッセージ(10進)}, {WPARAM}, {LPARAM}
''書式例''  (Proxomitronのバイパスのオンオフ)
 &ProxomitronのバイパスをOn/Off, postmessage, PrxTronCls, 273, 1007, 0
ウインドウの指定は以下の通り。
-''this'' ... 現在のウインドウ
-''other'' ... 現在のウインドウ以外の全てのウインドウ
-''all'' ... 全てのウインドウ
-{ウインドウクラス名} ... このクラス名を持つウインドウ全て

なお、PostMessageなどは少々高度なので、いろいろなサイトを参考に。

***ウィンドウの位置やサイズを変更 [#cd3b764f]
現在のウインドウの位置やサイズを変更する。単位はpx。

''書き方''
 {コマンド名}, setwindowpos, {X}, {Y}, {横幅}, {高さ}
''書式例'' (現在のウインドウをX250に移動し、320*240にリサイズ)
 移動とリサイズ (&W), setwindowpos, 250, , 320, 240

***最前面のトグル [#c72e310c]
現在のウインドウを最前面化または解除。オプションはない。

''書き方''
 {コマンド名}, topmost

***シェードのトグル [#u8304140]
現在のウインドウをシェード(タイトルバーのみの状態)または解除。オプションはない。

''書き方''
 {コマンド名}, shade

***強制終了 [#xcd36f8c]
現在のウインドウを強制終了。オプションはない。

''書き方''
 {コマンド名}, exitprocess
自爆は気をつけてること。

***タスクトレイにウインドウを格納 [#ib15d89b]
現在のウインドウをタスクトレイに格納する。オプションはない。

''書き方''
 {コマンド名}, settray

こんな感じに格納される。
&ref(menuhacker_settray_ss.png,nolink);

なお、LiteStepの互換シェルでも動く。(0.24.7.0 + systray2で確認)
&ref(menuhacker_settray_ss2.png,nolink);

***クリップボードにコピー [#m1198b55]
渡されたオプションの文字列をクリップボードにコピーする。[[置換文字列>#a3473d0f]]を組合せて使うと便利。

''書き方''
 {コマンド名}, setclip, {クリップボードにコピーしたい文字列}
''書式例'' (ウインドウのクラス名をクリップボードにコピー)
 クラス名をコピー(&c), setclip, %class%

***プロパティを表示 [#nebf3019]
渡されたオプションのプロパティダイアログを表示する。

''書き方''
 {コマンド名}, fileproperty, {表示したいもののフルパス}
''書式例'' (タイトルバーに表示されているフルパスのプロパティを表示する)
 タイトルバーのファイルのプロパティ(&P), fileproperty, %titlepath%

***プライオリティの設定 [#a71fcd89]
CPU の優先度の設定。

''書き方''
 {コマンド名}, setpriority, {優先度の数値}

優先度の数値は以下の通り。
-0 = IDLE_PRIORITY_CLASS (アイドルクラス)
-1 = BELOW_NORMAL_PRIORITY_CLASS (通常クラスよりやや低い)
-2 = NORMAL_PRIORITY_CLASS (通常クラス)
-3 = ABOVE_NORMAL_PRIORITY_CLASS 通常クラスよりやや高い)
-4 = HIGH_PRIORITY_CLASS (優先クラス)
-5 = REALTIME_PRIORITY_CLASS (リアルタイムクラス)

''書式例''
 [&Priority
 IDLE_PRIORITY_CLASS, setpriority, 0
 BELOW_NORMAL_PRIORITY_CLASS, setpriority, 1
 NORMAL_PRIORITY_CLASS, setpriority, 2
 ABOVE_NORMAL_PRIORITY_CLASS, setpriority, 3
 HIGH_PRIORITY_CLASS, setpriority, 4
 REALTIME_PRIORITY_CLASS, setpriority, 5
 ]

***ウィンドウを実行しているプログラムを再起動 [#e6ddc8bc]
プログラムを再起動する。なお、引数や作業フォルダも受けつがれる。

''書き方''
 {コマンド名}, restart

***ウィンドウを最後尾に移動 [#wc487b47]
ウインドウを最後尾に移動させる。

''書き方''
 {コマンド名}, sendtoback

***ウィンドウの透明度の設定と表示 [#cc2d01b5]
ウインドウの透過を行う。なお、Windows2000 以降の OS で使用可能。

''書き方''
 {コマンド名}, transparent, {透明度の数値}
透明度の数値は、''0'' から ''255'' となっている (数値が大きいほど透明になる)。また、''-1'' を指定すると完全に透明になる (WS_EX_LAYERED 属性を解除)。

''書式例''
 [透明度
 0, transparent, -1
 10, transparent, 230
 20, transparent, 204
 30, transparent, 179
 40, transparent, 153
 50, transparent, 128
 ]

**置換文字一覧 [#a3473d0f]

|~文字|~説明|
|%exe%|システムメニューを表示しているプログラムのパス|
|%exename%|システムメニューを表示しているプログラムのファイル名|
|%dir%|システムメニューを表示しているプログラムのディレクトリ|
|%curdir%|システムメニューを表示しているプログラムのカレントディレクトリ|
|%arg%|システムメニューを表示しているプログラムに渡された引数|
|%class%|システムメニューを表示しているウィンドウのクラス名|
|%title%|システムメニューを表示しているウィンドウのタイトルバー文字列|
|%titledir%|ウィンドウのタイトルバー文字列から抜き出したディレクトリパス|
|%titlepath%|システムメニューを表示しているウィンドウのタイトルバー文字列から抜き出したパス|
|%hwnd%|システムメニューを表示しているウィンドウのハンドル(十進)|
|%homedir%|menuHacker.exeがあるディレクトリのパス|
|%menuini%|menu.iniのパス|
|%menu_setclip_controltext%|コントロールテキスト (アプリケーションに表示されている文字) をコピーするための置換文字。[[''setclip''>#m1198b55]] と組み合わせて使ったりする|
|%comma%|, (コンマ)|

**ソフトウェア別メニュー [#c308ece6]
[[Ver.1.03>menuHacker/History#y154cfd1]]から、ソフトウェア別に設定が可能になった。これにより、特定のアプリケーション専用のメニューを表示できるようになる。

設定は、''アプリケーションのファイル名.ini''をmenuHacker.exeがあるディレクトリに作成し、menu.iniと同様に編集すればよい。

例えば、''Mame5.exe''の設定ファイルは
 Mame5.ini
となる。なお、''Explorer''の場合は、
 explorer.ini
となる。

Top   Edit Diff Backup Upload Copy Rename Reload   New List Search RecentChanges   Help   Hatena Bookmark   RSS of RecentChanges