-
У меня проблема! Я из своего приложения запускаю другое приложение с параметрами, но в качастве параметра нужно передать путь к каталогу, но при этом в именах папок не должно быть пробелов. Пытаюсь получить короткий путь с помощью ф-ции GetShortPathName, и выясняется, что для каких-то директорий она мне возвращает короткие имена, а для каких-то нет, даже если они русскоязычные. Открываю командную строку, ввожу команду Dir /x (просмотр содержимого каталога с показом коротких имен файлов и каталогов) и вижу, что у чати директорий есть короткое имя, а у части нет. Причем что в XP, что Win7 ситуация одинаковая, все папки создавались обычным способом, через проводник. Вопрос: почему у одних есть короткие имена, а у других нет, и что еще более важно как так нужно создать каталог и файл, чтобы у них были короткие имена и как уже существующим каталогам и файлам дать короткие имена?
-
> и выясняется, что для каких-то директорий она мне возвращает > короткие имена, а для каких-то нет, даже если они русскоязычные
Насколько я помню - короткие имена не всегда создаются, вроде бы можно вообще глобально генерацию коротких имён отключить.
> но при этом в именах папок не должно быть пробелов
Думается, нужно искать возможность что бы пробелы были допустимы в именах папок.
-
В двойных кавычках надо путь с пробелами и ещё некоторыми символами передавать, можно и всегда в кавычках.
-
> Вопрос: почему у одних есть короткие имена, а у других нет, > и что еще более важно как так нужно создать каталог и файл, > чтобы у них были короткие имена и как уже существующим > каталогам и файлам дать короткие имена?
ответ: никогда не пользоваться твикерами,чистилками реестра,супермега оптимизаторами чего-либо,а текже говносборками винды аля ZverDVD и т.д.
-
Inovet, на счет кавычек не предлагать, это изначально не помогло, иначе я бы не писал. Я так понял принимающее параметры ПО вообще не поддерживает пути с пробелами, возможно не доработки разработчиков и это надо как то обойти.
-
Кто-то же должен знать как с этим бороться, может правда в реестре чего нибудь включить.
-
> apic (23.01.12 15:42) [5]
А что разработчики 1С ответили?
-
Подсунуть символическую ссылку
-
попробуй HANDLE WINAPI FindFirstFile( __in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileData); структура LPWIN32_FIND_DATA содержит cAlternateFileName[14]; не забывай делать FindClose()
Все что тебе необходимо сделать - пройтись по всему пути от первого каталога до полного имени файла.
-
MultIfleX, огромное спасибо! Ща попробую, вдруг поможет!
-
Не с FindFirstFile та же фигня - возвращает пустое короткое имя
-
>Не с FindFirstFile та же фигня - возвращает пустое короткое имя
ну нету там имён, нету. всё, забудь. думай, как по-другому сделать - как заставить программу принять длинное имя или что то с симлинками/сабстом.
-
-
> Rouse_ © (10.02.12 20:41) [12] > > От тут грамотно все расписали: http://forum.sources.ru/index. > php?showtopic=350822
Тут другой случай. Тут какой-то косяк в 1С, но автор упорно не желал обратиться к разработчикам.
-
Есть такие функции GetShortPathName и GetLongPathName
-
> Dimka Maslov © (10.02.12 23:41) [14] > > Есть такие функции GetShortPathName
Функция то есть, а вот самих коротких имен никто не обещал :)
-
> Германн © (10.02.12 23:48) [15]
На этот случай есть ещё функцейо SetFileShortName, если очень хочется. Но я бы не советовал этого делать. Не тот уровень пользователя.
-
самое забавное что есть известная прога использующая такой же тупой метод посылки коротких имен
|