GetDriveTypeを使用したいんですけど。


すえ太郎  2004-01-22 09:01:47  No: 111519  IP: [192.*.*.*]

お世話になります。
GetDriveTypeを使用する時  "kernel32"をDeclare宣言しますよね。
この関数が使用したソフトを配布ファイルにしたいんですけど、使用できないパソコンとか条件はどうなっているんでしょうか?
Win95はだめですよね?

編集 削除
たけ  2004-01-22 09:19:30  No: 111520  IP: [192.*.*.*]

APIとWindowsの関係に関する質問は、
またVBの掲示板ではなく、別の掲示板になると思います。

投稿内容だけ見ると、API関連の掲示板に投稿したほうが、レスつきやすいですよ?

編集 削除
岡田 之仁  2004-01-22 09:56:13  No: 111521  IP: [192.*.*.*]

MSDNのヘルプでは・・・

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降

となってしましたので、大丈夫のようです。

しかし他の方法となると・・・ADSIがありますが、
OSに搭載されているのは、Win2000以降ですので、それ以前
のOSには、新たにインストールすることになり、逆に不可。

プログラム(VB)側で、対応するOSを判別して動作させる
ように書かないといけないことになります。

以上。

編集 削除
すえ  2004-01-22 11:20:52  No: 111522  IP: [192.*.*.*]

ここでする質問ではないのでしたらすみませんが”・・・・

"kernel32"をDeclare宣言してから、パソコン終了時に
??????? メモリを参照  ??????メモリがReadになることが有りませんでした(?は数字です)  と言うエラーメッセージがでてきて終了します。
なんだかカーネル参照時のエラーメッセージの様なんですけど。カーネルを使用したソフトは正常動作しています。何か心あたりある方いらっしゃいませんか?
OSはXPです。

編集 削除
岡田 之仁  2004-01-22 11:25:53  No: 111523  IP: [192.*.*.*]

Declare宣言自体のコードを掲載して頂かないと、VB側
のコードの問題か、APIの使用方法の間違いか・・・
判断のしようがありません。

以上。

編集 削除
すえ太郎  2004-01-22 11:34:34  No: 111524  IP: [192.*.*.*]

申し訳ありません

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal RootPathName As String) As Long

編集 削除
とろ  2004-01-22 12:05:28  No: 111525  IP: [192.*.*.*]

宣言自体は正しいですね。

実際にエラーの再現する最小限のコードを載せて下さい。

編集 削除
岡田 之仁  2004-01-22 12:34:37  No: 111526  IP: [192.*.*.*]

では・・・

http://support.microsoft.com/default.aspx?scid=kb;ja;161300

このコードを実行して、同様に保護違反しますか?

出ない場合、他のコードが違反(エラー)の原因に
なっていると思いますが・・・

以上。

編集 削除
吸えたろう  2004-01-22 12:51:53  No: 111527  IP: [192.*.*.*]

Private Sub Command2_Click()
    'フラグセット
    Block2_Open_f = Lu_list_Btn
    'ファイルを開くボタン
    If Check1.Value = 1 Then
        
        'ドライブチェック
        'ドライブが有れば、デフォルトパス設定
        If 2 = GetDriveType("A:\") Then                             'フロッピードライブ
            file_manager_f.CommonDialog1.InitDir = "A:\"
        ElseIf 2 = GetDriveType("D:\") Or 5 = GetDriveType("D:\") Or 6 = GetDriveType("D:\") Then      'CDドライブ,RAMディスク
            file_manager_f.CommonDialog1.InitDir = "D:\"
        ElseIf 2 = GetDriveType("D:\") Or 5 = GetDriveType("E:\") Or 6 = GetDriveType("E:\") Then      'CDドライブ,RAMディスク
            file_manager_f.CommonDialog1.InitDir = "E:\"
        ElseIf 2 = GetDriveType("B:\") Then     'フロッピードライブ
            file_manager_f.CommonDialog1.InitDir = "B:\"
        Else
            file_manager_f.CommonDialog1.InitDir = "C:\"
        End If
    Else
        file_manager_f.CommonDialog1.InitDir = "C:\Program Files\SAGINOMIYA\KYJ\Shop_Data\"
    End If
    Call file_manager_f.file_read_command
End Sub

編集 削除
すえ太朗  2004-01-22 12:55:32  No: 111528  IP: [192.*.*.*]

お世話になります。(反応が鈍く誤って入力してしまいました↑)
ソースは以下のように至ってシンプルだと思うのですが。どうですか?

Private Sub Command2_Click()
        
        'ドライブが有れば、デフォルトパス設定
        If 2 = GetDriveType("A:\") then                             'フロッピードライブ
            file_manager_f.CommonDialog1.InitDir = "A:\"
        ElseIf 2 = GetDriveType("D:\") Or 5 = GetDriveType("D:\") Or 6 = GetDriveType("D:\") Then      'CDドライブ,RAMディスク
            file_manager_f.CommonDialog1.InitDir = "D:\"
        ElseIf 2 = GetDriveType("D:\") Or 5 = GetDriveType("E:\") Or 6 = GetDriveType("E:\") Then      'CDドライブ,RAMディスク
            file_manager_f.CommonDialog1.InitDir = "E:\"
        ElseIf 2 = GetDriveType("B:\") Then     'フロッピードライブ
            file_manager_f.CommonDialog1.InitDir = "B:\"
        Else
            file_manager_f.CommonDialog1.InitDir = "C:\"
        End If
        End If
  End Sub

編集 削除
すえ太郎  2004-01-22 18:11:32  No: 111529  IP: [192.*.*.*]

お世話になります。
理由は解らないんですが、何回か繰り返して見たところエラーが見られなくなりました。不安ですがこのまま続けてみます。
新たな質問がでてきたのでお願いいたします。
ドライブの検索は出来たので、ドライブに何か挿入されているか?もしくは、ファイルが有るかを見るにはどうしたらよいでしょうか?

編集 削除