2010-06-01 4 views
1

У меня есть программа, которая выполняется другой программой. Программа, которая выполняется, нуждается в файлах, расположенных в своем собственном расположении [той же папке]. Если я вызову myfile.open ("xpo.dll"), я могу получить ошибку, потому что я не передаю [fullpath + name + extension]. Программа, которая выполняется, может изменять пути в зависимости от пути установки. Поэтому мне было интересно, есть ли способ получить путь к приложению [где приложение находится] и установить его так, чтобы при выполнении другой программы с другого пути все могло бы работать правильно ...?Как установить путь приложения к запущенной программе?

[Использование C++ без .NET Framework]

Спасибо.

ответ

1

Используйте GetModuleFileName и передайте NULL для hModule.

DWORD GetModuleFileName(
    HMODULE hModule, // handle to module 
    LPTSTR lpFilename, // path buffer 
    DWORD nSize  // size of buffer 
); 
0

Во-первых, я бегу в эту проблему на других языках много, и найти Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) очень полезно для выяснения того, какой папке она в настоящее время пытается получить доступ.

Для этого нет стандартной функции.

  1. Просто мысль, вы пробовали делать myfile.open "./xpo.dll"?

  2. Если это консольное приложение, вы можете использовать getcwd функции POSIX: http://www.dreamincode.net/code/snippet77.htm

  3. Если это приложение Windows, и вы можете использовать Windows API, вы можете использовать GetModuleFileName ... увидеть второй ответ этот вопрос здесь: How do I get the directory that a program is running from?

Смежные вопросы