タイトル | : Unicode(機種依存文字)含むパスのフォルダを開く方法 |
記事No | : 16080 |
投稿日 | : 2015/02/23(Mon) 12:21 |
投稿者 | : マサタロウ |
ShellExecute関数でUnicode(機種依存文字)を含まないパスの フォルダを開く事が出来ます。 VBレスキュー(花ちゃん)‐旧のVB6.0用のメニュー <指定のフォルダーをエクスプローラーで表示>を参考にしました。 http://hanatyan.sakura.ne.jp/vbhlp/Explore.htm
<ファイルパスの機種依存文字を取得する方法について - マサタロウ 14/11/28-11:50 No.16027> http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?no=16027&reno=no&oya=16027&mode=msgview&page=0 を参考にして、ShellExecute関数のwide版を宣言し、 関数からShellExecuteWを実行しています。
'標準モジュール。 Public Declare Function ShellExecuteW Lib "shell32" (ByVal hWnd As Long, _ ByVal lpszOp As Long, ByVal lpszFile As Long, ByVal lpszParams As Long, _ ByVal lpszDir As Long, ByVal FsShowCmd As Long) As Long
'ShellExecuteWを実行する標準モジュール。 Dim S As Long '宣言セクション。 Dim Ret As Variant '宣言セクション。
'フォルダパスの取得。 'main.OPENFolPT = コモンダイアログでのファイルパス。 'main.FExistence = コモンダイアログでのファイル名。 'Left関数の"-1"は右端の"\"を削除する。 Dim OpenFolder As String OpenFolder = Left(main.OPENFolPT, Len(main.OPENFolPT) - Len(main.FExistence) - 1)
S = ShellAppli(OpenFolder, "Explore")
'ShellExecuteWを実行する関数。 Function ShellAppli(ByVal OpenPath As String, ByVal iprPoint As String) As Long
Ret = ShellExecuteW(main.hWnd, StrPtr(iprPoint), StrPtr(OpenPath), vbNullString, _ vbNullString, SW_RESTORE)
End Function
コード実行後、On Error ステートメントで確認すると、 型が一致しない"エラー番号13"となります。
Unicode(機種依存文字)含むパスのフォルダを開けないのは、 コードの間違いかAPI関数が違うか確認したいです。
|