【ActiveScript】RubyをWindowsで使うスレ【GUI】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2006/08/08(火) 19:08:09
他プラットホームとの互換性なんかいらん!
漏れはWindowsの上だけで快適に使いたいんだ!
Windows独自の技術的な話題や、
Windows版だけのrubyの問題について語るスレ。

■ruby
 http://www.ruby-lang.org/ja/

■ruby関連スレ
 ・Rubyについて Part 22 (本スレ?)
  http://pc8.2ch.net/test/read.cgi/tech/1147897915/
 ・Ruby初心者スレッドPart7
  http://pc8.2ch.net/test/read.cgi/tech/1154077799/l50

2006/08/11(金) 16:53:04
>>35
脳みそに蛆湧いてんちゃうか
2006/08/11(金) 18:22:07
Windows板でやれば?
2006/08/13(日) 01:02:58
VREdit/VRRadiobutton/VRCheckbox/VRButton
くらいしか使わないけど落ちたり固まったりしたことはないな
2006/08/13(日) 12:50:38
Microsoft、.NETに動的言語サポートを段階導入
http://www.itmedia.co.jp/enterprise/articles/0608/10/news093.html

RubyCLR
http://thinkchiro.com/
2006/08/13(日) 17:24:38
そもそも、VisualuRubyで作られているFormDesignerがよく落ちる。
2006/08/13(日) 17:33:52
>>37
> Windows板でやれば?

Windows板の表題を検索したが、java VB VisualBasic C# delphi Python Perl Ruby など、
言語に関するスレは一つもなかった。Windows板でのRubyの話題は板違いだろう。
2006/08/13(日) 17:35:27
Ruby on Windowsに望むのは

.rbをコマンドプロンプト版に、
.rbwを非コンソール版に関連付けて欲しい。

環境変数pathextに.rbを登録したらfoo.rbを
dir /s /b | foo > result.txt
のように使えるようにして欲しい。

某インストーラで登録されるスタートメニューのアイコンの位置が微妙な所を改善。

Windows限定でいいので
Pathnameかなんかに'/' <-> '\\'の相互変換メソッドが欲しい

Rubyインストールするたびに上記の拡張子周りの設定して回るのは正直うんざり。
2006/08/13(日) 17:50:46
>>42
> Ruby on Windowsに望むのは
どのバイナリパッケージについていってる?

> 環境変数pathextに.rbを登録したらfoo.rbを
> dir /s /b | foo > result.txt
> のように使えるようにして欲しい。
>>20
2006/08/13(日) 17:57:27
そのうち出るだろう.NET版Rubyは.NET版としての進化を続けるだろうが、

いまのASRなどに期待したいのは、.NETになる前のVBのように、
Windowsでのプログラムを一通り手軽に実現出来る環境。

環境だけならかなりいいところまで出来ているんだけど、GUIが不安定で・・・
2006/08/13(日) 18:03:53
>>44
> GUIが不安定で・・・

あ、VisualuRubyの話ね。FXRubyとかは未確認。
2006/08/13(日) 18:10:47
>>>20
いや、そういう情報かき集めて手作業でやりたくないって話
2006/08/14(月) 03:39:11
今知ったんだからもう情報かき集める必要ないし、
バッチ書けば手作業の必要も無い
2006/08/14(月) 06:42:51
Ruby関連プロジェクトってって腰が重いよな・・・
個人的に不便に思ってる点が改善されたことが一度もない。
2006/08/14(月) 10:14:50
本スレでもそうだけど要望出るといちいち必要ないとか
火消しに回ってる部隊はなぜそんなことやってるのか意味がわからん
2006/08/14(月) 10:27:58
>>49
必要のあるなしを吟味せずに、無節操に取り入れていったらどうなるか考えてみろ
2006/08/14(月) 10:29:26
キターw
2006/08/14(月) 11:40:05
>>48
kwsk。出来れば具体的なプロジェクト名を。

>>49
2chに限定した話?

2chのスレや日記などであげられていた問題がきっかけで
直接修正されたということなら数回見たことがあるけど、
そんなにひどいことってあったかな。
出来ればどのスレのどの辺りって教えてくれませんか。
2006/08/14(月) 14:39:32
vrubyはdelphiみたいなAnchorsはないのかな
あれがあるだけでレイアウトが簡単になるのだが
2006/08/14(月) 14:48:16

    ∧∧  ミ _ ドスッ
    (   ,,)┌─┴┴─┐
   /   つ. 要望禁止│
 〜′ /´ └─┬┬─┘
  ∪ ∪      ││ _
           ゛゛'゛'゛
2006/08/14(月) 15:37:36
>>53
なんだAnchorsって。
2006/08/14(月) 15:39:50
>>53
Apollo使えば?
57デフォルトの名無しさん
垢版 |
2006/08/15(火) 16:17:52
vrubyで、次のようにしてウィンドウの位置と大きさを保存・復帰させてみたのですが、
起動と終了を繰り返すたびにウィンドウが小さくなってしまいます。
どうすれば正しくできるのでしょうか?

require 'vr/vruby'
require 'vr/vrhandler'
require 'pstore'

class Form1 < VRForm
  include VRClosingSensitive
  #include VRMessageHandler
 
  def construct
    @db = PStore.new("window.db")
    @db.transaction do
      pos = @db["pos"] || @db.abort
      p pos
      self.move(*pos)
    end
  end
 
  def self_close
    @db.transaction do
      @db["pos"] = [x, y, w, h]
    end
  end
end

VRLocalScreen.start(Form1)
2006/08/15(火) 18:19:07
>>57
バグか仕様か知らんけど、x,y,w,hはクライアント領域のものなので、
それを使ってmoveしちゃうとタイトルバーとかウィンドウ枠とかの分
どんどん小さくなる。
self_closeで、
@db["pos"] = [x, y, w, h]
でなく
@db["pos"] = self.windowrect
とすればうまくいくんじゃないか? 試してないが。
5957
垢版 |
2006/08/15(火) 19:13:51
>>58
その通りでした。おかげでうまくいきました。
2006/08/15(火) 22:23:50
>>42
> Windows限定でいいので
> Pathnameかなんかに'/' <-> '\\'の相互変換メソッドが欲しい

'\\'->'/'はFile.expand_pathでできるよね
'/'->'\\'は単純にgsubでも大丈夫だと思うけど
それじゃだめ?
2006/08/15(火) 22:39:38
デフォルトのパス区切りが/なんてWindows環境じゃありえないウンコ仕様は未来永劫直らないんだろうな。
2006/08/15(火) 22:44:57
別にどっちもウンコ仕様だとは思わないけど。
2006/08/15(火) 22:45:58
ああ、RubyのWin対応がウンコって意味か。
それなら同意
2006/08/16(水) 01:37:02
殺伐としてるなぁ
2006/08/16(水) 05:07:48
殺伐としてる割には進行遅いがな
2006/08/16(水) 16:46:48
>>33 のすぐ落ちる画面を書いてみた。

require 'vr/vruby'
require 'vr/vrcomctl'
require 'vr/vrcontrol'

class Test_Form < VRForm
  def self_created
    self.caption = 'form1'
    self.move(265,185,600,400)
    addControl(VRListview,'listView',"listView",56,16,488,304,1342177281)
    @listView.addColumn("column1",100)
    @listView.addColumn("column2",120)
    Thread.start do
      loop do
        @listView.insertItem(0,[Time.now.strftime("%H:%M:%S") , "auauauauauau"])
#         sleep(0.1)
      end
    end
  end
end

VRLocalScreen.start Test_Form


スレッドにsleepを入れていないので猛スピードでカラムを挿入するが、
この状態でカラムの幅を変えようとすると画面が固まったり、プログラムが落ちて窓が消えてしまう。
sleepのコメントをはずすと、平均して10回に1回ぐらいの確率(体感)で、固まったり落ちたりする感じ。

あと、カラム1の要素をクリックして選択しようとしても同じ事が起こる。
2006/08/16(水) 16:52:24
なぜ作者に連絡したり、MLに投げたりという発想がないのか
2006/08/16(水) 16:59:27
定期巡回乙であります
2006/08/16(水) 23:01:17
>>66
手元でやってみたが固まりも落ちもしなかった

ひょっとしてActiveScriptRubyのせいじゃない?
るびま15号のartonさんインタビューで、XPでスレッド周りが動かなくなったとか言ってる
2006/08/16(水) 23:11:19
>>69
ActiveScriptRubyだけど、固まりも落ちもしなかった。
2006/08/16(水) 23:12:44
とりあえずお前らrubyとライブラリのバージョンくらい書け。
2006/08/16(水) 23:20:07
>>71
>>33に書かれてるじゃん
2006/08/16(水) 23:23:22
つか、動く報告があったんだから、>>33は他のWindowsバイナリでも落ちるのかどうか
検証してから報告して欲しいな。
2006/08/17(木) 00:28:39
>>66
ASR1.8.4.1で試したけど問題なし。
Webに行ったら1.8.4.5が出てたのでインストールして試したが問題なし。
7533
垢版 |
2006/08/17(木) 01:40:51
環境差の可能性があるって事であわててテストしました。

まず、cygwinをインストールして、
ruby-1.8.4-i386-cygwin.tar.gz
vrswin-040314-i386-cygwin-1.8.tar.gz
vruby-040717-i386-cygwin-1.8.tar.gz

で動作させたら、これは33に書いたとおり、一発で落ちます。

で、サーバー用に動作させていたWindows2000 SP4 で、
ASR 1.8.4.4 で動作させたら、これは、落ちることなく正常動作します。

WindowsXP SP2だと落ちるのか?それとも自分のマシン独自の問題か?
>>70 や、>>74 はXP SP2ですか?

