Ścieżka do pliku EXE

Arthi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Witam! Potrzebuję pomocy.

Otóż próbuję uruchomić plik [.exe] za pomocą polecenia:

Kopiuj
ShellExecute(Handle, 'open', 'program.exe', nil, 'C:\', 1);
 

Nie mogę skorzystać z WinExec bo nie korzystam z Delphi.

Podobnie ma się sprawa z atrybutem wyświetlania - zamiast SW_SHOWNORMAL jest 1 ponieważ tak ma być.

Ale problem mam w tym, że aby otworzyć plik exe muszę podać jego pełną ścieżkę. A jeśli ktoś trzyma go gdzie indziej niż ja to już się nie uruchomi. Normalnie jeśli plik znajduje się w katalogu głównym programu, wystarczy podać nazwę, ale widać w plikach exe jest inaczej. Próbowałem skojarzyć go ze zmienną plikową funkcją assignfile, ale to nie daje efektu. Jeśli ktoś zna sposób na to, jak ustalić położenie programu na dysku, by można było dodać je w odpowiednie miejsce w tym poleceniu to byłbym wdzięczny, gdyby się tym podzielił.

Z góry dziękuję!

deus
  • Rejestracja: dni
  • Ostatnio: dni
0
Arthi napisał(a)

Nie mogę skorzystać z WinExec bo nie korzystam z Delphi.

...które z Delphi nie ma NIC wspólnego bo to stara funkcja WINAPI.

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
1
Arthi napisał(a)

jak ustalić położenie programu na dysku

Wg mnie jedyna możliwość to po prostu przeszukać cały dysk za pomocą FindFirst/FindNext (wszystkie katalogi i podkatalogi).
Po znalezieniu, zapisać ścieżkę do programu w jakimś pliku tekstowym żeby nie trzeba było za każdym razem szukać

Arthi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

chodzi o to, żeby po przeniesieniu też działało, więc chyba trzeba by powtarzać wyszukiwanie przy każdym uruchomieniu. Czy w takim razie mógłby ktoś podać przykład wykorzystania powyżej wspomnianej metody, ewentualnie z małym komentarzem/objaśnieniem???

Z góry THX

Arthi
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

OK, znalazłem!!!

do zmiennej typu string trzeba przypisać:

Kopiuj
ExtractFilePath(Application.ExeName)+'Program1.exe' //czyli glowny katalog programu+'nazwa pliku.exe'

a następnie wyrazić to

Kopiuj
ShellExecute(Handle, 'open', PChar(zmienna do ktorej przypisywaliśmy) , nil, 'C:\', 1);

Sorki, za klopot.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.