Díl šestý - ovládáme zvuky
Napsal: 15 lis 2008 17:51
Po delším čase přicházím s dalším dílem do našeho seriálu. Dnes se budeme věnovat ovládání a přehrávání zvuků.
QIP Infium nám umožnuje jak přehrávání vlastních zvuků tak zvuků externích ve formátu wav.
Pokud tedy chceme přehrát zvuk pošleme zprávu PM_PLUGIN_PLAY_WAV_SND
Parametrem WParam ve zprávě určujeme jaký zvuk se bude přehrávat.
Parametrem LParam předáme cestu k externímu wav souboru
Parametrem NParam předáme informaci jesli chceme přehrát zvuk vždy nebo podle nastavení Infia.
True - přehraje zvuk vždy
False - pokud to QIP Infium umožní. Zvuky mohou být uživatelem vypnuté
Celá zpráva pak bude vypadat takto:
Přehrání vlastního externího zvuku
Přehrání interních zvuků
Další zprávou kterou můžeme poslat je zjištění stavu. Tedy jestli jsou zvuky zapnuty nebo vypnuty.
Do kódu je také přidán příklad programového vypnutí nebo zapnutí zvuků.
Poslední možností kterou můžeme v pluginu využít je reakce na změnu zvuku uživatelem.
Tuto zprávu nám Infium pošle a můžete ji zachytit v proceduře TQipPlugin.OnQipMessage
Příklad těla procedury která vyhodnotí příchozí zprávu s výsledkem nastavení zvuků:
Takto můžeme tedy ovládat a přehrávat zvuky. Dnešní díl budete programovat sami a bude bez příkladu ke stažení. V příštím dílu vše napravím a kód doplní.
Také se budeme věnovat zjištení informací o otevřeném kontaktu. Budeme tedy načítat detaily kontaktu.
QIP Infium nám umožnuje jak přehrávání vlastních zvuků tak zvuků externích ve formátu wav.
Pokud tedy chceme přehrát zvuk pošleme zprávu PM_PLUGIN_PLAY_WAV_SND
Parametrem WParam ve zprávě určujeme jaký zvuk se bude přehrávat.
Kód: Vybrat vše
Vlastní externí zvuk = 0;
QIP_SND_ID_STARTUP = 1;
QIP_SND_ID_INC_MSG = 2;
QIP_SND_ID_MSG_SENT = 3;
QIP_SND_ID_ONLINE_ALERT = 4;
QIP_SND_ID_STATUS_NOTIFY = 5;
QIP_SND_ID_TRAY_NOTIFY = 6;
QIP_SND_ID_AUTH_REQUEST = 7;
QIP_SND_ID_AUTH_DENIED = 8;
QIP_SND_ID_AUTH_GRANTED = 9;
QIP_SND_ID_ADDED = 10;
QIP_SND_ID_INC_FILE = 11;
QIP_SND_ID_FT_COMPLETE = 12;
QIP_SND_ID_SERVER_MSG = 13;
QIP_SND_ID_EMAIL_MSG = 14;
Parametrem NParam předáme informaci jesli chceme přehrát zvuk vždy nebo podle nastavení Infia.
True - přehraje zvuk vždy
False - pokud to QIP Infium umožní. Zvuky mohou být uživatelem vypnuté
Celá zpráva pak bude vypadat takto:
Přehrání vlastního externího zvuku
Kód: Vybrat vše
PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;
//Nastavíme 0 protoze budeme prehravat vlastni zvuk
PlugMsg1.WParam := 0;
//Zadame cestu k nasemu souboru
wPath := IncludeTrailingPathDelimiter(ExtractFilePath(FDllPath)) + 'example.wav';
//Cestu predame do parametru zpravy
PlugMsg1.LParam := LongInt(PWideChar(wPath));
//Zvuk budeme prehravat vzdy i pokud v Infiu zvuk vypnuty
PlugMsg1.NParam := Byte(True);
//Odesleme zpravu
PlugMsg1.DllHandle := FDllHandle;
FPluginSvc.OnPluginMessage(PlugMsg1);
Kód: Vybrat vše
PlugMsg1.Msg := PM_PLUGIN_PLAY_WAV_SND;
//Nastavíme ID interniho zvuku který chceme prehrat
PlugMsg1.WParam := QIP_SND_ID_INC_MSG;
//Prevezmeme nastaveni zvuku
PlugMsg1.NParam := Byte(False);
//Odesleme zpravu
PlugMsg1.DllHandle := FDllHandle;
FPluginSvc.OnPluginMessage(PlugMsg1);
Do kódu je také přidán příklad programového vypnutí nebo zapnutí zvuků.
Kód: Vybrat vše
{Zjisteni zapnuti/vypnuti zvuku}
PlugMsg.Msg := PM_PLUGIN_SOUND_GET;
PlugMsg.DllHandle := FPluginInfo.DllHandle;
FPluginSvc.OnPluginMessage(PlugMsg);
{Vyhodnoceni stavu - pokud jsou zvuky zapnuty provedeme vypnutí }
if Boolean(PlugMsg.WParam) then
begin
PlugMsg.Msg := PM_PLUGIN_SOUND_SET;
PlugMsg.WParam := Integer(False); // False - vypne zvuky, True - zapne zvuky
PlugMsg.DllHandle := FPluginInfo.DllHandle;
FPluginSvc.OnPluginMessage(PlugMsg);
end;
Tuto zprávu nám Infium pošle a můžete ji zachytit v proceduře TQipPlugin.OnQipMessage
Kód: Vybrat vše
PM_PLUGIN_SOUND_CHANGED : QipSoundChanged(PlugMsg);
Kód: Vybrat vše
procedure TQipPlugin.QipSoundChanged(PlugMsg: TPluginMessage);
var str : string;
begin
if Boolean(PlugMsg.WParam) then str := 'Zvuky zapnuty' else str := 'Zvuky vypnuty';
end;
Také se budeme věnovat zjištení informací o otevřeném kontaktu. Budeme tedy načítat detaily kontaktu.