C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 指定したフォルダをフォーム上から開きたい


(過去ログ 134 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■78982 / inTopicNo.1)  指定したフォルダをフォーム上から開きたい
  
□投稿者/ 佐山 (5回)-(2016/02/27(Sat) 21:19:57)

分類:[.NET 全般] 

VB.NET 指定したフォルダをエクスプローラからではなく、
フォーム上で開きたい

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click

System.Diagnostics.Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))

End Sub

ボタン2をクリックすると、
エクスプローラでお気に入りフォルダの一覧が開きます
エクスプローラで開くのではなく、
フォーム上で開くようにしたいのですが、
どのようにしたらフォーム上で開くようになりますでしょうか?

開くのは問題ないのですが、開く方法を変更したいです

現状、ボタン2をクリックしたら、
エクスプローラでお気に入りの一覧が表示されます

ボタン2をクリックしたら、
ブラウザを立ち上げてお気に入りの項目をクリックした際に、
一覧表示されるようにフォームの中で表示させたい

ご教授下さい
引用返信 編集キー/
■78983 / inTopicNo.2)  Re[1]: 指定したフォルダをフォーム上から開きたい
□投稿者/ 魔界の仮面弁士 (655回)-(2016/02/27(Sat) 21:44:28)
No78982 (佐山 さん) に返信
> VB.NET 指定したフォルダをエクスプローラからではなく、
> フォーム上で開きたい

環境次第では、マネージ版の WebBrowser コントロールを貼って
 WebBrowser1.Navigate(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
のようにすれば表示できることがありますが、これだとうまくいかない環境もあるので、
ActiveX 版の方の WebBrowser コントロールを貼って、
 Dim url As Object = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)
 AxWebBrowser1.Navigate2(url)
とか。
あとは、別プロセスの Explorer を無理矢理 SetParent するとかですかね。

ただ、個人的にはあまりおススメはしません。
貼った後の制御まで自力で解決できる人向け。
引用返信 編集キー/
■78986 / inTopicNo.3)  Re[2]: 指定したフォルダをフォーム上から開きたい
□投稿者/ 佐山 (6回)-(2016/02/28(Sun) 04:17:41)
魔界の仮面弁士様、
回答ありがとうございます

マネージ版の WebBrowser コントロールと
ActiveX 版の方の WEBBrowserコントロールとでは
何が違うのでしょうか?

利用しているのはvisualbasic2010expressです
上記アプリからWEBBrowserコントロールを
フォームに貼り付けただけでは駄目でしょうか?

アドバイスをお願いします
引用返信 編集キー/
■78990 / inTopicNo.4)  Re[3]: 指定したフォルダをフォーム上から開きたい
□投稿者/ WebSurfer (846回)-(2016/02/28(Sun) 10:22:20)
No78986 (佐山 さん) に返信

> マネージ版の WebBrowser コントロールと
> ActiveX 版の方の WEBBrowserコントロールとでは
> 何が違うのでしょうか?

Windows Forms アプリで ActiveX 版の方の WebBrowser コントロール (shdocvw.dll)
を使うという話だと思いますが、それには SDK に含まれている Aximp.exe (Windows
フォーム ActiveX コントロールインポーター) を使ってラッパー(正確には、共通言
語ランタイムプロキシ SHDocVw.dll と Windows フォームプロキシ AxSHDocVw.dll)
を作成します。

魔界の仮面弁士さんが言われる Navigate2 メソッド等は Windows フォームプロキシ
AxSHDocVw.dll に定義されています。

Aximp.exe で AxSHDocVw.dll の C# のソースも生成できるのでその中身を見るといろ
いろ分かると思います。

ラッパーの作り方の詳細は以下の記事を見てください。

SHDocVw.dll と AxSHDocVw.dll の作り方と使い方
http://surferonwww.info/BlogEngine/post/2012/06/23/how-to-produce-and-use-shdocvw-and-axshdocvw.aspx

上の記事にも書いてありますが、Visual Studio のウィザードでラッパーを作ることも
可能です。


その他、.NET Framework のライブラリの WebBrowser を拡張するという手段もありま
す。お勧めはしませんがご参考まで。

