過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/01/13
秀丸マクロで ShellExecute() を再現するには

 
秀丸エディタで「お気に入りの動画、音楽、アプリケーション」などを
ファイル名で管理し、その行から簡単に起動できるマクロを作りました。
 
しかし、無知ゆえに車輪の再発明をやってしまた。
 
 
具体的には HKEY_CLASSES_ROOT から目的の拡張子を調べ、取得できた定義を
元に、再度レジストリから open コマンドを調べ、目的の exe を取得し、ファイル
を渡してアプリケーション起動、というのを、
 
・reg コマンド( Windows XP 以降で標準 / win2000 はオプション )
・runex() マクロ ( 秀丸 8.00 以降 )
 
を利用して再現したのですが、完成してからもっと簡単にできることを知った。
 
◆ShellExecute を行いたい場合

rundll32.exe url.dll,FileProtocolHandler
"目的のファイル"
 
とやるだけで良かった… 簡易ならば。
 
関連付け実行は url.dll 内の FileProtocolHandler で再現できるので、 ファイル名
渡してやるだけで OK です。
 
例えば c:\hoge.mp3 というファイルを再生する秀丸マクロはこんな感じ。
 
run( "rundll32.exe url.dll,FileProtocolHandler" + "\"c:\\hoge.mp3\"" );
 
 
但し Windows Vista SP2 にて検証した所、長い日本語ファイル名?だと
関連付け起動が出来ない場合がありました。
 
バグなのか、仕様なのかは不明。
 
該当プロセスの exe に引数を渡すと起動できたので、自力でレジストリから
関連付けを調べ、引数を渡す方が完璧かも。 
 
 
私が作成したマクロでは、カーソル行の文字列に対して
 
  ・trim()
  ・trim( "ファイルに利用できない文字列" );
 
とやっているのですが、これだけで非常に実用的なお気に入りリストファイルが
出来上がりました。
 
ファイルをどこにやったか忘れても、テキストファイルに記載しておけば
 
◆お気に入り.txt 
  
  video_fav01.mp4  //  ここは同一ディレクトリのファイル
  video_fav02.flv
  c:\video\video_fav02.flv  //  フルパスでのお気に入り

◆後で聞こう
          c:\music\music_fav02.mp3  // 2010/01/01 追加
          c:\music\music_fav03.mp3  // 2010/02/01 追加

◆フリーソフト
    c:\exec\freesoft\base64.exe   // base64 のアプリ
    d:\bin\zeroremote\zeroremote.exe // リモートデスクトップ
    ..\app\launch.exe // 相対パス

◆お気に入りサイト
      http://www.google.co.jp/
 
上記のように記載しておけば、テキストファイルから "お気に入り" を
キーボード一発、またはマクロ実行をクリックして起動できるので非常に便利。
 
全てのファイル、実行ファイルに対してコメントを残し、お気に入りの概念を
適応できるのはオススメ。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。