Sprawdzanie czy program jest w danym miejscu . C++

0

Witam !
Piszę program który ma sprawdzić swoją ścieżkę, a następnie jeżeli jest w danym miejscu to wykonać dane czynności a jeżeli nie to coś innego.
Jak na razie próbowałem pobrać lokalizację przez

::GetModuleFileNameA( NULL, miejsce, MAX_PATH );

i sprawdzić if'em, ale niestety nie udało się .
Czy ma ktoś jakiś pomysł.
Z góry dziękuję za pomoc :)

0

Chyba ważne to sprawdzenie skoro dwa razy w tagach je dałeś ;)

Nie możesz wziąć pierwszego argumentu z main?

int main( int argc, char *argv[] ) {
	
	cout<< argv[0];
	
	return 0;
}
0

Znaczy.. moja sprawdzanie wygląda tak :

   
char miejsce[ MAX_PATH ];

::GetModuleFileNameA( NULL, miejsce, MAX_PATH );

if (miejsce == "F:\Jakaś\Lokalizacja")
{
   //coś robi
}
else
{
   //coś innego robi
}

Ale niestety to nie działa :P
Zaznaczam że nowy w temacie C++ :D

0

Teraz porównujesz dwa wskaźniki. Do tego jeden jest globalny, więc to nie ma prawa zadziałać. Porównać całe napisy. Czyli tworzysz z któregoś std::string i porównujesz z drugim

char miejsce[ MAX_PATH ];
 
::GetModuleFileNameA( NULL, miejsce, MAX_PATH );
 
if ( miejsce == std::string( "F:\Jakaś\Lokalizacja" ) )
{
   //coś robi
}
else
{
   //coś innego robi
}

+=

Lepiej używaj slashy zamiast backslashy. Czyli

char miejsce[ MAX_PATH ];
 
::GetModuleFileNameA( NULL, miejsce, MAX_PATH );
 
if ( miejsce == std::string( "F:/Jakaś/Lokalizacja" ) )
{
   //coś robi
}
else
{
   //coś innego robi
}

Jeżeli mocno lubisz backslashe to

 
if ( miejsce == std::string( "F:\\Jakaś\\Lokalizacja" ) )
0

Wielkie dzięki ! :)

Ostatecznie zadziałała tylko ta opcja :D :

char miejsce[ MAX_PATH ];
 
::GetModuleFileNameA( NULL, miejsce, MAX_PATH );
 
if (miejsce == std::string ("F:\\Jakaś\\Lokalizacja"))
{
   //coś robi
}
else
{
   //coś innego robi
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1