K-Meleon
#include "stdafx.h"
#define KMELEON_PLUGIN_EXPORTS
#include "kmeleon_plugin.h"
BOOL APIENTRY DllMain (
HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved) {
return TRUE;
}
LRESULT CALLBACK WndProc (
HWND hWnd, UINT message,
WPARAM wParam,
LPARAM lParam);
void * KMeleonWndProc;
int Init();
void Create(HWND parent);
void Config(HWND parent);
void Quit();
void DoMenu(HMENU menu, char *param);
long DoMessage(const char *to, const char *from, const char *subject, long data1, long data2);
void DoRebar(HWND rebarWnd);
int DoAccel(char *param);
kmeleonPlugin kPlugin = {
KMEL_PLUGIN_VER,
"A Plugin That Does Nothing",
DoMessage
};
long DoMessage(const char *to, const char *from, const char *subject, long data1, long data2)
{
if (to[0] == '*' || stricmp(to, kPlugin.dllname) == 0) {
if (stricmp(subject, "Init") == 0) {
Init();
}
else if (stricmp(subject, "Create") == 0) {
Create((HWND)data1);
}
else if (stricmp(subject, "Config") == 0) {
Config((HWND)data1);
}
else if (stricmp(subject, "Quit") == 0) {
Quit();
}
else if (stricmp(subject, "DoMenu") == 0) {
DoMenu((HMENU)data1, (char *)data2);
}
else if (stricmp(subject, "DoRebar") == 0) {
DoRebar((HWND)data1);
}
else if (stricmp(subject, "DoAccel") == 0) {
*(int *)data2 = DoAccel((char *)data1);
}
else return 0;
return 1;
}
return 0;
}
int Init(){
return true;
}
void Create(HWND parent){
KMeleonWndProc = (void *) GetWindowLong(parent, GWL_WNDPROC);
SetWindowLong(parent, GWL_WNDPROC, (LONG)WndProc);
}
void Config(HWND parent){
MessageBox(parent, "This plugin does absolutely nothing", "Nothing", 0);
}
void Quit(){
}
void DoMenu(HMENU menu, char *param){
}
int DoAccel(char *param) {
return 0;
}
void DoRebar(HWND rebarWnd){
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
if (message == WM_COMMAND){
WORD command = LOWORD(wParam);
}
return CallWindowProc((WNDPROC)KMeleonWndProc, hWnd, message, wParam, lParam);
}
extern "C" {
KMELEON_PLUGIN kmeleonPlugin *GetKmeleonPlugin() {
return &kPlugin;
}
KMELEON_PLUGIN int DrawBitmap(DRAWITEMSTRUCT *dis) {
return 14; // 14 = icon width
}
}