回答編集履歴

2

修正

2021/02/26 05:51

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,6 @@
1
1
  WindowsFormsのOpenFileDialogなら、下記コードでいけました。
2
2
 
3
3
  WPFのプロジェクトでも、一応System.Windows.Formsを参照すれば使用可能です。
4
-
5
- CommonOpenFileDialogで可能かどうかは判りません。
6
4
 
7
5
  ```C#
8
6
 
@@ -26,6 +24,36 @@
26
24
 
27
25
  ```
28
26
 
27
+
28
+
29
+ WindowsAPICodePackのCommonOpenFileDialogも試してみましたが、ShowDialogの引数がウィンドウハンドルになっているので、それだけ修正すれば問題なく行けました。
30
+
31
+ ```C#
32
+
33
+ const string CLSID_MyComputer = "{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
34
+
35
+
36
+
37
+ using (var frm = new System.Windows.Forms.Form())
38
+
39
+ {
40
+
41
+ var dlg = new Microsoft.WindowsAPICodePack.Dialogs.CommonOpenFileDialog();
42
+
43
+ frm.TopMost = true;
44
+
45
+ dlg.IsFolderPicker = true;
46
+
47
+ dlg.InitialDirectory = $"::{CLSID_MyComputer}";
48
+
49
+ dlg.ShowDialog(frm.Handle);
50
+
51
+ }
52
+
53
+ ```
54
+
55
+
56
+
29
57
  "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" という文字列は、マイコンピュータのフォルダを表すクラスIDで、先頭に"::"を付けることで、マイコンピュータへのショートカットとなります。
30
58
 
31
59
  [Windows 10 クラスID/CLSID[GUID]のショートカットリストまとめ](https://www.billionwallet.com/windows10/clsid-key-list.html)

1

修正

2021/02/26 05:51

投稿

退会済みユーザー
test CHANGED
@@ -29,9 +29,3 @@
29
29
  "{20D04FE0-3AEA-1069-A2D8-08002B30309D}" という文字列は、マイコンピュータのフォルダを表すクラスIDで、先頭に"::"を付けることで、マイコンピュータへのショートカットとなります。
30
30
 
31
31
  [Windows 10 クラスID/CLSID[GUID]のショートカットリストまとめ](https://www.billionwallet.com/windows10/clsid-key-list.html)
32
-
33
-
34
-
35
- WPF用のOpenFileDialogを使用した記事もありました。WPFならこちらの方がいいかも。
36
-
37
- [Bring WPF OpenFileDialog to the front (topmost)](https://social.msdn.microsoft.com/Forums/healthvault/ja-JP/2ebc3c8f-4e9a-484c-8c70-f0f852a9abae/bring-wpf-openfiledialog-to-the-front-topmost?forum=wpf)