artonです。

On Thu, 15 Mar 2001 23:47:08 +0900
Koga Atsushi <kog / ceres.dti.ne.jp> wrote:
> Win32OLE::ARGV, 期待してていいですか?(^^;

diff win32ole.c.org win32ole.c
1114c1114,1115
< 
---
>     VALUE args;
>     
1210a1212,1214
>     args = rb_cvar_get(cWIN32OLE, rb_intern("ARGV"));
>     rb_eval_string("WIN32OLE::ARGV.clear");
>     
1230c1234,1235
<     for(i = 0; i < op.dp.cArgs; i++ ) {
---
>     for(i = op.dp.cArgs - 1; i >= 0; i--) {
> 	rb_ary_push(args, ole_variant2val(&op.dp.rgvarg[i]));
2275a2281,2282
>     rb_define_const(cWIN32OLE, "ARGV", rb_ary_new());
>     

これは、win32oleのパッチですが、それとは別に、ActiveScriptRubyにも入れて
みました。(というか、win32ole側には入れてないですが)

#rb_ary_clearを外部に出して欲しいです。

(ページ自体の更新は、後日)

require 'win32ole'
locator = WIN32OLE.new("WbemScripting.SWbemLocator.1")
p WIN32OLE::ARGV
service = locator.ConnectServer
p WIN32OLE::ARGV
proc = service.Get "Win32_Process"
p WIN32OLE::ARGV
rc = proc.Create('notepad.exe', 'd:\\work', nil, nil)
WIN32OLE::ARGV.each do |x|
 p x
end

をActiveScriptRubyで実行
cscript argtest.rb
Microsoft (R) Windows Script Host Version 5.1 for Windows
Copyright (C) Microsoft Corporation 1996-1999. All rights reserved.

ruby: warning: already initialized constant ARGV
[]
[]
["Win32_Process"]
"notepad.exe"
"d:\\work"
nil
1684

で、Taskmanで、notepad.exeのプロセスIDは、1684を確認。

-- 
arton <arton / geocities.co.jp>