Ĺadny brzuch
Witam :)
mam program, a wprogramie procedure
CopyFile(Plik Aplikacji, Autostart, False);
no i pliki kopiuje ale jak ma wkopiować do autostartu robią się schody.
1. W miejsce Plik Aplikacji nie moge wpisac Application.ExeName
2. Niewiem co wpisać zamiast Autostart aby plik był kopiowany do autostartu.
Jeszcze taka uwaga, że to nei ma być wpis w rejestrze tylko skopiowana aplikacja do katalogu ..\Menu Start\Programy\Autostart\
gdyż konta gości i uzytkowniików nie mają praw do zmian w rejestrze
Użytkownik DJ Mentos edytował ten post 15 styczeń 2007, 16:58
1. Musisz zamienić String na PChar.
2. W miejsce autostartu powinieneś wpisać: 'C:\Documents and Settings\All Users\Menu Start\Programy\Autostart'
Wersja, którą podał Capllini zadziała tylko dla polskiej wersji systemu WindowsXP, zainstalowanej na dysku C:\ i dla wszystkich użytkowników.
Ja proponuję coś takiego:procedure TForm1.Button1Click(Sender: TObject); var reg:tregistry; sciezka:string; begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; //jest to raczej zbędne, ale napewno nie zaszkodzi reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\',false); sciezka:=reg.ReadString('StartUp'); reg.CloseKey; reg.Free; end; //i wtedy już kopiujesz: sciezka:=sciezka+'\nazwa_programu.exe'; CopyFile('nazwa_programu.exe', PCHAR(sciezka), False);(Do uses dodajesz Registry.)
Dzięki temu rozwiązaniu w zmiennej sciezka masz ścieżkę do folderu Autostart konkretnego użytkownika, lub dla wszystkich użytkowników: ... Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\',false); sciezka:=Reg.ReadString('Common StartUp'); ...Bez względu na literkę dysku, wersję językową systemu WindowsXP itp. Na innych systemach Windows to nie wiem, jak sprawa wygląda.
ps. Żeby po zmianie nazwy pliku z programem dalej działało, trzeba odczytać ze zmiennej Application.ExeName wszystkie znaki od końca aż do znaku '\' i dzięki temu uzyskamy nazwę tego pliku.
Użytkownik Bula i spula edytował ten post 15 styczeń 2007, 17:57
dzieki bula i spula, pomoglo. :)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
mam program, a wprogramie procedure
CopyFile(Plik Aplikacji, Autostart, False);
no i pliki kopiuje ale jak ma wkopiować do autostartu robią się schody.
1. W miejsce Plik Aplikacji nie moge wpisac Application.ExeName
2. Niewiem co wpisać zamiast Autostart aby plik był kopiowany do autostartu.
Jeszcze taka uwaga, że to nei ma być wpis w rejestrze tylko skopiowana aplikacja do katalogu ..\Menu Start\Programy\Autostart\
gdyż konta gości i uzytkowniików nie mają praw do zmian w rejestrze
Użytkownik DJ Mentos edytował ten post 15 styczeń 2007, 16:58
1. Musisz zamienić String na PChar.
2. W miejsce autostartu powinieneś wpisać: 'C:\Documents and Settings\All Users\Menu Start\Programy\Autostart'
Wersja, którą podał Capllini zadziała tylko dla polskiej wersji systemu WindowsXP, zainstalowanej na dysku C:\ i dla wszystkich użytkowników.
Ja proponuję coś takiego:procedure TForm1.Button1Click(Sender: TObject); var reg:tregistry; sciezka:string; begin reg:=tregistry.Create; reg.RootKey:=HKEY_CURRENT_USER; //jest to raczej zbędne, ale napewno nie zaszkodzi reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\',false); sciezka:=reg.ReadString('StartUp'); reg.CloseKey; reg.Free; end; //i wtedy już kopiujesz: sciezka:=sciezka+'\nazwa_programu.exe'; CopyFile('nazwa_programu.exe', PCHAR(sciezka), False);(Do uses dodajesz Registry.)
Dzięki temu rozwiązaniu w zmiennej sciezka masz ścieżkę do folderu Autostart konkretnego użytkownika, lub dla wszystkich użytkowników: ... Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\',false); sciezka:=Reg.ReadString('Common StartUp'); ...Bez względu na literkę dysku, wersję językową systemu WindowsXP itp. Na innych systemach Windows to nie wiem, jak sprawa wygląda.
ps. Żeby po zmianie nazwy pliku z programem dalej działało, trzeba odczytać ze zmiennej Application.ExeName wszystkie znaki od końca aż do znaku '\' i dzięki temu uzyskamy nazwę tego pliku.
Użytkownik Bula i spula edytował ten post 15 styczeń 2007, 17:57
dzieki bula i spula, pomoglo. :)