Ruby Forum IronRuby > Interacting with a WPF/Winforms application

Posted by Ivan Porto carrero (casualjim)
on 15.08.2008 09:01
(Received via mailing list)
Hi

Is there a simple way to interact with the GUI of a WPF/Winforms
application?
I'll clarify a little what I would like to achieve:

when you start a console session with an environment loaded you could
potentially type the following lines in there

>> require 'config/boot'
>> start_wpf_application
>> System::Windows::Application.current.main_window.my_panel.children.add
Wpf.build(TextBox, :text => "Very important placeholder text")

That last line would then add a textbox to the panel while the 
application
is running.

I could probably use threading to achieve this or different appdomains
maybe.

any thoughts?

Cheers
Ivan
Posted by Curt Hagenlocher (Guest)
on 15.08.2008 16:46
(Received via mailing list)
Running in a separate thread is what you probably want to do.

There’s an IronPython sample that does something like this for WinForms 
– it’s called winforms.py and lives in the tutorial directory. 
Unfortunately, it looks like it depends on some IronPython-specific 
functionality in the command line – but it wouldn’t be too hard to add 
something similar  to IronRuby.

From: ironruby-core-bounces@rubyforge.org 
[mailto:ironruby-core-bounces@rubyforge.org] On Behalf Of Ivan Porto 
Carrero
Sent: Friday, August 15, 2008 12:01 AM
To: ironruby-core@rubyforge.org
Subject: [Ironruby-core] Interacting with a WPF/Winforms application

Hi

Is there a simple way to interact with the GUI of a WPF/Winforms 
application?
I'll clarify a little what I would like to achieve:

when you start a console session with an environment loaded you could 
potentially type the following lines in there

>> require 'config/boot'
>> start_wpf_application
>> System::Windows::Application.current.main_window.my_panel.children.add Wpf.build(TextBox, :text => "Very important placeholder text")

That last line would then add a textbox to the panel while the 
application is running.

I could probably use threading to achieve this or different appdomains 
maybe.

any thoughts?

Cheers
Ivan
Posted by Michael Letterle (Guest)
on 16.08.2008 21:38
(Received via mailing list)
FWIW, the easiest way is to rename the exe to dll,(btw, is there a 
reason we
can't require exes?) and then call "Thread.new { Program.main args }" :)