This page was last modified 11:17, 15 March 2008.
Создание Click Plug-in DLL
From Forum Nokia Wiki
| ID | Creation date | March 15, 2008 | |
| Platform | S60 3rd Edition | Tested on devices | Nokia 3250 |
| Category | Symbian C++ | Subcategory | Base/System |
| Keywords: RSoundPlugIn, CClickMaker, KEYCLICKPLUGIN |
Введение
Click Plug-in DLL - это системные библиотеки Symbian, позволяющие обрабатывать нажатия клавиш и стилуса. Основным назначением является воспроизведение короткого звукового сигнала, соответствующего нажатой клавише.
Click Plug-in DLL загружаются системным процессом EwSrv.exe, и поэтому должны иметь следующую модель возможностей: PowerMgmt, ProtServ, ReadDeviceData, WriteDeviceData. Click Plug-in DLL являются полиморфными библиотеками, содержащими класс, реализующий интерфейс CClickMaker, и должны находится в директории "\sys\bin\".
При включении устройства, Symbian загружает Click Plug-in DLL указанную после ключевого слова KEYCLICKPLUGIN в файле wsini.ini. В этом же файле использование Click Plug-in может быть запрещено ключевым словом KEYCLICKPLUGINFIXED, поэтому данный пример работает не на всех устройствах.
Для того, чтобы программно загрузить, изменить или выгрузить Click Plug-in DLL, приложение должно создать экземпляр клиента системного процесса RSoundPlugIn. Использование RSoundPlugIn::Load() и RSoundPlugIn::Unload() требует объявления WriteDeviceData в возможностях приложения-клиента.
RSoundPlugIn и CClickMaker объявлены в W32STD.H.
MMP файл Plug-in'а (часть)
TARGET MyClickerPlugin.dll TARGETTYPE DLL UID 0x10004F63 0xE057FBBA LIBRARY euser.lib ws32.lib CAPABILITY PowerMgmt ProtServ ReadDeviceData WriteDeviceData
Заголовочный файл Plug-in'а
#include <e32base.h> // CBase #include <e32std.h> // TBuf #include <W32CLICK.H> // CClickMaker class CMyClickerPlugin : public CClickMaker { public: CMyClickerPlugin(); IMPORT_C void KeyEvent(TEventCode aType, const TKeyEvent &aEvent); IMPORT_C void PointerEvent(const TPointerEvent &aEvent); IMPORT_C void OtherEvent(TInt aType, TAny *aParam=NULL); IMPORT_C TInt CommandReplyL(TInt aOpcode, TAny *aArgs); };
Первая функция полиморфной dll Plug-in'а
EXPORT_C CClickMaker* CreateClickMakerL() { return new (ELeave) CMyClickerPlugin; }
MMP файл клиента (часть)
LIBRARY ws32.lib
CAPABILITY WriteDeviceData
Получение информации о поддержке Click Sound Plug-in
RWsSession session; User::LeaveIfError(session.Connect()); SoundPlugIn = new RSoundPlugIn(session); TBool Is_Changeble; TBool Is_Loaded = SoundPlugIn->IsLoaded(Is_Changeble); if (Is_Loaded) { .. } else { .. } if (Is_Changeble) { .. } else { .. } SoundPlugIn.Close(); session.Close();
Загрузка Click Sound Plug-in
_LIT(KPluginDll,"MyClickerPlugin.dll"); SoundPlugIn->Load(KPluginDll());
Выгрузка Click Sound Plug-in
TInt err = SoundPlugIn->Unload();
Демонстрационный проект
Здесь вы можете скачать демонстрационный проект, создающий Click Sound Plug-in для воспроизведения сигнала частотой 1000 Герц и длительностью 0,25 секунды с помощью CMdaAudioToneUtility при нажатии любой клавиши. Для загрузки и выгрузки библиотеки, в проекте содержится GUI приложение-клиент. Image:ClickerSoundPlugIn3rd.zip
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| http Socket Client | tapanacharya | Symbian Networking & Messaging | 25 | 2005-06-11 23:05 |
| Creating Symbian DLL using VC++ 6.0 IDE | rushj | Symbian Tools & SDKs | 5 | 2005-08-05 11:00 |
| how to change the capability of DLL | krgvs | General Symbian C++ | 4 | 2008-03-12 14:17 |
| Camera Application Porting Problem | amitsingh18 | Symbian Media (Graphics & Sounds) | 4 | 2005-04-01 08:00 |
| Carbide and Nokia 6600 camera plug-in? | pollyp | Carbide.c++ and CodeWarrior Tools | 1 | 2007-10-17 00:32 |
