FrontPage  Index  Search  Changes  RSS  wikifarm  Login

ext_to_cmd.rb

概要

ext_to_cmd

Windowsの拡張子の割りつけを調べて、拡張子に対応するコマンドのパスを返すメソッドです。


依存性

Windows専用ですが、Apolloには依存しません。

利用者


実行見本:

1.jpg

コメントがありましたらどうぞ

(comment plugin is disabled).

説明


ソース:

ext_to_cmd.rb

#! ruby -Ks
#-- G:/apollo/tkUtils/ ext_to_cmd.rb

#-- ext_to_cmd(ext)
#
#-- Windowsの拡張子の割りつけを調べて、拡張子に対応するコマンドのパスを返す。
#
#-- exe_path = ext_to_cmd(".pxd") #=> "\"C:\\Program Files\\pxd\\pxdoc.exe\" \"%1\""
#-- cmd = exe_path.sub(/%1/){pxd_path} if pxd_path
#-- 引数には「.」が必要。
#-- 見つからなければ nil を返す。
#-- コマンドのパスの後に「 -o \"%1\"」といった付加要素がついたまま返す。
#-- 付加要素は自分で削除するか、String#sub で入れ換えること。

#-- インストールされているかどうかのチェックにも使える。

#-- run_as_sub_process.rb とペアで使うことを想定して作った。

require "win32/registry"

class Win32::Registry
  def self.ext_to_cmd(ext)
    doc = open(HKEY_CLASSES_ROOT, ext) { |reg| reg.read(nil)}[1]
    cmd = open(HKEY_CLASSES_ROOT, "#{doc}\\shell\\open\\command") { |reg| reg.read(nil)}[1]
  rescue Win32::Registry::Error
    nil
  end
end

def ext_to_cmd(*args)
  Win32::Registry.ext_to_cmd(*args)
end

if __FILE__ == $0
p  ext_to_cmd(".pxd")  #=> "\"C:\\Program Files\\pxd\\pxdoc.exe\" \"%1\""
p  ext_to_cmd(".doc")  #=> "\"C:\\Program Files\\OpenOffice.org 2.0\\program\\soffice.exe\" -o \"%1\""
p  ext_to_cmd(".rb")   #=> "\"C:\\Program Files\\Apollo\\bin\\Apollo_q.exe\" \"%1\""
p  ext_to_cmd(".html") #=> "\"C:\\Program Files\\Opera\\opera.exe\" \"%1\""
p  ext_to_cmd(".err")  #=> nil
end

Last modified:2006/08/17 13:32:18
Keyword(s):
References: