![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Кто-нибудь знает какая функция возвращает в качестве значения строку с путём до экзэшника, откуда, собственно говоря, программа и запускается. Нужна для авторана, что б в независимосте от местоположения он всегда (почти) работал.
|
|||
|
||||
| FdX |
|
|||
|
Unregistered |
Эх... давно не пользовался такими функциями...
Если я правильно понял и ты пишешь под винды, тебе поможет GetModuleFileName(HANDLE hModule,LPSZ name,DWORD namelen); под рукой нет хелпа, и точно параметров не помню. в качестве hModule передаешь NULL, namelen - макс. длина буфера name, в котором будет путь к ехе-шнику. А ешшо ведь можко argv[0] юзать (подчеркиванме "_" не забудь), тут заодно и параметры комм. строки взять можно. |
|||
|
||||
| Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Огромное спасибо, всё работает как часы.
|
|||
|
||||
| suborg |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 29.4.2002 Где: Москва Репутация: нет Всего: нет |
argv[0] под win32 не работает, на сколько я помню... в общем где-то точно не работает
|
|||
|
||||
| Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Не знаю, с argv[] работал, только в ДОСЕ, а функция GetModuleFileName(...) работает без проблем - возвращает path до exe'шника.
|
|||
|
||||
| FdX |
|
|||
|
Unregistered |
Как это argv[] не работает? Странно... В VC++6.0 у меня работал.
Я ещще тогда чайником был, писал прогу, которая должна была открыть файл с путем и именим, как у нее, но с другим расширением. Про GetModuleFileName() я тогда не знал, да и про другие способы тоже. Знал тока argv[]. И все работало. А вот Билдере - не помню. А вообще argv[] - стандартная вещь дли С и С++. И если не работает, то по той причине, что компилятор не поддерживает. Это ведь не функция ОС, а массив указателей. И заполняет его та часть проги, которая приделывается автоматически и выполняется до main() или WinMain(). И ещще: как main объявляете? если так: тип main(); - может не робить argv[] а если так: тип main(int argc, char* argv[]); - то обязано. В VC++ пишите "__argv[0]" (Если не ошибаюсь, два подчеркивания именно). Это в любом месте кода вроде можно. |
|||
|
||||
| Blade |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 99 Регистрация: 8.7.2002 Репутация: нет Всего: нет |
Ты прав FdX. Протестил я "__argv[0]" в VC.NET под XP - всё пашет и тут.
В любом случае всем спасибо за помощь. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |