- ベストアンサー
perlでdialogのフォルダ指定
- perlにてプログラムを作成中で、ダイアログを使ってフォルダを指定したいです。
- 参考ページを調べた結果、vbsをperlに埋め込むことができるようです。
- しかし、作成したプログラムは動作せず、問題がどこにあるのかを教えていただきたいです。
- みんなの回答 (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
その他の回答 (2)
- ralf124c
- ベストアンサー率52% (232/446)
これではだめですか? ----------------------------------------------------------------------------------------------------------- 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"); } -----------------------------------------------------------------------------------------------------------
補足
回答ありがとうございます。 試してみたところ("$objFolder->$Items->$Item->$Path"辺りで エラーが出たので、どうせ渡すので print $objFolder で、確認表示だけにしようと思います。 しかし Win32::MsgBox('ちゃんと選んで頂戴!',undef,'フォルダ選択',1); が、うまく動かないのと、 「フォルダを選択してね」 辺りの表示がうまく行きませんね?? 更に勉強してみます。
- kuroizell
- ベストアンサー率55% (95/170)
Win32::GUIやWin32::MsgBoxのメソッドっぽいですね。>BrowseForFolder, MsgBox 恐らくダブルクリックで実行しているのではないかと思いますが、 エラー(動かない原因)の確認が出来ないので、コマンドプロンプトから実行しましょう。 本当にvbsをperlに埋め込むのなら、以下の一行でも済みます。 `C:/Docume~1/username/デスクトップ/your.vbs`; # 空白を含まないように(WinXPの例)。 ``で囲むと、そのOSで使えるコマンドを実行できます。 例)print `ipconfig`; Windowsの操作なら、本家であるvbsを使う方がラクでしょう。 遊びながら学ぶなら、個人的にはWWW::Mechanizeが(簡単ではないけど)面白いです。
お礼
回答ありがとうございます。 一応、コマンドラインからやってます。 なるほど、直接埋め込めるんですね。 プログラムは一つにしたいのですから、今回は使用しませんが 次回挑戦してみます。 WWW::Mechanizeは初耳です。 ぐぐってきまーすw
お礼
色々プログラムを変更していたら、回答が遅れました。 動作、表示確認です。 おかげで解決しました。 ありがとうございました。 リファレンス系は日本語はないんですねぇ・・・。 他のプログラムの追記については、訳しながら勉強してきたいと思います。 それでは。