mirror of
https://github.com/Artikash/Example-Extension.git
synced 2024-11-10 11:35:35 +08:00
29 lines
2.1 KiB
C++
29 lines
2.1 KiB
C++
#include "stdafx.h"
|
||
|
||
#define CURRENT_SELECT 0x1000
|
||
|
||
extern "C"
|
||
{
|
||
/**
|
||
* Param sentence: wstring of the sentence received by NextHooker
|
||
* Param info: 64 bit integer that has bit flags set that convey additional info
|
||
* Return value: wstring of the sentence that NextHooker should transform the original into
|
||
* THIS FUNCTION MAY BE RUN SEVERAL TIMES CONCURRENTLY: PLEASE ENSURE THAT IT IS THREAD SAFE!
|
||
*/
|
||
std::wstring __declspec(dllexport) NewSentence(std::wstring sentence, DWORD64 info)
|
||
{
|
||
// This example extension does nothing except place sentences from the hook currently selected by the user into the clipboard
|
||
if (info & CURRENT_SELECT)
|
||
{
|
||
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (sentence.size() + 1) * sizeof(wchar_t));
|
||
memcpy(GlobalLock(hMem), sentence.c_str(), (sentence.size() + 1) * sizeof(wchar_t));
|
||
GlobalUnlock(hMem);
|
||
OpenClipboard(0);
|
||
EmptyClipboard();
|
||
SetClipboardData(CF_UNICODETEXT, hMem);
|
||
CloseClipboard();
|
||
}
|
||
return sentence; // Unless you want to change the sentence, please return the original!
|
||
}
|
||
}
|