ようこそゲストさん

Super Neurotic Junction

メッセージ欄

2012年2月の日記

一覧で表示する

2012/02/26(日) rubyでメッセージボックス

2012/02/26 23:03 研究課題snjx
メッセージボックスというか、Windows Scripting Hostのpopupなんだけど。
ポイントはVbOKOnlyとかの定数を書いているところ。
win32oleの使い方は結構あちこちで書いてあるし、excelなんかが持っている定数をrubyで使う方法なんかは探すと見つかるけど、意外や意外、普通にメッセージボックスを使う方法が結構少なかった。
で、ま、最低限いりそうな部分を書いてみたのさ。
require 'win32ole'
require 'singleton'

class Msgbox
	include Singleton
	# ボタンの種類
	VbOKOnly		= 0		#[OK] 
	VbOKCancel		= 1		#[OK]  [キャンセル] 
	VbAbortRetryIgnore	= 2		#[中止] [再試行] [無視] 
	VbYesNoCancel		= 3		#[はい] [いいえ] [キャンセル] 
	VbYesNo			= 4		#[はい]  [いいえ] 
	VbRetryCance		= 5		#[再試行]  [キャンセル] 
	# アイコン
	VbCritical		= 16	#警告メッセージ アイコン
	VbQuestion		= 32	#問い合わせメッセージ アイコン
	VbExclamation		= 48	#注意メッセージ アイコン
	VbInformation		= 64	#情報メッセージ アイコン
	# ボタン戻り値
	VbOK			= 1		#[OK]ボタン
	VbCancel		= 2		#[キャンセル] ボタン。
	VbAbort			= 3		#[中止] ボタン。
	VbRetry			= 4		#[再試行] ボタン。
	VbIgnore		= 5		#[無視] ボタン。
	VbYes			= 6		#[はい] ボタン。
	VbNo			= 7		#[いいえ] ボタン。
	def initialize
		@wsh = WIN32OLE.new('WScript.Shell')
	end
	
	def open(strText,intSecondsToWait,strTitle,intType = VbOKOnly + VbInformation )
		@wsh.popup(strText,intSecondsToWait,strTitle,intType)
	end
end

msgbox = Msgbox.instance
msgbox.open("hoge",0,"fuga") #デフォ

ret = msgbox.open("hoge",0,"fuga", Msgbox::VbOKCancel + Msgbox::VbCritical ) #OkCancelでやばいアイコン

case ret 
when Msgbox::VbOK
	puts "ok"
when Msgbox::VbCancel
	puts "cancel"
end

続きを読む

1: 『クラス内の定義を削除して、 WIN32OLE.const_load('Visual Basic For Applications...』 (2022/02/28 11:46)

2012/02/23(木) くるくる回る

2012/02/23 24:10 研究課題snjx
深夜に思いついてしまった。
rubyでコマンドラインでくるくる回る。
@str = '(´v` )'

def windmill
	case @str
		when '(´v` )'
		@str='(v`   )'
		when '(v`   )'
		@str='(`    )'
		when '(`    )'
		@str='(      )'
		when '(      )'
		@str='(    ´)'
		when '(    ´)'
		@str='(   ´v)'
		when '(   ´v)'
		@str='( ´v`)'
		else
		@str= '(´v` )'
	end
	print "\r" + @str
end 

20000.times {
	windmill
}

2012/02/12(日) rubyでfso

2012/02/12 15:11 研究課題snjx
ちょっとしたツールを作ったときに、事前調査代わりに小手調べしたコードを書いておく。
日常的な作業を一部自動化させたくて、ちょっとディレクトリの操作をしたかったの。
# 指定したフォルダ以下のサブフォルダを全部出力

require 'win32ole'

def getSubFolders folders
	folders.each do |folder|
		puts folder.Path
		getSubFolders folder.subFolders
	end
end

fso = WIN32OLE.new('Scripting.FileSystemObject')

getSubFolders fso.getFolder(ARGV[0]).subFolders

ARGV[0]ってのはコマンドラインの第一引数をあらわすわよ。