Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизGetCurrentDirectory глючит :( Найти похожие ветки
← →
Fanny (2005-06-25 21:42) [0]при старте программы из автозапуска (ярлык в Пуск -> программы -> автозагрузка) всё нормально, а при старте из реестра GetCurrentDirectory возвращает "C:\"
Что за фигня ?
← →
Reindeer Moss Eater © (2005-06-25 21:56) [1]GetCurrentDirecory не может возвратить "C:\".
Потому что она возвращает DWORD.
← →
Grief © (2005-06-25 22:00) [2]Она не возвращает дворд. Ошибка в том, что она работает правильно, указывая ТЕКУЩУЮ папку. Если тебе нужна папка с приложением - отрежь от ParamSTR(0) конец в виде именя файла.
← →
Darkwing © (2005-06-25 22:02) [3]Есть еще вариант запускать эту функцию самой первой строчкой в Form1.OnCreate. Тоже была такая проблема.
← →
Reindeer Moss Eater © (2005-06-25 22:13) [4]Она не возвращает дворд.
Неужели?
The GetCurrentDirectory function retrieves the current directory for the current process.
DWORD GetCurrentDirectory(
DWORD nBufferLength, // size, in characters, of directory buffer
LPTSTR lpBuffer // address of buffer for current directory
);
← →
Fanny (2005-06-26 17:24) [5]поясняю:
- при старте из автозагрузки (с ярлыка) - всё ОК
(как впрочем и просто запуск в любое время);
- при старте из реестра - GetCurrentDirectory(sizeof(s),s)
переменная s (: array[0..MAX_PATH] of char) получает
значение "C:\" (без кавычек).
до зарезу нужен каталог из которого статует программа (там инишка лежит). неужели надо из GetModuleFileName придется выдёргивать (через ж...)? :(
← →
Reindeer Moss Eater © (2005-06-26 17:29) [6]тебе же сказали, ExtractFileDir(ParamStr(0))
← →
Anatoly Podgoretsky © (2005-06-26 17:31) [7]Fanny (26.06.05 17:24) [5]
У тебя не настроеный ярлык, установи в нем другую рабочую папку, например C:\ и все будет одинаково.
Папка из которой стартует программа ничего общего с текущей папкой не имеет.
← →
Antonn © (2005-06-26 17:35) [8]Anatoly Podgoretsky © (26.06.05 17:31) [7]
У тебя не настроеный ярлык, установи в нем другую рабочую папку, например C:\ и все будет одинаково.
Папка из которой стартует программа ничего общего с текущей папкой не имеет.
кстати, давно хотел спросить о подобном. Использую ShellExecute и при запуске, некоторые игры не правильно определяют свой каталог, т.е. ресурсы свои не находят. В какой параметр запуска нужно прописывать каталог запуска?
← →
Fanny (2005-06-26 17:37) [9]а почему с автозапуском работает ?
из реестра другим методом функция вызывается ?
← →
Reindeer Moss Eater © (2005-06-26 17:39) [10]а почему с автозапуском работает ?
Она всегда работает.
← →
Reindeer Moss Eater © (2005-06-26 17:43) [11]The GetCurrentDirectory function retrieves the current directory for the current process.
Независимо от того, чем и откуда и кого запустили.
← →
Anatoly Podgoretsky © (2005-06-26 17:47) [12]Antonn © (26.06.05 17:35) [8]
У тебя неправильная программа, посмотри справку по ShellExecute и все найдется.
← →
Antonn © (2005-06-26 18:51) [13]Anatoly Podgoretsky © (26.06.05 17:47) [12]
мне больше кажется, что я неправильно юзаю ShellExecute...
Вот для примера - есть игра (NFSU2, не играли? :)), запускаю так:
ShellExecute(Handle, nil, "D:\games\Need For Speed Underground 2\speed2.exe", nil, nil, SW_SHOW);
если моя прога лежит в каталоге с игрой - все работает, если программа лежит в другом месте(например C:\xlam\) то игра не запускается. Точнее запускается, но закрывается, в логе пишет не найдены ресурсы.
Такая же ботва с Grand Theft Auto - Vice City, Cold_Zero, Vietcong, FarCry. В ярлыках указывается путь к приложению и каталог запуска. Где присать каталог запуска у ShellExecute?
← →
Reindeer Moss Eater © (2005-06-26 18:56) [14]При чем здесь свойства ярлыка, если в ShellExecute у тебя передается имя самого exe модуля?
А если у меня 100 разных ярлыков есть на игру?
← →
Reindeer Moss Eater © (2005-06-26 18:58) [15]Где присать каталог запуска у ShellExecute?
Заблудился в шести параметрах?
← →
Anatoly Podgoretsky © (2005-06-26 19:10) [16]Antonn © (26.06.05 18:51) [13]
Сказано же прочитай справку, уже пора.
← →
Grief © (2005-06-26 22:25) [17]Касательно возвращения - она записывает в буфер. Не предирайся к словам, Reindeer. При етом именно текущую папку. Откуда вызываешь прогу, такой путь и будет. Кажется. Если человеку нужен путь к ехе - ParamStr(0)!
← →
Alexander Panov © (2005-06-26 22:38) [18]Grief © (26.06.05 22:25) [17]
Откуда вызываешь прогу, такой путь и будет.
Возвращаться будет текущий каталог, а не путь к программе.
Для демонстрации просто выполни последовательность действий:
1. Запусти cmd.exe.
2. c:
3. cd \
4. Запусти программу, указав полный путь к ней.
5. в программе получи текущий каталог.
6. Текущий каталог будет c:\
← →
Grief © (2005-06-26 22:51) [19]Удалено модератором
← →
Grief © (2005-06-26 22:52) [20]Удалено модератором
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.033 c