投稿時間:2007/04/18(Wed) 18:30 投稿者名:ろん
Eメール:
URL :
タイトル:選択したフォルダを表示させるアプリの不具合について
皆様はじめまして、ろんと申します。 以下にVB6で作っているアプリの不具合につきまして ご質問させていただきます。
OS:WinXP、VB6の環境で フォームにラベル1つ、ボタン一つ用意して ボタンが押されたら、フォルダ選択のダイアログを表示して 選択した時にそれをフォームのラベルに表示するアプリを作っています。
処理は、全てうまくいっていたのですが フォルダを選択するダイアログを選択するファンクションを 抜けるとVB自体が落ちてしまう(強制終了されてしまう)という 状況になってしまいました。
なぜそのような状況になってしまったかというと 全て完成してセットアップをディストリビューションウィザードで作成して テストでそのセットアップを実行して動かしてみたのですが、途中でアプリが落ちるという 状況で正常稼動しませんでした。
その為、そのセットアップされたものをアンインストールしました。 その時に何か重要なものが消されたのかも知れませんが それ以降、VB開発環境上からも動かなくなってしまいました。
以下にモジュールを貼らせて頂きますので 識者の皆様、何が悪いのか何か足りないのか、ご助言頂けますでしょうか。 よろしくお願い致します。
【フォームのボタンクリックイベント】
Public Sub Command1_Click() Form1.Label1 = GetFolderPathName("1") End Sub
【フォルダ選択をするモジュール】 Option Explicit Option Private Module
Type BROWSEINFO hwnd As Long pidlRoot As Long pszDisplayName As String myTitle As String opFlags As Long End Type
Public Const BIF_BROWSEFORCOMPUTER = 1
Public Declare Function SHBrowseForFolder Lib "shell32.dll" _ Alias "SHBrowseForFolderA" (lpBROWSEINFO As BROWSEINFO) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _ "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Public Declare Function SHFree Lib "shell32" Alias "#195" (ByVal pidl As Long) As Long
Public Function GetFolderPathName(Optional myprompt As String) As String Dim typBROWSEINFO As BROWSEINFO Dim LngPit As Long Dim strPathName As String Dim letter As String Dim xx As Long
letter = "フォルダを指定します。"
With typBROWSEINFO .myTitle = letter .opFlags = BIF_BROWSEFORCOMPUTER End With
LngPit = SHBrowseForFolder(typBROWSEINFO)
If LngPit = 0 Then Call SHFree(LngPit): GetFolderPathName = "": Exit Function
strPathName = String$(256, Chr(0))
SHGetPathFromIDList LngPit, strPathName
Call SHFree(LngPit)
For xx = 1 To 256 If Mid(strPathName, xx, 1) = Chr(0) Then GetFolderPathName = Left(strPathName, xx - 1) Exit For End If Next xx
End Function
以上、よろしくお願い致します。
|