Как узнать имя приложения. Допустим скомпилировал приложение, получил exe-ик — arhiv.exe. Программа в ходе работы считывает еще несколько файлов с таким же названием но с другим расширением. А потом кто то взял да и изменил название exe-ика, и прилагающиеся файлы, вот тут то и нужно получать имя самой программы. Какая функция это делает???
сам разобрался — это же имя нулевого параметра.
int _tmain(int argc, _TCHAR* argv[])
{
argv[0] // — это значение и нужно было найти
}
Здравствуйте, xzibit, Вы писали:
X>сам разобрался — это же имя нулевого параметра.
X>int _tmain(int argc, _TCHAR* argv[])
X>{
X> argv[0] // — это значение и нужно было найти
X>}
3.6.1/2
...
int main(int argc, char* argv[]) { /* ... */ }
In the latter form argc shall be the number of arguments passed to the program from the environment in
which the program is run. If argc is nonzero these arguments shall be supplied in argv[0] through
argv[argc-1] as pointers to the initial characters of null-terminated multibyte strings (NTMBSs)
(17.3.2.1.3.2) and argv[0] shall be the pointer to the initial character of a NTMBS that represents the
name used to invoke the program or "". The value of argc shall be nonnegative. The value of
argv[argc] shall be 0.
Т.е. гарантии того, что argv[0] будет содержать имя — нет.
Здравствуйте, xzibit, Вы писали:
X>сам разобрался — это же имя нулевого параметра.
X>int _tmain(int argc, _TCHAR* argv[])
X>{
X> argv[0] // — это значение и нужно было найти
X>}
Для Windows
GetModuleFileName(0, ...)
Здравствуйте, xzibit, Вы писали:
X>сам разобрался — это же имя нулевого параметра.
argv[0] может содержать всё что угодно, как шелл захочет. Хотя
обычно он хочет, чтобы там был путь (абсолютный или относительно текущего каталога в момент запуска) к исполняемому файлу.
Может быть, лучше как-то абстрагироваться от собственного имени в принципе?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>