目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
193 / 277 ←次へ | 前へ→

【94】Re:フォルダの選択
Excel  ちゃっぴ  - 05/3/19(土) 0:04 -

引用なし
パスワード
   SHBrowseForFolderを使用して、Default表示Folderを変更するVersion

長さ制限で引っかかったので・・・
宣言部分だけ・・・


'///////////////////////////////////////////////////////////////////////////////////////////
'モジュール内共通構造体
'///////////////////////////////////////////////////////////////////////////////////////////
'[BROWSEINFO]構造体([SHBrowseForFolder]で使用する構造体)
Private Type tagBROWSEINFO
  hOwner     As Long     '親Windowのハンドル
  pidlRoot    As Long     'ルートフォルダのポインタ(PID)
  pszDisplayName As String    '選択されたフォルダ名
  lpszTitle    As String    'ダイアログに表示する文字列
  ulFlags     As Long     'オプションフラグ(BrowseInfoFlags)
  lpfn      As Long     'コールバック関数のアドレス
  lParam     As Long     'コールバック関数へのパラメータ
  iImage     As Long     'フォルダ用アイコンのシステムイメージリストID(不用のとき0)
End Type

'///////////////////////////////////////////////////////////////////////////////////////////
'共通定数
'///////////////////////////////////////////////////////////////////////////////////////////
Private Const MAX_PATH   As Long = 260&  'パス長最大値
Private Const WM_USER    As Long = &H400& 'アプリケーションメッセージコード範囲の開始値

'[BROWSEINFO]構造体使用ルートフォルダ(PID)列挙型定数(pidlRoot)
Public Enum gEnumCSIDL
  CSIDL_DESKTOP = &H0&
  CSIDL_INTERNET = &H1&
  CSIDL_PROGRAMS = &H2&
  CSIDL_CONTROLS = &H3&
  CSIDL_PRINTERS = &H4&
  CSIDL_PERSONAL = &H5&
  CSIDL_FAVORITES = &H6&
  CSIDL_STARTUP = &H7&
  CSIDL_RECENT = &H8&
  CSIDL_SENDTO = &H9&
  CSIDL_BITBUCKET = &HA&
  CSIDL_STARTMENU = &HB&
  CSIDL_MYDOCUMENTS = &HC&
  CSIDL_MYMUSIC = &HD&
  CSIDL_MYVIDEO = &HE&
  CSIDL_DESKTOPDIRECTORY = &H10&
  CSIDL_DRIVES = &H11&
  CSIDL_NETWORK = &H12&
  CSIDL_NETHOOD = &H13&
  CSIDL_FONTS = &H14&
  CSIDL_TEMPLATES = &H15&
  CSIDL_COMMON_STARTMENU = &H16&
  CSIDL_COMMON_PROGRAMS = &H17&
  CSIDL_COMMON_STARTUP = &H18&
  CSIDL_COMMON_DESKTOPDIRECTORY = &H19&
  CSIDL_APPDATA = &H1A&
  CSIDL_PRINTHOOD = &H1B&
  CSIDL_LOCAL_APPDATA = &H1C&
  CSIDL_ALTSTARTUP = &H1D&
  CSIDL_COMMON_ALTSTARTUP = &H1E&
  CSIDL_COMMON_FAVORITES = &H1F&
  CSIDL_INTERNET_CACHE = &H20&
  CSIDL_COOKIES = &H21&
  CSIDL_HISTORY = &H22&
  CSIDL_COMMON_APPDATA = &H23&
  CSIDL_WINDOWS = &H24&
  CSIDL_SYSTEM = &H25&
  CSIDL_PROGRAM_FILES = &H26&
  CSIDL_MYPICTURES = &H27&
  CSIDL_PROFILE = &H28&
  CSIDL_SYSTEMX86 = &H29&
  CSIDL_PROGRAM_FILESX86 = &H2A&
  CSIDL_PROGRAM_FILES_COMMON = &H2B&
  CSIDL_PROGRAM_FILES_COMMONX86 = &H2C&
  CSIDL_COMMON_TEMPLATES = &H2D&
  CSIDL_COMMON_DOCUMENTS = &H2E&
  CSIDL_COMMON_ADMINTOOLS = &H2F&
  CSIDL_ADMINTOOLS = &H30&
  CSIDL_CONNECTIONS = &H31&
  CSIDL_COMMON_MUSIC = &H35&
  CSIDL_COMMON_PICTURES = &H36&
  CSIDL_COMMON_VIDEO = &H37&
  CSIDL_RESOURCES = &H38&
  CSIDL_RESOURCES_LOCALIZED = &H39&
  CSIDL_COMMON_OEM_LINKS = &H3A&
  CSIDL_CDBURN_AREA = &H3B&
End Enum

