Если вопросы актуальны вот ответы:
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.