LoginSignup
2
0

WindowsのCrystalでファイル選択ダイアログを出す

Posted at

最近、WindowsでもCrystalが使えるようになった。
Rubyを使ってWindows向けの exe ファイルを作成するのはいろいろな困難が伴うが、Crystalを使えばRubyにかなり近い書き味で、実行形式のファイルを作ることができる。

とはいえ、まだ良いGUIライブラリが存在しない。
正確に言うと、CrystalにおいてWindowsにおいて共有ライブラリを呼び出すところはまだ開発途上で、実例が少ない。

そんな時でも、powershell.exe を使えば、簡単なダイアログは表示できる。たとえば、ファイル選択ダイアログを表示するのは次のような感じである。

cmd = <<-CMD
powershell.exe -command
    Add-Type -AssemblyName System.Windows.Forms
    $openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $openFileDialog.initialDirectory = $InitialDirectory
    $openFileDialog.filter = "All files (*.*)| *.*"
    $openFileDialog.ShowDialog() > $null
    Write-Host $openFileDialog.Filename
CMD

ps = Process.new(cmd, shell: true, output: Process::Redirect::Pipe, error: Process::Redirect::Pipe)
stdout = ps.output
content = ps.output.gets_to_end
path = Path.windows(content.strip)
p File.exists?(path)

はい。完全に一発芸でした。
Powerhsellではいろいろダイアログが出せるらしいです。詳しく知りたい人はコチラをご覧ください。この記事は以上です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0