?
etl schrieb:
wie könnte ich es einsetzen?und ich benutze c++ cli, kein "reines" c++
C++/CLI ist eine Erweiterung von C++, so wie C++ im Wesentliche eine Erweiterung von C ist.
Daher "funktioniert" in C++/CLI alles, was in "reinem" C++ funktioniert, ebenfalls - bloß gilt das nicht in die Umgekehrte Richtung, weil in "reinem" C++ all die .NET -spezifischen Dinge fehlen.
So, eine Möglichkeit, wie man zur Laufzeit das Verzeichnis herausfinden kann, wo sich Deine EXE-Datei befindet hatte ich ja schon erwähnt:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx
Das kann dann, zum Beispiel, wie folgt aussehen:
#include <Windows.h>
using namespace System;
System::String^ getInstallPath(void)
{
wchar_t fileName[1024];
const DWORD ret = GetModuleFileNameW(NULL, fileName, 1024);
if((ret > 0) && (ret < 1024))
{
//Replace forward-slashes with back-slashes
while(wchar_t *const slash = wcschr(fileName, L'/'))
{
*slash = L'\\';
}
//Cut off the file part from module path
if(wchar_t *const lastDelimiter = wcsrchr(fileName, L'\\'))
{
*lastDelimiter = L'\0';
}
return gcnew System::String(fileName);
}
return nullptr;
}
int main(array<System::String ^> ^args)
{
System::String ^installPath = getInstallPath();
if(installPath != nullptr)
{
Console::WriteLine(L"My installation directory is:");
Console::WriteLine(installPath);
}
else
{
Console::WriteLine(L"Something went wrong :-(");
}
return 0;
}