Hej! Musze jakoś wykryć czy program uruchamiany jest z terminala czy "lokalnie".
No i można to zrobić badając czy jest zmienna środowiskowa CLIENTNAME.
Napisałem taką funkcję, która sprawdza czy jest zadana zmienna, ale coś nie działa :/ Zawsze pokazuje, że nie ma takiej zmiennej, na Windows 2008 Server jest taka zmienna na pewno (w konsoli echo %CLIENTNAME% pokazuje nazwę komputera)...
Kod funkcji :
bool SprawdzCzyJestZmiennaSrodowiskowa(LPCTSTR lpNazwaZmiennej)
{
DWORD dwRet, dwErr;
LPTSTR pszOldVal;
pszOldVal = (LPTSTR) malloc(4096*sizeof(TCHAR));
dwRet = GetEnvironmentVariable(lpNazwaZmiennej, pszOldVal, 4096);
pszOldVal = (LPTSTR) malloc(4096*sizeof(TCHAR));
if(pszOldVal == NULL)
{
MessageBox(NULL, TEXT("Brak pamięci przy pobieraniu zmiennej środowiskowej! "), TEXT("Bład"), MB_OK | MB_ICONERROR);
return FALSE;
}
if(dwRet==0)
{
dwErr = GetLastError();
if( ERROR_ENVVAR_NOT_FOUND == dwErr )
{
free(pszOldVal);
return false;
}
else
{
free(pszOldVal);
return true;
}
}
return false;
}
Wywołanie funkcji :
bool bCzyProgramJestWTerminalu;
bCzyProgramJestWTerminalu = SprawdzCzyJestZmiennaSrodowiskowa(TEXT("CLIENTNAME"));
No i zawsze jest false, czyli że nie ma takiej zmiennej, nawet jak jest...A może jest inna lepsza metoda na sprawdzenie, czy program działa w terminalu czy nie ?
Z góry dzięki za pomoc....