2

Windowsでファイルを編集するためにgvimのcygwinバージョンを使用しています。そのため、gvimのcygwinバージョンでファイルを開くバットスクリプトを作成しました(パスをcygwin形式に変換することにより)。また、このバット スクリプトを Windows エクスプローラーに登録するための小さな PowerShell スクリプトを作成して、[開く] コンテキスト メニューを使用してファイル拡張子を関連付けることができるようにしました。スクリプトは次のとおりです。

$ErrorActionPreference = "Stop"
$classes="hkcu:\software\classes"
$appid="cygwin.gvim"
$apps="$classes\applications"
$cmd='...SOMEDIRECTORY...\edit-gvim.bat'
$friendlyname='gVim (Cygwin)'
$icon='...ANOTHERDIRECTORY...\vim.ico'
$filetypes=@(".txt", ".ps1", ".sh", ".py", ".cs", ".cpp", ".c", ".rb",
    ".zsh", ".bash", ".vbox", ".xml", ".yml", ".yaml", ".bat")

if (test-path "$apps\$appid") {
  # cleanup
  remove-item -recurse "$apps\$appid"
}

# register open commands to know filetypes
new-item -path "$apps\$appid\shell\open\command" -value "$cmd `"%1`"" -force

# add a context menu item(edit with gVim) to every file in windows explorer
new-item -path "$classes\*\shell\Edit with $friendlyname\command" -value "$cmd `"%1`"" -force

# friendly name for the 'open with' dialog
new-itemproperty -path "$apps\$appid\shell\open" -name 'FriendlyAppName' -value $friendlyname

# register the icon
# FIXME this has no effect 
new-item -path "$apps\$appid\DefaultIcon" -value $icon -type expandstring

# register supported file extensions
new-item -path "$apps\$appid\SupportedTypes"
foreach ($ext in $filetypes) {
  new-itemproperty -path "$apps\$appid\SupportedTypes" -name $ext -PropertyType string -value ''
}

明らかに効果がない「FIXME」コメントの下の行を除いて、すべてが機能します。gvim に関連付けられたアプリケーションで提供されたアイコンが表示される代わりに、不明なファイル タイプの Windows の既定のアイコンが表示されます。ここで何が欠けていますか?

このスクリプトを作成するために使用したリソースを次に示します。

4

1 に答える 1

0

私は間違いを犯す可能性がありますが、 is の構文を理解している限りDefaultIcon:

"Full path to a file,ordinal"

これは、EXE または DLL 内のリソースを参照する場合に便利です。

C:\Program Files (x86)\PowerGUI\ScriptEditor.exe,1

ただし、アイコン ファイルを指定する場合は、同じ構文を維持する必要があります。

[HKEY_CLASSES_ROOT\AcroExch.acrobatsecuritysettings.1\DefaultIcon]
@="C:\\Windows\\Installer\\{AC76BA86-7AD7-1036-7B44-A95000000001}\\PDFFile_8.ico,0"

だから、あなたの場合、私は試してみます:

$icon='...ANOTHERDIRECTORY...\vim.ico,0'

また

$icon='...ANOTHERDIRECTORY...\\vim.ico,0'

編集済み

新しいアイコンを表示するには、explroer.exe を再起動することを忘れないでください。

于 2013-04-18T03:43:07.407 に答える