Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать, чтобы программа загружалась при загрузке Винды?  (Прочитано 12198 раз)
0 Пользователей и 1 Гость смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 23-06-2005 20:14 » 

1. Как сделать, чтобы программа загружалась при загрузке Винды?
2. Как при нажатии на горячую клавишу прога сворачивалась в трей, а при повторном нажатии разворачивалась?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 23-06-2005 20:24 » 

1. Один из путей. Линк твоей проги пропиши в Statrt -> Programs -> StartUp
2. Сделать Хук на клавиатуру. Отлавливать твои горячие клавиши. И через Шеловские функции открывать в трэе иконку и прятать окно, или закрывать иконку и открывать окно.
« Последнее редактирование: 23-06-2005 20:26 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 23-06-2005 20:38 » 

1. Этому есть масса способов. Например:
а) через  меню Пуск->Программы->Автозагрузка
б) через файл Win.ini ключи  load=, run= (Windows 95-98)
в) через реестр HKLM\Software\Microsoft\Windows\Current version\Run (RunOnse, RunOnseEx (RunServices для W95-98))
г) -"-  HKCU\+тоже самое что и в "в)"

2. Если не применять специальных компонентов типа RxTrayIcon и т.п. то "Shell_NotifyIcon"  + зарегистрированный в системе HotKey (акселератор) 
« Последнее редактирование: 23-06-2005 20:47 от Oldy » Записан

С уважением, Oldy.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 24-06-2005 09:52 » 

По поводу первго вопроса. Вчера одногруппник говрил, что знает 8 способов закинуть прогу в автозагрузку (в книге в какой-то вычитал), но самые простые из них те, что перечислил Oldy.
Один помню, связан с тем, чтобы прога загружалась, когда загружается Explorer, где -то что-то приписать надо Улыбаюсь.
Записан

ещё один вопрос ...
zubr
Гость
« Ответ #4 : 12-07-2005 16:38 » 

Если вопросы актуальны вот ответы:
Цитата
1. Как сделать, чтобы программа загружалась при загрузке Винды?
Кроме тех способов, что предлагались выше есть более "хитрые" и малоизвестные способы.
1. Для NT-систем:
  HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon в параметр Shell пропишите путь к программе
Для Win9X:
В файле System.ini в ключ [boot] в параметр Shell пропишите путь к программе.
2. Способ как запустить .Dll в автозагрузке для NT-систем:
создать ключ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\new]-здесь вместо new можно назначить любое имя
в этом ключе создать параметры:
"Asynchronous"=dword:00000000
"Impersonate"=dword:00000000
"DllName"="OurDllName.dll"- здесь OurDllName имя вашей .Dll
"StartShell"="StartShell_" - здесь имя процедуры в .Dll, которая должна выполняться в автозапуске
з. Способ как запустить .Dll при загрузке модуля user32.dll (для NT-систем):
в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows создаете параметр AppInit_DLLs, тип REG_SZ имя вашей dll-ки.
Имейте ввиду, что с этим способом надо быть предельно осторожным, иначе придется переустанавливать систему, или из Dos или другой системы (если на компе их несколько), удалить из системной папки вашу .Dll.
При использовании 2 и 3 способов программы типа AdAware вашу программу как шпионский модуль не определят.
Цитата
Как при нажатии на горячую клавишу прога сворачивалась в трей, а при повторном нажатии разворачивалась?
Не нужно никаких клавиатурных Hook-ов, можно сделать гораздо проще:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, 555, 0, 68);
end;

procedure TForm1.WMHOTKEY(var sc:TWMHOTKEY);
begin
 //ваш код
end;

Функцию RegisterHotKey расписывать не буду, посмотрите в MSDN.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #5 : 12-07-2005 20:07 » 

Спасибо
Записан
Nilbog
Гость
« Ответ #6 : 15-08-2005 09:52 » new

вот хороший пример автозапусkа нужная штука

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  Reg := nil;
  try
    reg := TRegistry.Create;
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.LazyWrite := false;
    reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',
      false);
    reg.WriteString('My App', Application.ExeName);
    reg.CloseKey;
    reg.free;
  except
    if Assigned(Reg) then Reg.Free;

  end;
end;
теперь прога будет вылетать при каждой загрузке ОС
а для того что бы снять автозапуск запускаеш Reg Organizer вкладка авто загрузка и выбираеш 'My App' и чистиш и все опять по старому

« Последнее редактирование: 03-12-2007 20:13 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines