Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 16:17   #1
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию Путь к исполняемому каталогу (или файлу)

Доброе время суток!

Подскажите, как получить путь к исполняемому фалу или каталогу приложения. Использую Visual Studio C++ 2008, только WinApi.

Я хочу из своего приложения по нажатию кнопки в меню запускать другой процесс. Попробовал так (здесь запускаю блокнот виндовс):

Код:
case WM_COMMAND:
		wmId    = LOWORD(wParam);
		wmEvent = HIWORD(wParam);
		// Разобрать выбор в меню:
		switch (wmId)
		{
		case ID_NOTPAD:
			ZeroMemory(&cif,sizeof(STARTUPINFO));	// обнулить
			cif.cb=sizeof(STARTUPINFO);
			if(CreateProcess("c:\\windows\\notepad.exe",NULL,
					NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==FALSE)
			{
				MessageBox(hWnd,"Не могу создать процесс.","Ошибка",MB_ICONWARNING);
			}
			break;
Но ведь я не знаю полного пути к исполняемому файлу, находящемуся в том же каталоге что и файл программы (скопировать то можно куда угодно). Подскажите нужную функцию пожалуйста.
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 23.08.2010, 16:33   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Если находится в той же папке где и сама программа, тогда пишите путь так
Код:
CreateProcess("название.exe",NULL,.........);
если во вложенной папке
Код:
CreateProcess("папка\\название.exe",NULL,.........);
если сама прога во вложенной папке
Код:
CreateProcess("..\\название.exe",NULL,.........);
В общем точка остчета это папка где находится сама программа, самое главное не поставьте нечаянно "\\" в начале пути
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 23.08.2010, 16:36   #3
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

Большое спасибо, сейчас попробую
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 23.08.2010, 16:37   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

GetModuleFileName(NULL,....) - полный путь + имя запущенной программы. Нужно только "отрезать" с конца "myprogram.exe" и получится искомый путь.
Вариант mrChester с относительными путями слетит при использовании ярлыков (там в свойствах можно рабочий каталог сменить) и при использовании виндовых диалогов открытия/сохранения.
pu4koff вне форума Ответить с цитированием
Старый 23.08.2010, 16:46   #5
sVasilich
Форумчанин
 
Аватар для sVasilich
 
Регистрация: 16.12.2009
Сообщений: 224
По умолчанию

pu4koff, спасибо, попробуем и GetModuleFileName() )
Люди бывают 10 типов: те, кто понимают двоичную систему счисления, и те, кто не понимают...
sVasilich вне форума Ответить с цитированием
Старый 20.10.2015, 08:18   #6
Fedor666
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 71
Радость

Добрый денечек!
Сам сейчас с этим мучился. Все предложения из тыр-нета что-то не понравились - все эти кодировки чертовы, правой рукой почесать левое ухо... Знаю, что время прошло много... Может кому пригодится:
Код:
void GetAppDirectory(LPSTR lpResult)
{
	__asm {
		mov		ebx,MAX_PATH
		xor		eax,eax
		mov		edi,lpResult
		push		ebx
		push		edi
		push		eax
		call		dword ptr [GetModuleFileName]
		mov		ecx,eax
		dec		eax
		add		edi,eax
		mov		al,'\\'
		std
		repne		scasb
		inc		edi
		xor		eax,eax
		inc		edi
		cld
		stosb
	}
}
Fedor666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Путь к файлу. Sniperok Общие вопросы по Java, Java SE, Kotlin 2 12.08.2010 04:46
[WPF]Получить путь к исполняемому файлу включая имя исполняемого файла. Casper-SC Общие вопросы .NET 3 26.07.2010 03:27
Как указать путь к каталогу? iskurt Общие вопросы C/C++ 0 17.06.2010 18:22
Путь к файлу Баламут Win Api 12 14.05.2008 13:27
Функция CallWndProc. Получить путь к папке или файлу к которому преднозначено сообщение Irat Помощь студентам 1 16.02.2008 23:36