みやむこです。

岩崎 弘孝 wrote:
> 今回、windowsでコンテキストメニュー(マウス右ボタンのメニュー)の「印刷」
> を実行したく
> 以下のコードを作成しましたが、デフォルトの動作である「開く(&O)」に相当す
> 
> 動作しかしないようです。解決策のご助言をお願いします。

(もう解決しているかもしれませんが) InvokeVerb を使わずに Verbs の中から
自分で探して、doIt してあげるとできるみたいです。


#!ruby -Ks
require 'win32ole'

class WIN32OLE
  include Enumerable
end

parent, name = File.split(File.expand_path(ARGV.shift))
parent.gsub!("/", "\\")

shell = WIN32OLE.new('Shell.Application')
verbs = shell.NameSpace(parent).ParseName(name).Verbs
#puts verbs.map {|v| v.Name }

if v = verbs.find {|v| v.Name == "印刷(&P)" }
  v.doIt
  sleep(2) # 起動が遅い場合 (excel とか)、少し待ってあげないとだめ。
else
  puts "印刷できません"
end