PowerToys/src/modules/interface/powertoy_module_interface.h

70 lines
2.6 KiB
C
Raw Normal View History

#pragma once
/*
DLL Interface for PowerToys. The powertoy_create() (see below) must return
an object that implements this interface.
See tools/project_template/ModuleTemplate for simple, noop, PowerToy implementation.
The PowerToys runner will, for each PowerToy DLL:
- load the DLL,
- call powertoy_create() to create the PowerToy.
On the received object, the runner will call:
- get_name() to get the name of the PowerToy,
- enable() to initialize the PowerToy.
While running, the runner might call the following methods between create_powertoy()
and destroy():
- disable()/enable()/is_enabled() to change or get the PowerToy's enabled state,
- get_config() to get the available configuration settings,
- set_config() to set various settings,
- call_custom_action() when the user selects clicks a custom action in settings,
When terminating, the runner will:
- call destroy() which should free all the memory and delete the PowerToy object,
- unload the DLL.
*/
class PowertoyModuleIface
{
public:
/* Returns the name of the PowerToy, this will be cached by the runner. */
virtual const wchar_t* get_name() = 0;
/* Fills a buffer with the available configuration settings.
* If 'buffer' is a null ptr or the buffer size is not large enough
* sets the required buffer size in 'buffer_size' and return false.
* Returns true if successful.
*/
virtual bool get_config(wchar_t* buffer, int* buffer_size) = 0;
/* Sets the configuration values. */
virtual void set_config(const wchar_t* config) = 0;
/* Call custom action from settings screen. */
virtual void call_custom_action(const wchar_t* action){};
/* Enables the PowerToy. */
virtual void enable() = 0;
/* Disables the PowerToy, should free as much memory as possible. */
virtual void disable() = 0;
/* Should return if the PowerToys is enabled or disabled. */
virtual bool is_enabled() = 0;
/* Destroy the PowerToy and free all memory. */
virtual void destroy() = 0;
};
/*
Typedef of the factory function that creates the PowerToy object.
Must be exported by the DLL as powertoy_create(), e.g.:
extern "C" __declspec(dllexport) PowertoyModuleIface* __cdecl powertoy_create()
Called by the PowerToys runner to initialize each PowerToy.
It will be called only once before a call to destroy() method is made.
Returned PowerToy should be in disabled state. The runner will call
the enable() method to start the PowerToy.
In case of errors return nullptr.
*/
typedef PowertoyModuleIface*(__cdecl* powertoy_create_func)();