Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.094 c
11-1105702122
Ajax
2005-01-14 14:28
2005.08.21
Работа с потоками


14-1122461517
dreamse
2005-07-27 14:51
2005.08.21
Программа для автоматического добавления софта в каталоги


3-1120817732
Алёна
2005-07-08 14:15
2005.08.21
Обращение к User Defined Function в MS SQL Server


4-1120038815
Dmitrij_K
2005-06-29 13:53
2005.08.21
CreateProcess


1-1122616300
Shlomo
2005-07-29 09:51
2005.08.21
QuickReport, внедрить один отчёт в другой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский