Výsledky 1 až 5 z 5

Téma: Startup v Delphi

  1. #1
    Junior Member
    Založen
    18.01.2005
    Bydliště
    SR, Nove Zamky
    Příspěvky
    31
    Vliv
    0

    Standardní Startup v Delphi

    vopred chcem podakovat jedikovy za prispevok k mojmu orvemu prblemu, =>jedik, pomohlo az na mensi rozdiel, ze komp ani nevyplo, ani neresetlo, ale iba Logofflo, neviem ci je Xp OS alebo cim...ale aj tak velky THX. A mam tu este jeden problem, ako sa da spravit v delphi, ze ked spustim projekt(exac) tak sa narve do startupu, iste to poznate hlavne z Kalendara, raz sa tam hodi a pri kazdom starte sa spusti n apar sekund... ma napadla iba jedna vec ale moc jej neverim, to ze je mozne ze sa len v kode zapise nejaky Path (cesta) resp. path kt. smeruje k startupu napr. :c:\Documents and Settings\Administrator\Start Menu\Programs\Startup a ze tam vytvori link toho exaca. Je mozne ze sa to da urobit takto? a ak ano tak nejako upresnit... vopred dik

  2. #2

    Standardní

    Ja myslim ze nejlepsi je si to zapsat do registru.

    HKLM\Software\Microsoft\Windows\CurrentVersion\Run

    A tam pridas novou retezcovou promennou a hodnota je cesta k tvemu programu...
    GigaByte GA-M55plus-S3G --- A64 3200+ @ 24oo ~ 1,375V BOX --- 2x512 Geil 667 CL4 @ 980 CL5 --- WD2500KS --- Acer AL1721ms --- 1/1 MBit/s via WiFi
    Blog

    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 aneb jeste ze ty "ochrany" programujou rozumny lidi :]

  3. #3

    Standardní

    Hoj,
    k tvojemu 1. problému
    sice jsem moc nestudoval co je na fóru, ale předpokládam, že tvuj program nemá privilegia vypnout pc, takže je potřebuješ změnit (níže - návod jsem našel kdysi někde na živě)

    k 2. problému je fakt nejlepší zadat hodnotu do registrů, nejlepší je na to použít komponentu minireg, kterou sem kdysi našel, nemá sice takové možnosti jako TRegistry, ale zabere v programu MNOHEM míň místa a líp se ovládá (hodil jsem ji zatim na muj web: http://www.smitka.org/minireg.pas)

    procedurka, která by to všechno měla udělat:
    Kód:
    procedure down();
    var
    hToken, hProcess: THandle;
    tp, prev_tp: TTokenPrivileges;
    Len, Flags: DWORD;
    
    begin
    //zápis do registrů pomocí miniregu
    minireg.RegSetString(HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Run\mujprog','c:\project1.exe')
    //změna privilegií
    if Win32Platform = VER_PLATFORM_WIN32_NT then
    begin
    hProcess := OpenProcess(PROCESS_ALL_ACCESS, True, GetCurrentProcessID);
    try
    if not OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then Exit;
    finally
    CloseHandle(hProcess);
    end;
    try
    if not LookupPrivilegeValue('', 'SeShutdownPrivilege',tp.Privileges[0].Luid) then Exit;
    tp.PrivilegeCount := 1;
    tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if not AdjustTokenPrivileges(hToken, False, tp, SizeOf(prev_tp),prev_tp, Len) then Exit;
    finally
    CloseHandle(hToken);
    end;
    end;
    //privilegia změněna, pokud bylo potřeba
    //reboot
    ExitWindowsEx(EWX_REBOOT, 0);
    end;
    Snad ti to pomůže

  4. #4
    Junior Member
    Založen
    18.01.2005
    Bydliště
    SR, Nove Zamky
    Příspěvky
    31
    Vliv
    0

    Standardní

    nj, ide to s tym co si napisal, s mensimi upravami to bude presne to co potrebujem
    thx all kto poradil...

  5. #5

    Standardní

    Jedna z jinech diskuzí mi připoměla, že restart jde ještě jednodušejc pomocí příkazovýho řádku, to se pak nemusí měnit privilegia procesu
    Kód:
    shellexecute(0,nil,'shutdown','-r',nil,0);
    Jen pro pořádek, aby to tu bylo komplet...

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •