VB6: CreateFile () создает файл с искаженным именем в текущем рабочем каталоге - PullRequest
2 голосов
/ 26 мая 2011

Я устранял проблему, когда CreateFile не мог открыть существующий именованный канал, когда обнаружил, что CreateFile () плохо работает с параметром filename.Мой код:

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileW" ( _
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

pipeHandle = CreateFile("C:\\test.txt", GENERIC_READ Or GENERIC_WRITE, 0&, 0&, CREATE_ALWAYS, 0&, 0&)

Он не создает файл в C: \, вместо этого он создает файл в текущем рабочем каталоге VB с искаженным именем файла.Кажется, CreateFile не может распознать и проанализировать заданную строку имени файла.

Почему это происходит?Я использую VB6 на Windows 7 (использовал некоторые хитрости, чтобы установить его).Может ли это быть причиной проблемы?

1 Ответ

4 голосов
/ 26 мая 2011

Это было давно, но я думаю, что это анси / юникод.Попробуйте функцию CreateFileA и посмотрите, что получится.(Кроме того, IIRC, вы не избежите \ .... хотя, опять же, прошло около 7 лет с тех пор, как я серьезно закодировал VB6.)

...