【問題】如何取消右鍵選單內的選項首字底線



贊助商連結


chrisdar
2007-02-10, 03:32 PM
我在CMD下達
REG ADD HKEY_CLASSES_ROOT\exefile\shell\日本語執行\command /ve /t REG_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%1\" \"/L0411\"" /f
這樣的指令

發現右鍵選單內 日 這個字有底線 如何取消掉 謝謝

贊助商連結


琥珀
2007-02-10, 04:03 PM
登錄編輯器,「日本語執行」此字串改為「ja-jp」,在「(預設)」的地方,資料填入「日本語執行(&J)」。

如果要使用 %windir% 之類的變數,資料類型建議使用「可擴充字串值」,即「REG_EXPAND_SZ」。

chrisdar
2007-02-10, 04:21 PM
thank you!

Install AppLocale to RightKey.bat
@echo off
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Japanese AppLocale" /ve /t REG_SZ /d "日本語執行(&J)" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Japanese AppLocale\command" /ve /t REG_EXPAND_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%1\" \"/L0411\"" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Simplified Chinese AppLocale" /ve /t REG_SZ /d "簡體中文執行(&S)" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Simplified Chinese AppLocale\command" /ve /t REG_EXPAND_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%1\" \"/L0804\"" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Traditional Chinese AppLocale" /ve /t REG_SZ /d "繁體中文執行(&T)" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Traditional Chinese AppLocale\command" /ve /t REG_EXPAND_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%1\" \"/L0404\"" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Korean AppLocale" /ve /t REG_SZ /d "韓國語執行(&K)" /f
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Korean AppLocale\command" /ve /t REG_EXPAND_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%1\" \"/L0412\"" /f

unInstall AppLocale from RightKey.bat
@echo off
REG DELETE "HKEY_CLASSES_ROOT\exefile\shell\Japanese AppLocale" /f
REG DELETE "HKEY_CLASSES_ROOT\exefile\shell\Simplified Chinese AppLocale" /f
REG DELETE "HKEY_CLASSES_ROOT\exefile\shell\Traditional Chinese AppLocale" /f
REG DELETE "HKEY_CLASSES_ROOT\exefile\shell\Korean AppLocale" /f

mus000
2007-02-10, 10:56 PM
1. 那個右鍵選單項目字下有底線的功能是右鍵選單的快速鍵的意思。
(&J) 就是將快速鍵設定成 "J" 的意思。(右鍵選單有打開時有效)
另外,系統有預設一些快速鍵在右鍵選單上,比如 (&T)剪下,(&S)建立捷徑。快速鍵設定可以重覆,只是一但有兩個以上的項目使用同一快速鍵時,會變成在各項目間的快速切換選項功能,要多按一下 enter 才會執行。

2. 要取消底線,有一個作法是取消設定快速鍵的功能。
快速鍵功能取消就是把 (&J) 刪掉就行了。
也許有人會問 "日本語執行(&J)" 這樣設定也是沒有底線阿? why?
因為在 "日本語執行"這幾字中 並沒有 "J" 存在,所以不會標出有底線的J。
如果改成 "J日本語執行(&J)" 這樣,就會看到 J 字下有底線了。

3. 在機碼無預設值時,系統會有預設快速鍵,通常是字首,所以字首就有底線了。而字首是非英文時,那通常是按不出來的快速鍵。

以下做個比較:
----
無預設值時 "HKEY_CLASSES_ROOT\exefile\shell\日本語執行"
顯示"日"字會有底線,但快速鍵可能按不出來。
----
J日本語執行(&J): "J"字會有底線,快速鍵J有效。
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\日本語執行" /ve /t REG_SZ /d "J日本語執行(&J)" /f
----
日本語執行(&J): 字不會有底線,但快速鍵J有效。
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\日本語執行" /ve /t REG_SZ /d "日本語執行(&J)" /f
----
日本語執行: 字不會有底線,快速鍵也無效。
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\日本語執行" /ve /t REG_SZ /d "日本語執行" /f
----

4. 關於 REG_EXPAND_SZ 是可以在機碼內容中設定可變動參數的功能。
也就是,除了你匯入機碼時是使用 %windir% 這類系統變數有效之外,當你從機碼匯出時,它也是以 %windir% 這樣子存在。只是這類機碼匯出時,是以二進位資料存在,不易辨識原本內容。使用上隨個人喜好。

5. 在 bat cmd 這類命令檔中,對於 %1 會有不同解讀喔。
在cmd命令視窗中,一行一行打指令時, %1 就是顯示 %1。
但是在 bat 檔案中, %1 有特別的意義。這時要改用 %% 來取代 % 才會顯示%,也就是原本的 %1 要改成 %%1 ,在 bat 檔執行後才會正常顯示想要的結果。

所以,bat 寫法可以修改一下。不然會執行時找不到程式參數的。
例如改成:
REG ADD "HKEY_CLASSES_ROOT\exefile\shell\Japanese AppLocale\command" /ve /t REG_EXPAND_SZ /d "%SystemRoot%\AppPatch\AppLoc.exe \"%%1\" \"/L0411\"" /f

PS: 之前網路上找到的資料,都是使用 reg 檔在做的,也是因為 bat 檔有 % 變數的問題,常有人弄混了功能就不正常了。
在 bat 批次檔中, %1 %2 .... %9 是有意義的批次檔參數值。

其它限制:
單一字串中有一個的 % 會被視為 nul 字元。
雙 %% 字元,則表示為一個 % 字元。
前後兩個 % 夾集字串,為一個變數值。

琥珀
2007-02-11, 12:33 AM
批次檔內,systemroot 前後也各自使用兩個 %,不然資料會自動展開,成為一般的字串值了。

reg add "HKEY_CLASSES_ROOT\exefile\shell\ja-jp\command" /ve /t REG_EXPAND_SZ /d "%%windir%%\AppPatch\AppLoc.exe \"%%1\" \"/L0411\"" /f