'[BROWSEINFO]構造体使用オプションフラグ列挙型定数(ulFlags)
Public Enum BrowseInfoFlags
  BIF_RETURNONLYFSDIRS = &H1
  BIF_DONTGOBELOWDOMAIN = &H2
  BIF_STATUSTEXT = &H4
  BIF_RETURNFSANCESTORS = &H8
  BIF_EDITBOX = &H10
  BIF_VALIDATE = &H20
  BIF_NEWDIALOGSTYLE = &H40
  BIF_USENEWUI = (BIF_NEWDIALOGSTYLE Or BIF_EDITBOX)
  BIF_BROWSEINCLUDEURLS = &H80
  BIF_UAHINT = &H100
  BIF_NONEWFOLDERBUTTON = &H200
  BIF_NOTRANSLATETARGETS = &H400
  BIF_BROWSEFORCOMPUTER = &H1000
  BIF_BROWSEFORPRINTER = &H2000
  BIF_BROWSEINCLUDEFILES = &H4000
  BIF_SHAREABLE = &H8000
End Enum

'コールバック関数が受信するメッセージコード列挙型定数(uMsg)
Private Enum BFFM_CallBackMsgCode '  [説明]      [lParam]
  BFFM_INITIALIZED = 1      '初期化終了コード   NULL
  BFFM_SELECTIONCHANGE = 2    '設定変更コード    選択フォルダPID
  BFFM_VALIDATEFAILED = 3    'EditBox入力値エラー EditBox入力値PID
End Enum

'[SendMessage]で[SHBrowseForFolder]に送信できるメッセージコード列挙型定数(wMsg)
Private Enum BFFM_SendMsgCode       '  [説明]      [wParam]   [lParam]
  BFFM_SETSTATUSTEXTA = (WM_USER + 100) 'ステータス変更         設定するテキスト
  BFFM_ENABLEOK = (WM_USER + 101)    'OKボタン有効/無効設定     0:無効, 以外:有効
  BFFM_SETSELECTIONA = (WM_USER + 102) '初期フォルダの設定    0   フォルダPID
                     '             1   文字列のポインタ
End Enum

'///////////////////////////////////////////////////////////////////////////////////////////
'モジュール内有効API定義
'///////////////////////////////////////////////////////////////////////////////////////////
'-------------------------------------------------------------------------------------------
'[FindWindow](ウィンドウハンドルを返すAPI)宣言
'
'戻り値                   0:失敗, 1:成功
'
'引数        lpClassName       対象クラス名(String)
'          lpWindowName      対象ウィンドウのタイトル(String)
'-------------------------------------------------------------------------------------------
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
         
'-------------------------------------------------------------------------------------------
'[SHBrowseForFolder](フォルダ選択ダイアログAPI)宣言
'
'戻り値                   選択フォルダのPID(Long)
'
'引数        lpBrowseInfo      [BROWSEINFO]構造体のアドレス(tagBROWSEINFO)
'-------------------------------------------------------------------------------------------
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" _
              (lpBrowseInfo As tagBROWSEINFO) As Long
                
'-------------------------------------------------------------------------------------------
'[SHGetPathFromIDList](PIDをパス名に変換するAPI)宣言
'
'戻り値                   対象アイテムのパス名
'
'引数        pidl          対象アイテムのPID(Long)
'          pszPath         対象アイテムのパス名(String)
'-------------------------------------------------------------------------------------------
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
              (ByVal pidl As Long, ByVal pszPath As String) As Long
                
'-------------------------------------------------------------------------------------------
'[CoTaskMemFree](タスクのメモリブロックを解放するAPI)宣言
'
'引数        pv             解放するブロックへのポインタID(Long)
'-------------------------------------------------------------------------------------------
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

'-------------------------------------------------------------------------------------------
'[SendMessage](指定されたハンドルへメッセージを送るAPI)宣言
'
'引数        hwnd            対象ウインドウハンドル(Long)
'          wMsg            送信メッセージ(Long)
'          wParam           メッセージパラメータ1(Long)
'          lParam           メッセージパラメータ2(Long)
'-------------------------------------------------------------------------------------------
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  (ByVal hwnd As Long, ByVal wMsg As BFFM_SendMsgCode, ByVal wParam As Long, lParam As Any) As Long
  
'///////////////////////////////////////////////////////////////////////////////////////////
'共通変数
'///////////////////////////////////////////////////////////////////////////////////////////
Private mstrDefaultPath As String        '初期表示フォルダ

7,744 hits

【62】フォルダの選択 Jaka 04/8/11(水) 9:06 Excel[未読]
【68】フォルダ選択<API使用> BOTTA 04/8/23(月) 19:31 Excel[未読]
【69】フォルダ選択<Shell使用> BOTTA 04/8/23(月) 19:32 Excel[未読]
【70】フォルダ選択<FileDialog使用> BOTTA 04/8/23(月) 19:32 Excel[未読]
【93】Re:フォルダ選択<FileDialog使用> ちゃっぴ 05/3/18(金) 23:48 Excel[未読]
【71】Re:フォルダの選択 Jaka 04/8/30(月) 16:33 Excel[未読]
【94】Re:フォルダの選択 ちゃっぴ 05/3/19(土) 0:04 Excel[未読]
【95】Re:フォルダの選択 ちゃっぴ 05/3/19(土) 0:06 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
193 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free