• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlでdialogのフォルダ指定)

perlでdialogのフォルダ指定

このQ&Aのポイント
  • perlにてプログラムを作成中で、ダイアログを使ってフォルダを指定したいです。
  • 参考ページを調べた結果、vbsをperlに埋め込むことができるようです。
  • しかし、作成したプログラムは動作せず、問題がどこにあるのかを教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.3

ちゃんと期待通り動くのに訂正します。 ------------------------------------------------------------------ use Win32::OLE; use Win32::GUI; my $Shell = Win32::OLE->CreateObject("WScript.Shell"); my $Desig = Win32::GUI; my $Folder = $Desig->BrowseForFolder(-title =>'フォルダを選択してね', -directory =>"c:\\" ); unless ($Folder) { Win32::MsgBox('ちゃんと選んで頂戴!'); }else{ Win32::MsgBox("$Folder"); } ------------------------------------------------------------------ VBSとまったく同じというわけには行かないので各PerlモジュールのリファレンスとVBSのリファレンスとを照らし合わせていじってみましょう。 例: http://search.cpan.org/~robertmay/Win32-GUI-1.06/ http://perl-win32-gui.sourceforge.net/cgi-bin/docs.cgi?doc=reference-methods http://cpansearch.perl.org/src/ACALPINI/Win32-GUI-0.0.558/docs/html/Win32_GUI.html

dogu7
質問者

お礼

色々プログラムを変更していたら、回答が遅れました。 動作、表示確認です。 おかげで解決しました。 ありがとうございました。 リファレンス系は日本語はないんですねぇ・・・。 他のプログラムの追記については、訳しながら勉強してきたいと思います。 それでは。

その他の回答 (2)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

これではだめですか? ----------------------------------------------------------------------------------------------------------- use Win32::OLE; use Win32::GUI; my $Shell = Win32::OLE->CreateObject("WScript.Shell"); my $Desig = Win32::GUI; my $objFolder = $Desig->BrowseForFolder(0,'フォルダを選択してね', 1, "c:\\" ); unless ($objFolder) { Win32::MsgBox('ちゃんと選んで頂戴!',undef,'フォルダ選択',1); }else{ Win32::MsgBox("$objFolder->$Items->$Item->$Path"); } -----------------------------------------------------------------------------------------------------------

dogu7
質問者

補足

回答ありがとうございます。 試してみたところ("$objFolder->$Items->$Item->$Path"辺りで エラーが出たので、どうせ渡すので print $objFolder で、確認表示だけにしようと思います。 しかし Win32::MsgBox('ちゃんと選んで頂戴!',undef,'フォルダ選択',1); が、うまく動かないのと、 「フォルダを選択してね」 辺りの表示がうまく行きませんね?? 更に勉強してみます。

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

Win32::GUIやWin32::MsgBoxのメソッドっぽいですね。>BrowseForFolder, MsgBox 恐らくダブルクリックで実行しているのではないかと思いますが、 エラー(動かない原因)の確認が出来ないので、コマンドプロンプトから実行しましょう。 本当にvbsをperlに埋め込むのなら、以下の一行でも済みます。 `C:/Docume~1/username/デスクトップ/your.vbs`; # 空白を含まないように(WinXPの例)。 ``で囲むと、そのOSで使えるコマンドを実行できます。 例)print `ipconfig`; Windowsの操作なら、本家であるvbsを使う方がラクでしょう。 遊びながら学ぶなら、個人的にはWWW::Mechanizeが(簡単ではないけど)面白いです。

dogu7
質問者

お礼

回答ありがとうございます。 一応、コマンドラインからやってます。 なるほど、直接埋め込めるんですね。 プログラムは一つにしたいのですから、今回は使用しませんが 次回挑戦してみます。 WWW::Mechanizeは初耳です。 ぐぐってきまーすw

関連するQ&A