Function Reference

_WinAPI_GetOpenFileName

ユーザーが開くドライブ、ディレクトリ、1つまたは複数のファイルの名前を指定するためのOpenダイアログボックスを作成します。

#Include <WinAPI.au3>
_WinAPI_GetOpenFileName([$sTitle = "" [, $sFilter = "All files (*.*)" [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]])

 

パラメータ

$sTitle [オプション]ダイアログボックスのタイトルバーに配置する文字列
$sFilter [オプション]フィルター文字列のペア(例えば"Text Files (*.txt)|All Files (*.*)")
各ペアの最初の文字列はフィルター説明の表示文字列です(例えば"Text Files")。
2番目の文字列はフィルターパターンを表します(例えば"*.TXT")。
1つの表示文字列に複数のパターンを指定するには、セミコロンを使用してパターンを区切ってください(例えば"*.TXT;*.DOC;*.BAK")。
パターン文字列は有効なファイル名文字列とアスタリスク(*)のワイルドカードの組み合わせです。
パターン文字列にスペースを含めることはできません。
$sInitalDir [オプション]初期ディレクトリを指定する文字列
$sDefaultFile [オプション]File Nameエディットコントロールの初期化に使用されるファイル名
$sDefaultExt [オプション]デフォルト拡張子を格納している文字列
$iFilterIndex [オプション]File Typesコントロールで現在選択されているフィルターのインデックスを指定します
$iFlags [オプション]$tagOPENFILENAMEのFlagsを参照
$iFlagsEx [オプション]$tagOPENFILENAMEのFlagExを参照
$hwndOwner [オプション]ダイアログボックスを所有するウィンドウのハンドル。 このメンバーは有効なウィンドウのハンドルです。 ダイアログボックスにオーナーを設定しない場合は0です。

 

返し値

成功: 次のフォーマットの配列:
[0] - 文字列の数を格納しています
[1] - 選択されたパスを格納しています
[2] - 選択されたファイルを格納しています
[n] - 選択されたファイルを格納しています
失敗: 0が設定された長さ1の配列

 

注意

なし。

 

関連

$tagOPENFILENAME, _WinAPI_GetSaveFileName, _WinAPI_CommDlgExtendedError

 

こちらも参照

MSDNライブラリでGetOpenFileNameを検索して下さい。

 


#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

#include <StructureConstants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Opt('MustDeclareVars', 1)

Global $iMemo

_Example_Defaults()
_Example_ExplorerStyleMultiSelect()
_Example_OldStyle()
_Example_ExplorerStyleSinglSelect()
_Example_ExplorerStyle_NoPlaceBar()

Func _Example_Defaults()
    Local $hGui, $btn_dialog, $aFile, $sError
   
    ; GUI作成
    $hGui = GUICreate("GetOpenFileName use defaults", 400, 296)
    $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, $WS_HSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_dialog = GUICtrlCreateButton("Open Dialog", 155, 270, 90, 20)
    GUISetState()
   
    While 1
        Switch GUIGetMsg()
            Case $btn_dialog
                $aFile = _WinAPI_GetOpenFileName() ; use defaults
                If $aFile[0] = 0 Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_Defaults

Func _Example_ExplorerStyleMultiSelect()
    Local $hGui, $btn_dialog, $aFile, $sError
   
    ; GUI作成
    $hGui = GUICreate("GetOpenFileName use Explorer Style (Multi Select)", 400, 296)
    $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, $WS_HSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_dialog = GUICtrlCreateButton("Open Dialog", 155, 270, 90, 20)
    GUISetState()
   
    While 1
        Switch GUIGetMsg()
            Case $btn_dialog
                $aFile = _WinAPI_GetOpenFileName("My Open File Dialog", _
                        "Text File (*.txt;*.au3)", ".", @ScriptName, "", 1, _
                        BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), 0, $hGui)
                If $aFile[0] = 0 Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyleMultiSelect

Func _Example_OldStyle()
    Local $hGui, $btn_dialog, $aFile, $sError
   
    ; GUI作成
    $hGui = GUICreate("GetOpenFileName use Old Style (Multi Select)", 400, 296)
    $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, $WS_HSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_dialog = GUICtrlCreateButton("Open Dialog", 155, 270, 90, 20)
    GUISetState()
   
    While 1
        Switch GUIGetMsg()
            Case $btn_dialog
                $aFile = _WinAPI_GetOpenFileName("My Open File Dialog", _
                        "Text File (*.txt)|AutoIt File (*.au3)", ".", @ScriptName, _
                        "", 2, $OFN_ALLOWMULTISELECT, 0, $hGui)
                If $aFile[0] = 0 Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_OldStyle

Func _Example_ExplorerStyleSinglSelect()
    Local $hGui, $btn_dialog, $aFile, $sError
   
    ; GUI作成
    $hGui = GUICreate("GetOpenFileName use Explorer Style (Single Select)", 400, 296)
    $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, $WS_HSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_dialog = GUICtrlCreateButton("Open Dialog", 155, 270, 90, 20)
    GUISetState()
   
    While 1
        Switch GUIGetMsg()
            Case $btn_dialog
                $aFile = _WinAPI_GetOpenFileName("My Open File Dialog", _
                        "Text File (*.txt)|AutoIt File (*.au3)", ".", @ScriptName, _
                        "", 2, 0, 0, $hGui)
                If $aFile[0] = 0 Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyleSinglSelect

Func _Example_ExplorerStyle_NoPlaceBar()
    Local $hGui, $btn_dialog, $aFile, $sError
   
    ; GUI作成
    $hGui = GUICreate("GetOpenFileName use Explorer Style (Single Select)", 400, 296)
    $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, $WS_HSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_dialog = GUICtrlCreateButton("Open Dialog", 155, 270, 90, 20)
    GUISetState()
   
    While 1
        Switch GUIGetMsg()
            Case $btn_dialog
                $aFile = _WinAPI_GetOpenFileName("My Open File Dialog", _
                        "Text File (*.txt)|AutoIt File (*.au3)", ".", @ScriptName, _
                        "", 2, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), $OFN_EX_NOPLACESBAR, $hGui)
                If $aFile[0] = 0 Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyle_NoPlaceBar

; メモコントロールに1行書き込み
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite