Конференция "WinAPI" » Короткие имена [D7, WinXP]
 
  • apic (21.01.12 09:09) [0]
    У меня проблема! Я из своего приложения запускаю другое приложение с параметрами, но в качастве параметра нужно передать путь к каталогу, но при этом в именах папок не должно быть пробелов. Пытаюсь получить короткий путь с помощью ф-ции GetShortPathName, и выясняется, что для каких-то директорий она мне возвращает короткие имена, а для каких-то нет, даже если они русскоязычные. Открываю командную строку, ввожу команду Dir /x (просмотр содержимого каталога с показом коротких имен файлов и каталогов) и вижу, что у чати директорий есть короткое имя, а у части нет. Причем что в XP, что Win7 ситуация одинаковая, все папки создавались обычным способом, через проводник. Вопрос: почему у одних есть короткие имена, а у других нет, и что еще более важно как так нужно создать каталог и файл, чтобы у них были короткие имена и как уже существующим каталогам и файлам дать короткие имена?
  • Дмитрий Белькевич (21.01.12 20:30) [1]

    >  и выясняется, что для каких-то директорий она мне возвращает
    > короткие имена, а для каких-то нет, даже если они русскоязычные


    Насколько я помню - короткие имена не всегда создаются, вроде бы можно вообще глобально генерацию коротких имён отключить.


    >  но при этом в именах папок не должно быть пробелов


    Думается, нужно искать возможность что бы пробелы были допустимы в именах папок.
  • Inovet © (21.01.12 20:34) [2]
    В двойных кавычках надо путь с пробелами и ещё некоторыми символами передавать, можно и всегда в кавычках.
  • QAZ (23.01.12 13:32) [3]

    > Вопрос: почему у одних есть короткие имена, а у других нет,
    >  и что еще более важно как так нужно создать каталог и файл,
    >  чтобы у них были короткие имена и как уже существующим
    > каталогам и файлам дать короткие имена?

    ответ: никогда не пользоваться твикерами,чистилками реестра,супермега оптимизаторами чего-либо,а текже говносборками винды аля ZverDVD и т.д.
  • apic (23.01.12 15:41) [4]
    Inovet, на счет кавычек не предлагать, это изначально не помогло, иначе я бы не писал. Я так понял принимающее параметры ПО вообще не поддерживает пути с пробелами, возможно не доработки разработчиков и это надо как то обойти.
  • apic (23.01.12 15:42) [5]
    Кто-то же должен знать как с этим бороться, может правда в реестре чего нибудь включить.
  • Германн © (23.01.12 15:45) [6]

    > apic   (23.01.12 15:42) [5]

    А что разработчики 1С ответили?
  • _ (23.01.12 16:03) [7]
    Подсунуть символическую ссылку
  • MultIfleX (26.01.12 07:30) [8]
    попробуй
    HANDLE WINAPI FindFirstFile(  __in   LPCTSTR lpFileName,   __out LPWIN32_FIND_DATA lpFindFileData);
    структура LPWIN32_FIND_DATA содержит cAlternateFileName[14];
    не забывай делать FindClose()

    Все что тебе необходимо сделать - пройтись по всему пути от первого каталога до полного имени файла.
  • apic (26.01.12 16:10) [9]
    MultIfleX, огромное спасибо! Ща попробую, вдруг поможет!
  • apic (31.01.12 10:54) [10]
    Не с FindFirstFile та же фигня - возвращает пустое короткое имя
  • Дмитрий Белькевич (10.02.12 18:58) [11]
    >Не с FindFirstFile та же фигня - возвращает пустое короткое имя

    ну нету там имён, нету. всё, забудь. думай, как по-другому сделать - как заставить программу принять длинное имя или что то с симлинками/сабстом.
  • Rouse_ © (10.02.12 20:41) [12]
    От тут грамотно все расписали: http://forum.sources.ru/index.php?showtopic=350822
  • Германн © (10.02.12 21:11) [13]

    > Rouse_ ©   (10.02.12 20:41) [12]
    >
    > От тут грамотно все расписали: http://forum.sources.ru/index.
    > php?showtopic=350822

    Тут другой случай. Тут какой-то косяк в 1С, но автор упорно не желал обратиться к разработчикам.
  • Dimka Maslov © (10.02.12 23:41) [14]
    Есть такие функции GetShortPathName и GetLongPathName
  • Германн © (10.02.12 23:48) [15]

    > Dimka Maslov ©   (10.02.12 23:41) [14]
    >
    > Есть такие функции GetShortPathName

    Функция то есть, а вот самих коротких имен никто не обещал :)
  • Dimka Maslov © (11.02.12 23:01) [16]

    > Германн ©   (10.02.12 23:48) [15]


    На этот случай есть ещё функцейо SetFileShortName, если очень хочется. Но я бы не советовал этого делать. Не тот уровень пользователя.
  • QAZ (16.02.12 15:29) [17]
    самое забавное что есть известная прога использующая такой же тупой метод посылки коротких имен
 
Конференция "WinAPI" » Короткие имена [D7, WinXP]
Есть новые Нет новых   [134431   +6][b:0][p:0]