Executing Code as a Control Panel Item through an Exported Cplapplet Function

Polaris

Member
Staff member
Posts
28
Likes
3
Points
8
Joined
Jan, 2023
3 YEARS
3 YEARS OF SERVICE

Executing Code as a Control Panel Item through an Exported Cplapplet Function​


This is a quick note that shows how to execute code in a .cpl file, which is a regular DLL file representing a Control Panel item.


Code
Code:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <Windows.h>

//Cplapplet
extern "C" __declspec(dllexport) LONG Cplapplet(
    HWND hwndCpl,
    UINT msg,
    LPARAM lParam1,
    LPARAM lParam2
)
{
    MessageBoxA(NULL, "Hey there, I am now your control panel item you know.", "Control Panel", 0);
    return 1;
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    {
        Cplapplet(NULL, NULL, NULL, NULL);
    }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}


Once the DLL is compiled, we can see our exported function Cplapplet:
View attachment 31


Demo
Below shows that doubUntitled.png


CPL file can also be launched with control.exe <pathtothe.cpl> like so

image.png


or with rundll32:
Code:
rundll32 shell32, Control_RunDLL \\VBOXSVR\Experiments\cpldoubleclick
\cpldoubleclick\Debug\cpldoubleclick.cpl


image.png


 

119

78

97

Top