情報
概要
拡張子とアイコンをアプリケーションと関連付けします。
解説
引数
拡張子:「.○○」or「○○」
起動パス:実行するパス
アイコン:アイコンファイルへの絶対パス
サンプルプログラム
●母艦設計
母艦の可視=オフ。
アイコン=「{母艦パス}sample.ico」。//自分で用意
拡張子=「aiueo」。
起動パス=「notepad.exe」。
拡張子を起動パスとアイコンで関連付け。
「{拡張子}{改行}{起動パス}{改行}---{改行}関連付けしました」と言う。
母艦パスでエクスプローラー起動。
「てすてす」を「{母艦パス}test.aiueo」に保存。
60秒待つ。
もし、「{母艦パス}test.aiueo」の存在=はいならば、「{母艦パス}test.aiueo」をファイル削除。
拡張子を関連付け解除。
「関連付けを解除しました」と言う。
終わり。
//本体
●関連付け(拡張子を起動パスとアイコンで)
もし、拡張子の1から1バイト抜き出す=「.」ならば、拡張子の1から1バイト削除。
HndR="HKEY_CLASSES_ROOT\.{拡張子}\"のレジストリ開く。
HndRで""に"{拡張子}"をレジストリ書く。
HndRのレジストリ閉じる。
もし、アイコンの存在=いいえならば、アイコン=0。
HndR="HKEY_CLASSES_ROOT\{拡張子}\DefaultIcon\"のレジストリ開く。
HndRで""に"{アイコン},0"をレジストリ書く。
HndRのレジストリ閉じる。
HndR="HKEY_CLASSES_ROOT\{拡張子}\Shell\Open\Command\"のレジストリ開く。
HndRで""に"{起動パス} %1"をレジストリ書く。
HndRのレジストリ閉じる。
SHChangeNotify(SHCNE_ASSOCCHANGED,0,0,0)。
●関連付け解除(拡張子を)
もし、拡張子の1から1バイト抜き出す=「.」ならば、拡張子の1から1バイト削除。
HndR="HKEY_CLASSES_ROOT\.{拡張子}"のレジストリ開く。
HndRで""をレジストリキー削除。
HndRのレジストリ閉じる。
HndR="HKEY_CLASSES_ROOT\{拡張子}\"のレジストリ開く。
HndRで""をレジストリキー削除。
HndRのレジストリ閉じる。
SHChangeNotify(SHCNE_ASSOCCHANGED,0,0,0)。
!SHCNE_ASSOCCHANGED = $8000000
●SHChangeNotify(w,f,i1,i2) =DLL("shell32.dll","VOID SHChangeNotify(LONG wEventId,uINT uFlags,LPCVOID dwItem1,LPCVOID dwItem2)")
- 使わせて頂きました。 レジストリへの記入を「{起動パス} %1」→ 「{起動パス} "%1"」にしないと、ファイルパス中のスペースで区切られてしまう様です。 -- 名無しさん (2013-04-11 15:16:19)
最終更新:2013年04月11日 15:16