お世話になります。
GetDriveTypeを使用する時 "kernel32"をDeclare宣言しますよね。
この関数が使用したソフトを配布ファイルにしたいんですけど、使用できないパソコンとか条件はどうなっているんでしょうか?
Win95はだめですよね?
APIとWindowsの関係に関する質問は、
またVBの掲示板ではなく、別の掲示板になると思います。
投稿内容だけ見ると、API関連の掲示板に投稿したほうが、レスつきやすいですよ?
MSDNのヘルプでは・・・
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
となってしましたので、大丈夫のようです。
しかし他の方法となると・・・ADSIがありますが、
OSに搭載されているのは、Win2000以降ですので、それ以前
のOSには、新たにインストールすることになり、逆に不可。
プログラム(VB)側で、対応するOSを判別して動作させる
ように書かないといけないことになります。
以上。
ここでする質問ではないのでしたらすみませんが”・・・・
"kernel32"をDeclare宣言してから、パソコン終了時に
??????? メモリを参照 ??????メモリがReadになることが有りませんでした(?は数字です) と言うエラーメッセージがでてきて終了します。
なんだかカーネル参照時のエラーメッセージの様なんですけど。カーネルを使用したソフトは正常動作しています。何か心あたりある方いらっしゃいませんか?
OSはXPです。
Declare宣言自体のコードを掲載して頂かないと、VB側
のコードの問題か、APIの使用方法の間違いか・・・
判断のしようがありません。
以上。
申し訳ありません
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal RootPathName As String) As Long
宣言自体は正しいですね。
実際にエラーの再現する最小限のコードを載せて下さい。
では・・・
http://support.microsoft.com/default.aspx?scid=kb;ja;161300
このコードを実行して、同様に保護違反しますか?
出ない場合、他のコードが違反(エラー)の原因に
なっていると思いますが・・・
以上。
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
お世話になります。(反応が鈍く誤って入力してしまいました↑)
ソースは以下のように至ってシンプルだと思うのですが。どうですか?
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
お世話になります。
理由は解らないんですが、何回か繰り返して見たところエラーが見られなくなりました。不安ですがこのまま続けてみます。
新たな質問がでてきたのでお願いいたします。
ドライブの検索は出来たので、ドライブに何か挿入されているか?もしくは、ファイルが有るかを見るにはどうしたらよいでしょうか?