Не запускается файл, если в его пути содержится кириллица - VB
Формулировка задачи:
Добрый день!
Прошу помочь. Запутался в трех соснах...
Код простейший, в чем проблема не понимаю...
Если в пути к файлу "Progs.exe" нет кириллицы, все запускается. Если есть, фонарь. Причем в режиме просмотра "runScript.cmd" вижу символы (кириллицу). Во время исполнения "runScript.cmd" вместо кириллицы "абра кадабра"
Листинг программы
- Dim intFreeFile as Integer, intRetCodes as Integer
- intFreeFile = freefile
- Open "runScript.cmd" for output as intFreeFile
- Print #intFreeFile, "@Echo off"
- Print #intFreeFile, chr (34) & app.path & "\Progs.exe" & chr (34)
- Close intFreeFile
- intRetCodes = Shell(chr (34) & app.path & "\runScript.cmd" & chr (34),vbNormalFocus)
Решение задачи: «Не запускается файл, если в его пути содержится кириллица»
textual
Листинг программы
- Option Explicit
- Private Declare Function GetShortPathName Lib "kernel32.dll" Alias "GetShortPathNameW" (ByVal lpszLongPath As Long, ByVal lpszShortPath As Long, ByVal cchBuffer As Long) As Long
- Const MAX_PATH As Long = 260&
- Private Sub Form_Load()
- Dim intFreeFile As Integer, intRetCodes As Integer, str As String
- intFreeFile = FreeFile
- Open "runScript.cmd" For Output As intFreeFile
- Print #intFreeFile, "@Echo off"
- str = Chr(34) & App.Path & "\Progs.exe" & Chr(34)
- Print #intFreeFile, PathToDOS(str)
- Close intFreeFile
- intRetCodes = Shell(Chr(34) & App.Path & "\runScript.cmd" & Chr(34), vbNormalFocus)
- End Sub
- Public Function PathToDOS(Path As String)
- On Error GoTo ErrorHandler:
- Dim AltName As String
- Dim SizeOfAltName As Long
- AltName = Space$(MAX_PATH + 1&)
- SizeOfAltName = GetShortPathName(StrPtr(Path), StrPtr(AltName), MAX_PATH + 1&)
- If SizeOfAltName <> 0& Then
- AltName = Left$(AltName, SizeOfAltName)
- If StrComp(AltName, Path, 1) <> 0& Then PathToDOS = AltName
- End If
- Exit Function
- ErrorHandler:
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д