Example-Extension/ExampleExtension/Extension.cpp
Akash Mozumdar 171d8d39f8 bugfix
2018-09-08 21:19:00 -04:00

36 lines
2.5 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "Extension.h"
//#define COPY_CLIPBOARD
//#define EXTRA_NEWLINES
/**
* Param sentence: sentence received by NextHooker (UTF-16).
* Param miscInfo: pointer to start of singly linked list containing misc info about the sentence.
* Return value: whether the sentence was modified.
* NextHooker will display the sentence after all extensions have had a chance to process and/or modify it.
* THIS FUNCTION MAY BE RUN SEVERAL TIMES CONCURRENTLY: PLEASE ENSURE THAT IT IS THREAD SAFE!
*/
bool ProcessSentence(std::wstring& sentence, const InfoForExtension* miscInfo)
{
#ifdef COPY_CLIPBOARD
// This example extension automatically copies sentences from the hook currently selected by the user into the clipboard.
if (GetProperty("current select", miscInfo))
{
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (sentence.size() + 2) * sizeof(wchar_t));
memcpy(GlobalLock(hMem), sentence.c_str(), (sentence.size() + 2) * sizeof(wchar_t));
GlobalUnlock(hMem);
OpenClipboard(0);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT, hMem);
CloseClipboard();
}
return false;
#endif // COPY_CLIPBOARD
#ifdef EXTRA_NEWLINES
// This example extension adds extra newlines to all sentences.
sentence += L"\r\n";
return true;
#endif // EXTRA_NEWLINES
}