Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

кАК уЗНАТЬ пУТЬ к пРОГРАММЕ

1.9K
05 декабря 2003 года
SvN
28 / / 11.07.2003
Необходимо узнать путь к программе(без имени ехе файла). Можно воспользоваться __argv[0] и выкинуть имя файла, но может можно проще?
Заранее благодарен.
1.3K
05 декабря 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by SvN
Необходимо узнать путь к программе(без имени ехе файла). Можно воспользоваться __argv[0] и выкинуть имя файла, но может можно проще?
Заранее благодарен.



Куда уж проще то?:D

1.9K
05 декабря 2003 года
SvN
28 / / 11.07.2003
В вопросе подразумевалось может API функция есть?
1.3K
05 декабря 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by SvN
В вопросе подразумевалось может API функция есть?


Вызов API функции требует обращения к ОС.

319
05 декабря 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by view

Вызов API функции требует обращения к ОС.


The GetCurrentDirectory function retrieves the current directory for the current process.

1.3K
05 декабря 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by xelos

The GetCurrentDirectory function retrieves the current directory for the current process.


Текущий каталог процесса не всегда тот, где находится исполняемый файл программы :(

3
05 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by SvN
В вопросе подразумевалось может API функция есть?



А CRT не подойдет? :D
См. _splitpath

1.9K
05 декабря 2003 года
SvN
28 / / 11.07.2003
Значит с __argv[0] не все так отлично как кажется на первый взгляд. Под уникодом эта штука не существует, т. е. переменная то есть а в ней ничего нет(при попытке обращения программа моментально вылетает).
Поэтому пришлось изобрести вот это.
CString GetApllicationPath()
{
TCHAR szBuffer[_MAX_PATH];
::GetModuleFileName(AfxGetInstanceHandle(), szBuffer, _MAX_PATH);
CString sPath = (CString)szBuffer;
sPath = sPath.Left(sPath.ReverseFind('\\'));
return sPath;
}
Универсально и не сложно.
Всем спасибо, тему можно закрывать.
3
05 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by SvN
Значит с __argv[0] не все так отлично как кажется на первый взгляд. Под уникодом эта штука не существует, т. е. переменная то есть а в ней ничего нет(при попытке обращения программа моментально вылетает).


Т.е. как это не существует?!

int wmain( int argc, wchar_t *argv[], wchar_t *envp[] );

ты к argv[0] обращался как к wchar_t* ?

Цитата:
Originally posted by SvN
Поэтому пришлось изобрести вот это.
CString GetApllicationPath()
{
TCHAR szBuffer[_MAX_PATH];
::GetModuleFileName(AfxGetInstanceHandle(), szBuffer, _MAX_PATH);
CString sPath = (CString)szBuffer;
sPath = sPath.Left(sPath.ReverseFind('\\'));
return sPath;
}
Универсально и не сложно.
Всем спасибо, тему можно закрывать.



Я бы не сказал, что это универсально... :D
Это будет работать только с MFC и расходовать значительно больше ресурсов.

1.9K
08 декабря 2003 года
SvN
28 / / 11.07.2003
Цитата:
Originally posted by Green

Т.е. как это не существует?!

int wmain( int argc, wchar_t *argv[], wchar_t *envp[] );

ты к argv[0] обращался как к wchar_t* ?



Я бы не сказал, что это универсально... :D
Это будет работать только с MFC и расходовать значительно больше ресурсов.



Мне именно под MFC и надо было.
А __argv[0] в MFCцешной проге типа char*. По крайней мере Visual 7.0 выдает такое при попытке обратиться к нему по другому.

3
08 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by SvN

Мне именно под MFC и надо было.
А __argv[0] в MFCцешной проге типа char*. По крайней мере Visual 7.0 выдает такое при попытке обратиться к нему по другому.



Да ну?

Смотрим, что выдает визард:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
.......................................

Что-то я не вижу char*

1.9K
09 декабря 2003 года
SvN
28 / / 11.07.2003
Цитата:
Originally posted by Green


Да ну?

Смотрим, что выдает визард:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
.......................................

Что-то я не вижу char*



Где? Я ж говорил нужна фишка была под МФС. Создаем к примеру МДИ и где смотреть выдачу визарда ?

1.3K
09 декабря 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by SvN


Где? Я ж говорил нужна фишка была под МФС. Создаем к примеру МДИ и где смотреть выдачу визарда ?


Если проблема только в UNICODE vs ASCII, я как-то встречал в winAPI функции для преобразования из однобайтовых строк в двухбайтовые и назад. Возможно, это есть только в win2k. Не помню, как они называются, но могу посмотреть, если нужно.

3
09 декабря 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by SvN

Где? Я ж говорил нужна фишка была под МФС. Создаем к примеру МДИ и где смотреть выдачу визарда ?



Тогда это уже не консольное приложения, там WinMain, а не main. А у WinMain нет аргумена argv[0] как такового, там lpCmdLine.

1.3K
09 декабря 2003 года
view
148 / / 14.10.2003
Цитата:
Originally posted by Green


Тогда это уже не консольное приложения, там WinMain, а не main. А у WinMain нет аргумена argv[0] как такового, там lpCmdLine.


В winAPI есть функция, которая делает из lpCmdLine __argv. Сам, правда, не пользовался..

319
21 декабря 2003 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by view

В winAPI есть функция, которая делает из lpCmdLine __argv. Сам, правда, не пользовался..


Указатель на полную командную строку процесса можно.получить и вызовом функции GetCommandLine.

 
Код:
PTSTR GetCommandLine();

Она возвращает указатель на буфер, содержащий полную командную строку, включая полное имя (вместе с путем) исполняемого файла.
6.5K
02 января 2004 года
SaloS
1 / / 02.01.2004
Цитата:
Originally posted by SvN
Необходимо узнать путь к программе(без имени ехе файла). Можно воспользоваться __argv[0] и выкинуть имя файла, но может можно проще?
Заранее благодарен.



Очень просто. Есть функция GetModuleFileName(). Если первый параметр NULL, то в буфер записывается полный путь текущего исполняемого модуля

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог