Join Now
Quality Rating:
  • Currently 5.0 / 5
(5.0 / 5 - 1 vote cast)
Expertise Level:
  • Currently 5.0 / 5
(5.0 / 5 - 1 vote cast)

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
 
Powered by MediaWiki