Afin de comprendre le méchanisme des plugins, nous allons nous baser sur un exemple simple : Afficher un pop-up à l'écran lors de la réception d'un appel.
Ce pop-up utilise net send pour l'affichage.

Création du projet

Grâce à votre compilateur et votre IDE préférés, créer un projet vide de librairie dynamique sous windows. Deux fichiers sont nécessaires, le premier que nous nommerons ModemComNetSend.h et le second ModemComNetSend.cpp.

Fichier .h

ModemComNetSend.h contient l'implémentation des fonctions définies par le SDK (IModem.h).
Tout d'abord, hériter de IModem.h :

#include "IModem.h"
Ensuite, définir une classe héritant de IModem, et définissant les fonctions de cette dernière classe :

class CModemComNetSend : public IModem
{
public:
	CModemComNetSend();
	virtual ~CModemComNetSend();

	void getName(char* szName);
	void init(const char* szPluginsDir);
	bool putData(char* szDate, char* szTime, char* szNumber, char* szName);
	void* getPropertyPage();
	void exit();
};
Enfin, exporter la fonction de création du constructeur :

extern "C" __declspec(dllexport)
IModem* createModemComPluginImpl()
{
	return new CModemComNetSend();
}

Fichier .cpp

Le fichier ModemComNetSend.cpp n'est pas plus compliqué, il faut tout d'abord inclure le fichier .h

#include "ModemComNetSend.h"
Ensuite, implémenter les fonctions intéressantes, ici, seules deux fonctions nous intéressent :

CModemComNetSend::CModemComNetSend()
{
}

CModemComNetSend::~CModemComNetSend()
{
}

void CModemComNetSend::getName(char* szName)
{
	sprintf(szName, "ModemComNetSend");
}

void CModemComNetSend::init(const char* szPluginsDir)
{
}

bool CModemComNetSend::putData(char* szDate, char* szTime, char* szNumber, char* szName)
{
	char _szMsg[256];
	sprintf(_szMsg, "send * [Le:%s]\n[A:%s]\n[Num:%s]\n[Nom:%s]", szDate, szTime, szNumber, szName);
	ShellExecute(NULL, "open", "net.exe", _szMsg, "", SW_HIDE);
	return true;
}

void* CModemComNetSend::getPropertyPage()
{
	return 0;
}

void CModemComNetSend::exit()
{
}