Delphi - Gyors levélküldés

forráskód letöltése
Készítünk egy példaprogramot, amely elindítása után a háttérben fut, és nem jelenik meg a tálcán sem. Mindössze egy kis ikon jelzi az óra mellett, hogy az alkalmazás fut. A program segítségével a CTRL+SHIFT+F1-F11 gombokhoz különböző e-mail címeket rendelhetünk. A megfelelő billentyűkombináció megnyomásakor a program elindítja az Outlook új üzenet ablakát, és a címzett mezőbe beírja a beállított e-mail címet.
A uses listában fel kell sorolnunk a ShellAPI, IniFiles és COMOBJ unitok neveit. Ezekre a későbbiekben szükségünk lesz.
Ahhoz, hogy a CTRL+SHIFT+F1-F11 billentyűkombinációkat ismerje a Windows, a Form OnCreate eseményében regisztrálnunk kell ezeket a kombinációkat.
for i:=112 to 123 do
  RegisterHotKey(Handle,i,MOD_CONTROL+MOD_SHIFT,i);
Az egyes kombinációkat megadhatjuk egyesével is, de mivel az F1-F12 gombok kódjai egymás után helyezkednek el, és az F1 kódja 112, egy for ciklus segítségével regisztrálhatjuk a rendszerben a billentyűkombinációkat.
A RegisterHotKey első paramétere a Form azonosítója. A második paraméterben egy számot kell megadnunk, amely a továbbiakban a billentyűkombinációt azonosítani fogja. A harmadik paraméterben kell megadnunk a használandó módosító billentyűket (CTRL és SHIFT). Végül a negyedik paraméterbe kerül a billentyű kódja.
Az F1-F11 billentyűkhöz e-mail címeket rendelünk, az F12 billentyű lenyomásakor kilépünk a programból.
A regisztrált billentyűkombinációkat a Form OnDestroy metódusában szüntetjük meg, az UnRegisterHotKey, API függvénnyel.
for i:=112 to 123 do
  UnRegisterHotKey(Form1.Handle,i);
A Form OnCreate eseményében kell gondoskodnunk arról, hogy alkalmazásunk ne a tálcán jelenjen meg, hanem csak egy jelzőikonja legyen az óra mellett.
Az óra mellé a Shell_NotifyIcon függvény segítségével helyezhetünk el és törölhetünk egy saját ikont.
Shell_NotifyIcon(NIM_ADD,@FIconData);
A fenti függvényhívás egy ikon létrehozására szolgál. Ha az első paraméterben NIM_DELETE-et adunk meg, akkor a függvény törli az ikont.
Azt hogy az ikon ilyen képpel és tulajdonságokkal jelenjen meg, a második paraméterben adhatjuk meg, egy TNotifyIconData típusú változó segítségével.
Gondoskodnunk kell arról is, hogy alkalmazásunk ikonja ne jelenjen meg a tálcán, ezt az alábbi függvényhívás segítségével érhetjük el.
SetWindowLong(Application.Handle, GWL_EXSTYLE,GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
Azt, hogy melyik billentyűhöz milyen e-mail cím tartozzon, az Address.ini fájlban állíthatjuk be, a fájlban szereplő kulcsok segítségével.
F1=animare@animare.hu
F2=''
Az ini állomány tartalmát a Form OnCreate eseményében olvassuk be, az FAddresses tömbbe. A tömb 11 sztring elemet tárol, a 11 gombnak megfelelően.
Ahhoz, hogy alkalmazásunk megkapja a HotKey lenyomásakor keletkező üzenetet az operációs rendszertől, létre kell hoznunk a következő függvényt.
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
A függvény belsejében kell megírnunk azokat az eseményeket, amelyeknek forróbillentyűink lenyomásakor kell futni.
A függvény akkor kerül meghívásra, amikor egy regisztrált HotKey lenyomásra kerül. A lenyomott kombináció értékét az alábbi módon kérdezhetjük le.
if Msg.HotKey in [112..122] then begin
A fenti vizsgálatnál azokat a kódokat kérdezzük le, amelyeket mi rendeltünk hozzá az egyes kombinációkhoz.
Az Outlook programot és objektumait OleVariant típusú változók segítségével érhetjük el.
A háttérben meg kell nyitnunk az Outlook-ot.
Outlook:=CreateOleObject('Outlook.Application');
Meg kell nyitnunk az új levél küldése ablakot.
MailItem:=Outlook.CreateItem(olMailItem);
Be kell állítanunk a billentyűkombinációhoz tartozó címet.
MailItem.To:=FAddresses[Msg.HotKey-111];
Végül meg kell jelenítenünk az új levél küldése ablakot.
MailItem.Display;