comdlg32.dllを使用して「ファイルを開く」ダイアログを表示させているのですが、クライアントのOSがWindowsNT4.0の場合にダイアログが表示されません。Win95およびWin98では正常に動作します。 ロジックは以下のとおりです。 ' *** Win32 APIの定義 Type OPENFILENAME lStructSize As Long '構造体のサイズ(バイト) hwndOwner As Long '呼び出し元ウィンドウハンドル hInstance As Long 'フィルタキャプションとパターン lpstrFilter As String '?? VBNULLSTRING lpstrCustomFilter As String '?? NULL nMaxCustFilter As Long '?? NULL nFilterIndex As Long '?? NULL lpstrFile As String 'ここにフルパスのファイル名が返る nMaxFile As Long 'lpstrFile のサイズを指定する lpstrFileTitle As String '?? NUll nMaxFileTitle As Long '?? NUll lpstrInitialDir As String 'ディレクトリの指定 NULLならカレントディレクトリ lpstrTitle As String 'ダイアログボックスのタイトル flags As Long '上記の定数を OR 演算子で組み合わせて指定する nFileOffset As Integer 'パスの先頭から拡張子を含まないファイル名までの位置を返す nFileExtension As Integer 'パスの先頭から拡張子を含むファイル名までの位置を返す lpstrDefExt As String 'ユーザーが拡張子を入力しなかった場合に付加される拡張子3文字 lCustData As Long '?? NULL lpfnHook As Long '?? NULL lpTemplateName As String '?? VBNULLSTRING End Type Declare Function GetActiveWindow& Lib "User32" () Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" ( pOpenfilename As OPENFILENAME ) As Long Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (Byval nBufferLength As Long, Byval lpBuffer As String) As Long 'ファイルを開くダイアログを表示して場所を指定させる FileName = "mfenames.nsf" stOpenFileName.hwndOwner = GetActiveWindow() stOpenFileName.lpstrFilter ="その他のファイル" stOpenFileName. lpstrFile = FileName & String$(256, Chr$(0)) stOpenFileName.nMaxFile = 256 stOpenFileName. lpstrFileTitle = String$(256, Chr$(0)) stOpenFileName.nMaxFileTitle = 256 stOpenFileName.lpstrInitialDir = FileDir stOpenFileName.lpstrTitle = "ファイル選択" & Chr$(0) stOpenFileName.flags = &H4 stOpenFileName.lStructSize = Lenb(stOpenFileName) stOpenFileName.lpstrCustomFilter = "" lRetVal = GetOpenFileName(stOpenFileName) 何かよいアドバイスをお願いします。