Jak spawdzić czy pogram został uruchomiony z autostartu?

0

Dokładnie chodzi o kawałek kodu który w OnCreate Formy sprawdziłby czy uruchomienie nastąpiło z autostartu

0

do autostartu dopisujesz jako parametr "autorun" np i potem sprawdzasz czy
ParamStr(1)='autorun'. user może dopisać jako parametr "autorun" i wtedy program pomyśli że został uruchomiony z autorunu ale nie ma chyba innego sposobu :(

0

Ewentualnie można sprawdzić, czy w katalogu 'autostart' jest skrót do naszego programu i czas działania Windows nie jest większy niż powiedzmy minuta.

Oczywiście ten (ani żaden) inny sposób nie da odpowiedzi na zadane pytanie w 100%, ale można założyć, że margines błędu będzie mały.

0

A może sprawdzić czy program jest w autostarcie i po prostu zapisać fakt uruchomienia np 'byl uruchomiony' a przy przy zamykaniu zapisać 'zero uruchomien'. Coś takiego miał chyba na myśli Adamo. Ale jak się zawiesi albo prąd wyłączą to na nic. Chyba trzeba będzie sprawdzić na kilka sposobów.

0

Poprawcie mnie jeżeli się mylę ale rozwiązanie jest bardzo proste i opiera się się fakcie iż podczas startu systemu GetCurrentDir daje scieżkę katalogu Windowsa:

  1. Zapisać w rejestrze podczas instalacji programu scieżkę naszego programu - prog_path
  2. Zakładamy, że nikt nie będzie instalował programu w katalogu systemowym (to jest możliwe? - jeżeli jest to zabronić takiej możliwości)
  3. w OnCreate Formy:
    if GetCurrentDir<>prog_path then 'program jest uruchamiany z autostartu'
0

Poprawcie mnie jeżeli się mylę ale rozwiązanie jest bardzo proste i opiera się się fakcie iż podczas startu systemu GetCurrentDir daje scieżkę katalogu Windowsa:

  1. Zapisać w rejestrze podczas instalacji programu scieżkę naszego programu - prog_path
  2. Zakładamy, że nikt nie będzie instalował programu w katalogu systemowym (to jest możliwe? - jeżeli jest to zabronić takiej możliwości)
  3. w OnCreate Formy:
    if GetCurrentDir<>prog_path then 'program jest uruchamiany z autostartu'

zauwazyles ze skroty maja podana sciezke gdzie program ma zaczac. i ta sciezka zazwyczaj jest taka sama jak sciazka do programu.

0

ale jeśli program jest uruchamiany z rejestru to nie podaje się ścieżki zaczęcia programu więc możliwe że startuje pod windowsem, ale to żadne zabezpiecznie bo każdy może uruchomić program tak żeby ścieżka GetCurrentDir wskazywała Windows.

0

Startuje pod Windowsem - sprawdzałem. Tylko nie bardzo rozumiem jak uruchomić program żeby GetCurrentDir wskazywał katalog Windowsa?

0

normalnie, np: tworzysz skrót i w "folder roboczy" wpisujesz "c:\windows" albo wchodzisz "command" w konsolę dosa idziesz "cd" do windows'a i wpisujesz całą ścieżkę do programu np: "c:\progra~1\borland\delphi7\projects\project1.exe" i też będzie CurrentDir na windows'a

0

Ludzie, sprawdzajcie czasem swoje rady! Wstawiłem w OnShow Formy ShowMessage(GetCurrentDir) - to była zawsze ścieżka programu bez względu na to jak i skąd odpalony został program (pomijając autostart) !!!

0

to ty sprawdzaj co piszesz bo teraz sprawdziłem to (chociaż i tak byłem pewny że jest tak jak mówiłem) i się jakoś nie zdziwiłem kiedy w obu przypadkach podanych wcześniej otrzymałem "c:\windows"

0

Jeżeli masz rację, to przepraszam, ale co tu jest w końcu grane? Przecież nie jestem ślepy, może to od Windowsa zależy - ja sprawdzałem pod Win98

Chylę czoło i przepraszam, tak się zasugerowałem tym rozwiązaniem, że zapomniałem, że wstawiłem u siebie SetCurrentDir(sciezka_mojego_prog) a testowalem na tym właśnie programie

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