7674
垢版 |
2006/08/17(木) 02:29:09
XP Home SP2
7774
垢版 |
2006/08/17(木) 02:42:38
>>75
どこでダウンロードできるのか書いといてくれよ。探したじゃん。
(ttp://ftp.ruby-lang.org/pub/ruby/binaries/cygwin/1.8/ext/)

CYGWIN_NT-5.1 * 1.5.20(0.156/4/2) 2006-07-01 02:22 i686 Cygwin
ruby 1.8.4 (2005-12-24) [i386-cygwin]

で問題なし。
7874
垢版 |
2006/08/17(木) 02:59:06
もっかい>>33を読んで、「10分放置」をしてみたが、問題なし。

ライブラリ作者に、詳細な環境と状況を添えて、メールしたら?
7969
垢版 |
2006/08/17(木) 04:21:31
swinとvrubyの最新リリースはvrswin060205とvruby060223だからね...
(ASRのパッケージはもちろん最新)
2年前の古いリリース使っておかしいよって言っても作者も困るでしょ

ちなみにおれの環境は
Windows2000SP4、garbagecollect.jpから落とした1.8.4のバイナリ
本家から落としたvrswin060205とvruby060223のセット
ぜんぜん問題なし
2006/08/17(木) 05:47:32
windows2000sp4, mswin32版rubyで固まった。swinのバージョンはよくわからん
2006/08/17(木) 16:08:30
swinのバージョンの検査は

require 'swin'
p SWin::VERSION

かな。
vrubyのバージョン検査方法は?
8233
垢版 |
2006/08/18(金) 01:07:40
>>33 および、>>66のソースの件ですが、

require の3行の下に、

SWin::Application.thread_critical=true

を書き足した所、私の必ず落ちる環境でも、正常動作するようになりました。
よかった〜これでGUIを気兼ねなく使えるかも。

でもなんで?

http://www.osk.3web.ne.jp/~nyasu/vruby/sqa.html

の一番最後に、

>mswin版はデフォルトでtrue。

と書いてあるので、この修正は必要ないと思っていたのに。

ちなみに、

p SWin::Application.thread_critical

でデフォルト値を表示してみるとfalseでした。
環境:ASR1.8.4.4
2006/08/18(金) 01:13:59
追伸
>>75 の、vrubyとswinのバージョンが古いcygwin版でも、
SWin::Application.thread_critical=true
の行を書き足すことで正常動作しました。

皆さんがテストしてくださったおかげで、問題点が絞り込め、
解決に到達出来たようです。本当にありがとうございました。

vrubyの中の人。不安定とか、あらぬ疑いをかけてごめんなさいでした。


2006/08/18(金) 01:35:45
なぜかはわからんが問題解決したってことでデフォルトFALSEに変更されてるっぽい
http://vruby.cvs.sourceforge.net/vruby/swin/swin.c?r1=1.12&r2=1.13

QAにうそ書いてるってことだし、作者に報告しといたほうがいい気がする
2006/08/20(日) 14:54:02
いまここを発見しました。
mswin版rubyとGUIのスレッド相性は、Windowsの構造化例外が
どうとか(詳細忘れました)が原因で、その後ruby本体側の改修で直ったように
見えたので、mswin版もthread_critical=falseをデフォルトにしました。
cygwin版でもおかしなことが起こるということは、他にも何か問題あったんでしょうかね。
(とりあえずうちでは問題出てません。)

sqa.htmlは修正しておきます。
8674
垢版 |
2006/08/20(日) 15:40:35
作者キターーーーーーー&乙であります。
2006/08/21(月) 11:03:40
dl2でドトネトらいくなライブラリを作ることを月狼に命じる
2006/08/21(月) 13:35:47
落ちないけど固まった。
でもタスクマネージャを見るとCPUは回ってるから何かは動いてるんだなと思って-rdebugしたらsegvった。
これどのスレッドが動いてるとか追いかける方法はあるの?

sleepすりゃ問題ない(今のところ)し、thread_criticalでも問題ないみたい。
だいたいスレッド経由でノーウェイトで何の手当もせずにぶん回すような用途って何だろうとは思うが。

バージョンは
・Epson NA701(CoreDuo)
・WindowsXP SP2
・CYGWIN_NT-5.1 hoge 1.5.21(0.156/4/2) 2006-08-09 13:38 i686 Cygwin
・ruby 1.8.5 (2006-08-09) [i386-cygwin] <= preview3
・SWin::VERSION => "060205"
・VRuby => "060223"
2006/08/21(月) 13:42:14
>>88
そういうのは、1.8.4で試すものです
2006/08/21(月) 16:57:26
visualurubyの画面で、ボタンのcaptionに ボタン(&B) と書いても
Alt+B でボタンが押せないんだけど、そういうものなのでしょうか?

なにか、簡単な設定かコード記述で使えるようになったりしますか?
2006/08/21(月) 22:32:06
>>90
http://vruby.sourceforge.net/cgi-bin/wiki.cgi?ToriAezu#i3

VBとかは(&B)とか書いただけでお手軽にショートカットキーが設定できたりするのかね?
92デフォルトの名無しさん
垢版 |
2006/08/21(月) 22:45:11
ageてみる

>>88
core吐かせられるならgdbで追いかけられない?
1.8.5 preview4 が出たみたいだし
入れなおすついでにprintf突っ込んで追っかけてみるとか...
2006/08/21(月) 23:32:48
つーか、>>88は、自分の環境で1.8.4で動くのか落ちるのかはっきりさせろ
2006/08/22(火) 07:50:29
>>91
VB.NETならLabelのTextプロパティに"ほげ(&B)"って書いとけば
ショートカットキーが効くようになる。

# 多分VB6とかでも同じはず
2006/08/22(火) 09:25:59
>>93
めんどくさいのでマシン貸すから自分でやれば。
96デフォルトの名無しさん
垢版 |
2006/08/22(火) 13:30:06
vrubyのリストボックスで、項目をダブルクリックした時に何か処理したいんだけど
どう書けばええの?
9790
垢版 |
2006/08/22(火) 16:14:28
>>91
ありがとうございます。

> http://vruby.sourceforge.net/cgi-bin/wiki.cgi?ToriAezu#i3

確認しました。現状はこんな感じです。

・フォームデザイナ使用。form自体にVReyFeasibleをつけてキーイベントを拾おう。
・ありゃ、self_charイベントでは、ctrl+文字は拾えるが、alt+文字は拾えないみたい(進展がなければ、ctrl+文字で妥協しよう)
・ふむふむ、http://www.osk.3web.ne.jp/~nyasu/diary/200411.html によると、keydownイベントというのが拾えるんだね。
・addHandler WMsg::WM_KEYDOWN,"keydown",MSGTYPE::ARGINTINT,nil を設定してself_keydownイベントを拾っても、やはりalt+文字は拾えないみたい
・でも出来ないはずはないんだよね。menuでは、alt+FでFileメニューをpopupしたりしているんだから。
・うーん、menu関係のソースを読んで情報を探るしかないのか?

といったところです。なにか間違った方向に進んでいそうでしたらアドバイスお願いします。

> VBとかは(&B)とか書いただけでお手軽にショートカットキーが設定できたりするのかね?

.NETの他に、ExcelやAccessのフォームなどでも、部品のcaptionに(&B)と書いておけば、
コードを書くことなくALT+Bでボタンが押せるようになります。
VB6はいじったことはないですが、VBAと同等品と聞いていますので同じだと思います。

他に、
項目名(&K) [________]
となっているとき、ALT+Kを押すと、入力フィールドにカーソルが移動します。

Windowsでは、画面操作のすべてをキーボード操作できる画面を、フォームエディタで(&B)などと書くだけで作れるという便利さがあります。
9890
垢版 |
2006/08/22(火) 16:32:47
>>97の補足です。

>他に、
>項目名(&K) [________]
>となっているとき、ALT+Kを押すと、入力フィールドにカーソルが移動します。

なぜ、labelに(&K)と書いてあるのに、フォーカスが入力フィールドのほうに行くのかというと、
VBAなどのフォームデザイナでは、入力フィールドに限らず、listやcomboboxなどの画面部品をフォームに
挿入したとき、その画面部品の見出しlabelがセットになって、グループ化されて一緒に挿入されます。
その、セットのlabelに(&K)と書くことで、画面部品にフォーカスが行くようになります。

内部的には、画面部品と、その部品用のlabelというのがリンクされた情報を保持しているのかもしれません。

ちなみに、1画面内に複数、(&K)を指定すると、そのときの動作は保証されないそうです。
2006/08/23(水) 02:51:24
>>97
vrinitにadd_parentcall("syschar")を追加しとけば親で拾えるよ
(AltはWM_CHARじゃなくてWM_SYSCHARで飛んでくるらしい)

あと、syscharに限んないけどフォーカスないと拾えないから注意
イベント拾い専用のコントロールに常時フォーカスさせて
そいつから一括してキーイベント拾うようにするとかしてくれ
2006/08/23(水) 07:32:46
最近Ruby使い始めたんだがすげーいいなこれ。
GUIが一瞬で出来し、適当に書いても動くしw
2006/08/23(水) 08:45:00
>>96
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/55704
↑みたいにして????_dblclickedで処理

vr/compat/vrcontrol.rbのVRListboxのところに
addCommandHandler(WMsg::LBN_DBLCLK, 'dblclicked',MSGTYPE::ARGNONE,nil)
を直接入れちゃってもいい


ってゆうか最初から入れとけよ作者
2006/08/23(水) 21:04:44
>>101

>>96ではないけど、

FormDesignerで画面を作ると、リストボックスは、別モジュールで
addControl(VRListbox,'listBox1',"listBox1",72,40,296,132,1350565889)
を使って定義され、別ファイルからこのモジュールをインクルードして
使うようになってるんだけど、

この状態で、
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/55704
と同等のサブクラス定義ってどうやればいいでしょうか?

(FormDegignerで生成したファイルには手をつけずに、自作のファイルの中だけで定義したい。)
103デフォルトの名無しさん
垢版 |
2006/08/24(木) 01:46:48
>>88 >>66のスクリプトだよねえ
>>101 確かによく使いそうですねえ。つうか、selchangedだけか。デフォルトは。
>>102 VRListbox自体を差し替えるか、VRListboxのvrinitだけを差し替えれば?
(前者は定数代入、後者はaliasで)
>>90 はVRFormじゃなくてダイアログ使うと出来る。(Formの代わりならmodelessか)
Windowsの機能で。以下サンプルのmdlgtest2.rbから抜粋&改変
なんとなくインデントが狂いそうなんでインデントを全角スペースにしてみた。modalでごめん。

require 'vr/vrdialog'

module MyDialogContents
 def construct
  move 0,0,150,150
  centering
  addControl VRButton,"btn1","button1(&a)",10,10,100,30,WStyle::WS_TABSTOP
  addControl VRButton,"btn2","button2(&b)",10,40,100,30,WStyle::WS_TABSTOP
  addControl VRButton,"btn3","button3(&c)",10,70,100,30,WStyle::WS_TABSTOP
 end

 def btn1_clicked
  close( ["This","is","sample","return","value"] )
 end
 def btn2_clicked
  close(false)
 end
 def btn3_clicked
  close(3)
 end
end

p VRLocalScreen.modalform(nil,nil,MyDialogContents) #parent,style,dialog
2006/08/24(木) 01:52:06
しまった、sage損なった...
105102
垢版 |
2006/08/24(木) 02:24:11
>>103

> >>102 VRListbox自体を差し替えるか、VRListboxのvrinitだけを差し替えれば?
> (前者は定数代入、後者はaliasで)

すんまそん。 頂いたご返答はよく分からなかった(試したが成功しなかった)のですが、
その後自分の勘違いに気づき、簡単にできることが分かりました。
self_createdで、リストボックスを表す変数に直接定義してやれば良いみたいです。

class TheForm < VRForm
  include Frm_form1
    def self_created
#       @listBox1.addCommandHandler(WMsg::BN_CLICKED, "clicked", MSGTYPE::ARGNONE,nil)
       @listBox1.addCommandHandler(WMsg::BN_DBLCLICKED, "dblclicked",MSGTYPE::ARGNONE,nil)
    end
    def listBox1_dblclicked
      print "ダブルクリックしました" + $/
    end
#    def listBox1_clicked
#     print "クリックしました" + $/
#    end
end

ちなみにclickedは駄目みたいですね。selchangedとかぶるからかな?
2006/08/24(木) 02:34:29
すごいなvruby
おらワクワクしてきたぞ
2006/08/24(木) 02:35:32
BN_????はボタンのやつで、LBN_????がリストボックスのやつ
108102
垢版 |
2006/08/24(木) 02:42:56
>>107
>BN_????はボタンのやつで、LBN_????がリストボックスのやつ

ほんとだ。また何か勘違いしているのか?<自分
109102
垢版 |
2006/08/24(木) 02:52:24
>>105 ですが、やっぱり変でした。
>>105 でリストボックスをダブルクリックすると、
listBox1_dblclicked は通ることは通るんだけど、
ダブルクリックした直後には通らず、一回画面を別画面の裏側にするとか、
画面を終了させないとlistBox1_dblclickedが動作しないです。

変な物を貼ってお騒がせしてすみませんです。
2006/08/24(木) 03:04:19
ん?うまくいってるでしょ。LBN_KILLFOCUSの値になってるんじゃないかな

require '_frm_hogehoge'
module WMsg
  LBN_SETFOCUS = 4
  LBN_KILLFOCUS = 5
end
class Form1                                                        ##__BY_FDVR
  def self_created
    @listBox1.addCommandHandler(WMsg::LBN_DBLCLK, "dblclicked",MSGTYPE::ARGNONE,nil)
    @listBox1.addCommandHandler(WMsg::LBN_SETFOCUS, "gotfocus",MSGTYPE::ARGNONE,nil)
    @listBox1.addCommandHandler(WMsg::LBN_KILLFOCUS, "lostfocus",MSGTYPE::ARGNONE,nil)
    @listBox1.addString('みかん')
    @listBox1.addString('りんご')
  end
 
  def listBox1_dblclicked
    puts @listBox1.getTextOf(@listBox1.selectedIndex)
  end
 
  def listBox1_gotfocus; puts "gotfocus"; end
  def listBox1_lostfocus; puts "lostfocus"; end
end                                                                ##__BY_FDVR
111102
垢版 |
2006/08/24(木) 04:29:48
>>110

やっと正常に動作しました。どうやらフォーカスは無関係みたいです。

・BN_DBLCLICKEDじゃなくて、ちゃんとLBN_DBLCLKを使う。
・listboxに中身を入れる
(つまり>>110のソースどおり。LBN_SETFOCUS関係の設定は不要)

で、理想的に動作しました。

実は私はlistboxの中身を空っぽの状態でテストしていました(謝)。

そして、listboxの中身が空っぽだと、>>110のソースでも>>109の状態になります。

何もないところをダブルクリックすると、その時点ではlistBox1_dblclickedを通らず、
窓を閉じたり、別の窓の後ろに動かしてからlistBox1_dblclicked を通ります。
11290
垢版 |
2006/08/25(金) 00:02:19
>>103
>>90 はVRFormじゃなくてダイアログ使うと出来る。(Formの代わりならmodelessか)

ダイアログにすることで、Alt+キーでボタンが押せました。情報ありがとうございました。
2006/08/26(土) 02:21:41
ちょっと質問ですが、
C#で書かれた.NETのプログラムがあり、ソースが公開されているとします。
このソースに手を加え、Rubyと通信できるようにして、RubyからC#のプログラムを
コントロールしたり監視したりしたいとき、.NET→Ruby間の通信方法は、何が一番適切でしょうか。
条件は、
・C#プログラム側で発生した変化を、出来るだけリアルタイムにRuby側で感知したい。
・Ruby側から.NETにも情報を渡したい(双方向の通信)。
・現時点では1台のマシンの中だけで閉じた状態のみを想定。
2006/08/26(土) 02:27:41
何が一番適切か?というのは、

・.NET、Ruby側ともその通信手段のライブラリが用意されており実装は容易。
・通信の切断、再接続など、出来るだけライブラリ内で吸収していて、あまり記述しなくてもいいのが理想的。

つまり、作成も管理も一番簡単なのはどれでしょうという質問です。
2006/08/26(土) 02:31:32
socket
2006/08/27(日) 04:10:41
fxruby1.6.0がラッパしてるfox-toolkitの1.6.0でUnicodeをサポートする
ようになったらWindows9系ではfxrubyのプログラムが動作しなくなった

ttp://fox-toolkit.net/cgi-bin/wiki.pl?Unicode_Support

Windows 95/98/ME
FOX requires the Microsoft Layer for Unicode on Windows 95/98/Me Systems.
For more information see the [MSLU website].

なんかMSLUとか言うのをどうにかすればいいらしいけど
どうしたらいいの?
2006/08/27(日) 04:54:05
Microsoftがライブラリ配布してるからダウンロードしてインスコすれ
2006/08/27(日) 05:04:43
どっか説明してるサイトとかありますか?
2006/08/27(日) 06:22:39
ぐぐれ
2006/08/27(日) 06:55:54
ライブラリの名前だけでいいんだけど
unicows.dll ← これ?
2006/08/27(日) 22:31:03
vrubyの画面にwebbrowserを貼り付けるサンプルは、
http://vruby.sourceforge.net/samples.htmlにあるが、
vrubyの画面にexcelを貼り付けられないものだろうか?

と思って検索したら、
http://rd.search.goo.ne.jp/click?DEST=http://www.pen-chan.jp/~tdiary/pen-chan/20050106.html&no=1
に「VBとかだとExcelをフォームに貼り付けたりできたじゃん(おぼろげな記憶)。それはきっとOLEとか
ActiveXでできてるだろうからvrubyでも可能なはず。OLEブラウザで名前を調べてテストしたが、
うまくいかん。あれは本当にOLEだったのか?そのへん調べてみるとOLEコンテナというシロモノらしい。
だめぽい。」
とある。

vrubyの画面にexcelは貼り付けられないということでFA?

同じ発想でOOo.orgのcalcを貼り付けられないか調査中。OOo自体はActiveXとして使えるらしいが、
http://openoffice-docj.sourceforge.jp/tr/temp/OOo11_Features.html
OLEブラウザをみても、それに当たる物が見つからない(OOoインストール時にActiveXは選択している。)
vruby以前の問題でうろうろしているが、成功例のサンプルとかどこかにある?

2006/08/27(日) 22:36:13
両方無理
2006/08/27(日) 22:52:38
>>121
リンク先は読んでないが、Excelは「OLEサーバ」。
OLEオートメーションを使うためには、入れ物が「OLEコンテナ」である必要がある。
vrubyの実装がどうなっているのか知らないけど、そうなってないなら出来ない。

COMやActiveXを使えるからといって、OLEオートメーションが出来るとは限らない。
C/C++だってそうでしょ?
2006/08/28(月) 00:18:32
>>122-123

無理っすかあ。残念。
125113
垢版 |
2006/08/28(月) 03:13:02
>>115
socket が一番簡単ですか?同じマシンで閉じているので
ネットワーク通信ではなくプロセス間通信でもいいのですが。

>>121のActiveXの話をみて、113に書いた条件とは少し変わってしまいますが、
C#とrubyとの接続方法として、C#でActiveXコンポーネントを作成して
vrubyに貼り付けたりというのもあるのかもしれないと思いました。

126デフォルトの名無しさん
垢版 |
2006/08/29(火) 09:45:56
VR(Vert|Horiz)TwoPaneでセパレータをドラッグしたときにゴミが残るのうちだけ?
@pane_2.moveしたときに再描画されなくてPatBltで描いた線が残ったままになってる。
もう一度PatBltして線を消すとか、@pane_2.refreshをするとかすればいいんだけど、
そうなってないってことは、うちの環境がおかしいの?
2006/08/29(火) 15:03:12
複数Excelファイルの集計とか、全部Rubyでやってるよ。
最初はVBAでやってたけど、Ruby使い出すともう戻れないねぇ・・・

でも、Visualプログラミングはまだやる気起きないなぁ。
Delphi6で不満な局面がないし
2006/08/29(火) 21:33:47
>>125
別にソケットはネットワーク通信専用じゃないけど
どうしてもいやならここらへんでも(つかったことないけど)
http://jp.rubyist.net/magazine/?0005-RLR

>>126
これかね
http://vruby.sourceforge.net/cgi-bin/wiki.cgi?ReportedBugsVruby#i33
2006/08/30(水) 08:33:29
VRTwoPaneFrameは修正したけど、VRTwoPaneの方は修正してないみたいだね
2006/08/30(水) 08:44:06
>>127
王道はずしまくりですね
2006/08/30(水) 19:18:23
>>121
> vrubyの画面にwebbrowserを貼り付けるサンプルは、
> http://vruby.sourceforge.net/samples.htmlにあるが、
> vrubyの画面にexcelを貼り付けられないものだろうか?


とりあえず、vrubyの画面にexcelを貼り付ける方法を発見。

上記のhttp://vruby.sourceforge.net/samples.htmlにあるActiveXのサンプル画面で、
"http://www.yahoo.co.jp/";
と書かれている部分を、
"file://c:\\test.xls"
のような、実在するexcelファイルを指定すれば出来る。
(そのパソコンのセキュリティの設定と関係してくるが。)

次に、ここで表示したexcelを、vruby側からコントロールしたいのだが、さてどうしたものか。
2006/08/30(水) 19:31:16
ActiveScriptRubyのActiveScript部分のみのインストール手順(必要なファイルとか登録するレジストリ情報とか)
とかってどこかにないですかね?
ActiveScriptRubyが入っていないPCでRubyで書いたHTAとかを動かしたいときに
関連物を全自動でさくっと登録したいです
2006/08/30(水) 22:07:00
>>132
artonさんのWikiに質問を書いてからblogのコメントに質問があるからWiki見ろゴルァとか書くと良いらしいと日記に書いてあったヨ。

>>131
documentを取得しようとするとExcelのインスタンスが取得できた稀ガス。
2006/08/30(水) 23:25:07
>>133

ちょっと試してみました。

@excel = @exp.ole_interface.Document             # でExplorerAxControlのインスタンスからexcelを取り出し、
@sheet = @exp_document.Worksheets.Item("Sheet1") # で、シートを取り出し、
p @sheet.Cells.Item(3,2).Value                   # でC2のセルを表示

できました。

2006/08/30(水) 23:53:06
>>134

> @sheet = @exp_document.Worksheets.Item("Sheet1") # で、シートを取り出し、
は、
@sheet = @excel.Worksheets.Item("Sheet1")          # で、シートを取り出し、
の間違いでした。

これが出来ると、excelの機能をまるまるvrubyのアプリケーションに使えそうで良い感じです。

■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況