Про трей:
http://msdn.microsoft.com/en-us/library/aa969325.aspx (раздел Adding, Modifying, and Deleting Icons in the Status Area)
И по поводу обработки сообщений. Т.к. окон нет, то DispatchMessage бесполезен. Можно явно вызывать функцию обработки сообщений:
Код:
program MyApp;
uses Windows, Messages;
var
Msg: TMsg;
function MsgProc(Window: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
{ Здесь обработчики сообщений }
end;
begin
{ ... }
while GetMessage(Msg, 0, 0, 0) do
MsgProc(Msg.hwnd, Msg.message, Msg.wparam, Msg.lparam);
{ ... }
end.
Должно работать. Правда, непонятно, как возвращать значение из "оконной" функции