ruby-LEDの日記

2006-10-31

WIN32OLEWebサイトログイン

#!/usr/bin/ruby

require 'win32ole'

my_id = "myname"
my_pass = "mypass"

ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("http://test.example.com/Login.html")
ie.Visible = true
while ie.busy
  sleep 1
end
name = ie.document.all.Item("LoginName")
name.Value = my_id
pass = ie.document.all.Item("Password")
pass.Value = my_pass
btn = ie.document.all.Item("OK_BUTTON")
btn.click()

ログインするだけじゃ便利じゃないので、ちょっと改造したいな

JuliemugJuliemug2017/11/15 11:50このメッセージは、XRumer + XEvil 4.0を使用してここに掲載されています
XEvil 4.0は革命的なアプリケーションで、ほとんどのアンチボットネット保護をバイパスできます。
Captcha Recognition Google (ReCaptcha-1, ReCaptcha-2)、Facebook、Yandex、VKontakte、Captcha Comなど、8400万種類以上の他の種類があります!
あなたはこれを読む - それは動作することを意味します! ;)

トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20061031

2006-10-17

WIN32OLEExcelファイルから情報取得

#!/usr/bin/ruby -Ks

require 'win32ole'

#windowsパスの取得
def getAbsolutePath file
	fso = WIN32OLE.new('Scripting.FileSystemObject')
	fso.GetAbsolutePathName(file)
end

#セルの情報を取得
def getFuncData file
	file = getAbsolutePath(file)
#	$excel.visible = TRUE #動作確認時はコメントを外す
	book = $excel.Workbooks.Open(file)
	sheet = book.Worksheets(1)
	puts sheet.Range('C15').value
	book.Close
end

$excel = WIN32OLE.new('excel.Application')
ARGV.each{|file| #ファイルリストの受け取り
	if file.length > 0
		print file.sub(/\.xls/,"") + ","
		getFuncData(file)
	end
}
$excel.Quit

スクリプトを改造した

 ./script.rb *.xls

とできるように

その他気になる点の改造

22ループだと

real    0m10.515s
user    0m0.109s
sys     0m0.093s

もともとは

real    0m17.125s
user    0m0.124s
sys     0m0.155s

でも一番大きいのは実行時間じゃなくてメモリ

なので22ループで220MBとか使ってた

トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20061017

2006-10-14

win32oleを使ってみた

#windowsパスの取得
def getAbsolutePath filename
	fso = WIN32OLE.new('Scripting.FileSystemObject')
	fso.GetAbsolutePathName(filename)
end

#テンプレートに関数名を記入
def makeFunctionBook funcname
	filename = getAbsolutePath($template)

	excel = WIN32OLE.new('Excel.Application')
	excel.visible = TRUE
	book = excel.Workbooks.Open(filename)
	sheet = book.Worksheets(1)
	sheet.Name = funcname
	sheet.Range('C3').value = funcname

	filename = funcname + '.xls'
	book.SaveAs(funcname)
	book.Close
	excel.Quit
end

#関数名リストの受け取り
while gets.to_s.chomp!
	if $_.length > 0
		puts $_ + " start"
		makeFunctionBook($_)
	end
end

改造

require 'win32ole'
require 'csv'
$template='template1.xlt'

#windowsパスの取得
def getAbsolutePath filename
	fso = WIN32OLE.new('Scripting.FileSystemObject')
	fso.GetAbsolutePathName(filename)
end

#テンプレートに関数名を記入
def makeFunctionBook funcinfo
	filename = getAbsolutePath($template)

	excel = WIN32OLE.new('Excel.Application')
	excel.visible = TRUE
	excel.displayAlerts = FALSE #同名のファイルがあったら強制的に上書きする
	book = excel.Workbooks.Open(filename)
	sheet = book.Worksheets(1)
	sheet.Name = funcinfo[0]
	sheet.Range('C3').value = funcinfo[0]
	sheet.Range('C15').value = funcinfo[1]

	filename = funcinfo[0] + '.xls'
	book.SaveAs(funcinfo[0])
	book.Close
	excel.Quit
end

CSV.foreach(ARGV[0]){|row|
	puts row[0]
	makeFunctionBook(row)
}
トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20061014

2006-06-25

ブロック

irb(main):001:0> {
irb(main):002:1* p "hello"
irb(main):003:1> p "bye"
irb(main):004:1> }
SyntaxError: compile error
(irb):2: parse error, unexpected tSTRING_BEG, expecting kDO or '{' or '('
p "hello"
   ^
(irb):4: parse error, unexpected '}', expecting $
        from (irb):4
$ {
> echo hello
> echo bye
> }
hello
bye
  • 関数に渡してあげれば動く
irb(main):001:0> def callBlock
irb(main):002:1> yield
irb(main):003:1> yield
irb(main):004:1> end
=> nil
irb(main):005:0> callBlock { p "In the Block" }
"In the Block"
"In the Block"
=> nil
  • 次はyieldのパラメータ
    • なんかピンとこないので何個かサンプルを動かして見るとよさげ
トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060625

2006-06-24

十日振りにRubyに触る。

[]文修飾子

  • if文
irb(main):001:0> radiation = 3000
=> 3000
irb(main):002:0> puts "Danger, Will Robinson" if radiation > 3000
=> nil
irb(main):003:0> puts "Danger, Will Robinson" if radiation > 2999
Danger, Will Robinson
=> nil
  • while文
irb(main):004:0> square = 2
=> 2
irb(main):005:0> p square = square*square while square < 1000
4
16
256
65536
=> nil
  • 処理の後ろに条件が書けるのですね。
$ radiation=3000
$ [ $radiation=3000 ] && echo "Danger, Will Robinson"
Danger, Will Robinson

正規表現

  • エラーが出るよ
irb(main):009:0> if line =~ /Perl|Pyton/
irb(main):010:1> puts "Scripting language mentioned: #{line}"
irb(main):011:1" end
TypeError: can't convert Regexp into String
irb(main):018:0> p('12\d+34' =~ '\d+')
TypeError: type mismatch: String given
        from (irb):18:in `=~'
        from (irb):18
    • むう、使い方がよく分からない
トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060624