vb中createfile返回-1

来源:百度知道 编辑:UC知道 时间:2024/05/04 04:28:10
vb60编程中,为什么我用CreateFile函数无法创建文件?
代码如下:
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2

dim lngHandle As Long

lngHandle = CreateFile("C:\email126.txt", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0) '创建文件

经运行测试 lngHandle的值为-1,但查找文件时却找不到,文件没有创建!

因为你用了 OPEN_EXISTING,前提必须要有c:\email126.txt这个文件才能成功,如果你第一次运行,肯定是-1,如果只是创建一个新文件,要用 CREATE_ALWAYS 或 OPEN_ALWAYS

如:

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const CREATE_ALWAYS As Long = 2
Private Const OPEN_ALWAYS As Long = 4

lngHandle = CreateFile("C:\email126.txt", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, CREATE_ALWAYS, 0, 0) '创建文件

Call CloseHandle(lngHandle) '关闭lngHandle

把这段放在Command1_Click试试,我试了,可以通过

dim lngHandle As Long

lngHandle = CreateFile("C:\email126.txt", GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0) '创建文件
实例
'This project needs a Common Dialog box, named CDBox.
' (To add the Common Dialog Box to your tools menu, go to Project->Components (or press CTRL-T)
' and select Microsoft Common