WebBrowser の拡張
http://surferonwww.info/BlogEngine/post/2012/07/01/extension-of-webbrowser-control.aspx

引用返信 編集キー/
■78991 / inTopicNo.5)  Re[3]: 指定したフォルダをフォーム上から開きたい
□投稿者/ WebSurfer (847回)-(2016/02/28(Sun) 10:43:22)
No78986 (佐山 さん) に返信

【追伸】

COM ラッパーを作って使って期待通りの結果が得られるかどうかまでは検証してない
ので分かりません。

上記は、.NET Framework のライブラリの WebBrowser でダメな場合、試しにやって
みてはいかが・・・という程度の話とお考えください。

引用返信 編集キー/
■78992 / inTopicNo.6)  Re[3]: 指定したフォルダをフォーム上から開きたい
□投稿者/ 魔界の仮面弁士 (657回)-(2016/02/28(Sun) 11:19:58)
No78986 (佐山 さん) に返信
> マネージ版の WebBrowser コントロールと
> ActiveX 版の方の WEBBrowserコントロールとでは
> 何が違うのでしょうか?

ActiveX 版の方は、HTML ページだけでなく、ActiveX ドキュメントや
フォルダ等の表示も可能です。表示した内容は Document プロパティを通じて
ある程度制御ができます。(表示するコンテンツによります)

一方、マネージ版は基本的に、HTMLページの表示しかできません。
HTML 以外のもの(フォルダ等)の表示もできなくはないのですが、
それをプログラムから操作しようとしても、Document プロパティからは
アクセスできず、ただ表示するだけで終わってします。


managed である System.Windows.Forms.WebBrowser は、
COM コンポーネントである ActiveX 版 WebBrowser を
.NET から使いやすいようにラッピングしたものですが、
COM 版のすべての機能をカプセル化しているわけではありません。

一応、WebBrowser1.ActiveXObject プロパティとか
WebBrowser1.Document.DomDocument プロパティなどを通じて
内包している COM オブジェクトにアクセスできるようにもなっています。


> フォームに貼り付けただけでは駄目でしょうか?
そもそも何故、「フォームの中で表示させたい」のでしょうか。
OpenFileDialog で選択させるとか、
ListBox 等にファイル名の一覧を表示する程度では駄目でしょうか。



> 利用しているのはvisualbasic2010expressです
VB2005 以降であれば、エクスプローラーの内容そのものを表示するために
No78983 で紹介した方法が使えます。が、それはあくまでも単に表示するだけです。

表示モード(詳細、一覧、アイコン)を変更したり、どのアイテムが選択されているかを
判断したいなどの追加操作も必要なら、いろいろと追加のコーディングが必要なので、
自力で調査・実装できるだけの地力が無いのなら、WebBrowser の利用はおすすめしません。
引用返信 編集キー/
■78996 / inTopicNo.7)  Re[1]: 指定したフォルダをフォーム上から開きたい
□投稿者/ Azulean (606回)-(2016/02/28(Sun) 17:15:08)
No78982 (佐山 さん) に返信
> VB.NET 指定したフォルダをエクスプローラからではなく、
> フォーム上で開きたい

どのくらいのモチベーションなのでしょうか?

これを問う理由としては、「希望されていることはかんたんではない」からです。
COM や ActiveX を扱うという茨の道に進む覚悟があるのであれば、1から順に学ぶことになります。

また、WebBrowser で仮に表示できるところまで到達したとして細かな制御はおそらく難しいでしょう。
単に表示できれば良いというレベルで踏みとどまれるのか、欲が出てくるのかで選ぶ道は違ってきます。

そういったことから、「かんたんにできるならやってみたい」というレベルなのか、「最終的な目標があってこだわっていく」というレベルなのか、そういった背景も書いていただいた方が良いかと思います。
引用返信 編集キー/
■79017 / inTopicNo.8)  Re[2]: 指定したフォルダをフォーム上から開きたい
□投稿者/ 佐山 (7回)-(2016/03/01(Tue) 18:15:36)
回答頂いた皆さま

ありがとうございます

簡単にできればという安直な思いで
質問いたしました

私の力では出来そうにないので
断念します

ありがとうございました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -