#pragma once #ifdef WINDOWERHELPER_EXPORTS #define WINDOWERHELPER_API __declspec(dllexport) #else #define WINDOWERHELPER_API __declspec(dllimport) #endif #include #include using namespace std; /* Text MMF */ struct MMFTextCommand { DWORD Command; char Alias[256]; char Param1[256]; char Param2[256]; char Param3[256]; char Param4[256]; char Text[2048]; }; struct MMFTextControlMapping { unsigned long NumberOfCommands; bool Handled; MMFTextCommand Commands[32]; }; /* Keyboard MMF */ struct MMFKeyboardCommand { DWORD Command; char Param1[8]; char Param2[8]; char Param3[8]; char Param4[8]; char Text[2048]; }; struct MMFKeyboardControlMapping { unsigned long NumberOfCommands; bool Handled; MMFKeyboardCommand Commands[32]; }; /* Console MMF */ struct MMFConsoleArg { char Value[2048]; }; struct MMFConsoleCommand { int ArgCount; MMFConsoleArg Args[8]; }; struct MMFConsoleControlMapping { unsigned long LastUpdate; MMFConsoleCommand Command; }; class WINDOWERHELPER_API CTextHelper { public: CTextHelper(char* name); virtual ~CTextHelper(); void CreateTextObject(char* name); void DeleteTextObject(char* name); void SetText(char* name, char* text); void SetVisibility(char* name, bool visible); void SetFont(char* name, char* font, int height); void SetColor(char* name, unsigned char a, unsigned char r, unsigned char g, unsigned char b); void SetLocation(char* name, float x, float y); void SetBold(char* name, bool bold); void SetItalic(char* name, bool italic); void SetBGColor(char* name, unsigned char a, unsigned char r, unsigned char g, unsigned char b); void SetBGBorderSize(char* name, float pixels); void SetBGVisibility(char* name, bool visible); void SetRightJustified(char* name, bool justified); void FlushCommands(); private: HANDLE m_MapFile; LPVOID m_MapAddress; MMFTextControlMapping* m_TCM; queue m_QueuedCommands; }; class WINDOWERHELPER_API CKeyboardHelper { public: CKeyboardHelper(char* name); virtual ~CKeyboardHelper(); void SetKey(unsigned char key, bool down); void BlockInput(bool block); void SendString(char* string); private: HANDLE m_MapFile; LPVOID m_MapAddress; MMFKeyboardControlMapping* m_KCM; }; class WINDOWERHELPER_API CConsoleHelper { public: CConsoleHelper(char* name); virtual ~CConsoleHelper(); bool IsNewCommand(); int GetArgCount(); void GetArg(int index, char* buffer); private: unsigned long m_LastReadCommand; HANDLE m_MapFile; LPVOID m_MapAddress; MMFConsoleControlMapping* m_CCM; }; /* TEXT HELPER STATIC FUNCTIONS */ void* CreateTextHelper(char* name) { return new CTextHelper(name); } void DeleteTextHelper(void* helper) { delete helper; } void CTHCreateTextObject(void* helper, char* name) { ((CTextHelper*)helper)->CreateTextObject(name); } void CTHDeleteTextObject(void* helper, char* name) { ((CTextHelper*)helper)->DeleteTextObject(name); } void CTHSetText(void* helper, char* name, char* text) { ((CTextHelper*)helper)->SetText(name, text); } void CTHSetVisibility(void* helper, char* name, bool visible) { ((CTextHelper*)helper)->SetVisibility(name, visible); } void CTHSetFont(void* helper, char* name, char* font, int height) { ((CTextHelper*)helper)->SetFont(name, font, height); }; void CTHSetColor(void* helper, char* name, unsigned char a, unsigned char r, unsigned char g, unsigned char b) { ((CTextHelper*)helper)->SetColor(name, a, r, g, b); } void CTHSetLocation(void* helper, char* name, float x, float y) { ((CTextHelper*)helper)->SetLocation(name, x, y); } void CTHSetBold(void* helper, char* name, bool bold) { ((CTextHelper*)helper)->SetBold(name, bold); } void CTHSetItalic(void* helper, char* name, bool italic) { ((CTextHelper*)helper)->SetBold(name, italic); } void CTHSetBGColor(void* helper, char* name, unsigned char a, unsigned char r, unsigned char g, unsigned char b) { ((CTextHelper*)helper)->SetBGColor(name, a, r, g, b); } void CTHSetBGBorderSize(void* helper, char* name, float pixels) { ((CTextHelper*)helper)->SetBGBorderSize(name, pixels); } void CTHSetBGVisibility(void* helper, char* name, bool visible) { ((CTextHelper*)helper)->SetBGVisibility(name, visible); } void CTHSetRightJustified(void* helper, char* name, bool justified) { ((CTextHelper*)helper)->SetRightJustified(name, justified); } void CTHFlushCommands(void* helper) { ((CTextHelper*)helper)->FlushCommands(); } /* KEYBOARD HELPER STATIC FUNCTIONS */ void* CreateKeyboardHelper(char* name) { return new CKeyboardHelper(name); } void DeleteKeyboardHelper(void* helper) { delete helper; } void CKHSetKey(void* helper, unsigned char key, bool down) { ((CKeyboardHelper*)helper)->SetKey(key, down); } void CKHBlockInput(void* helper, bool block) { ((CKeyboardHelper*)helper)->BlockInput(block); } void CKHSendString(void* helper, char* string) { ((CKeyboardHelper*)helper)->SendString(string); } /* CONSOLE HELPER STATIC FUNCTIONS */ void* CreateConsoleHelper(char* name) { return new CConsoleHelper(name); } void DeleteConsoleHelper(void* helper) { delete helper; } bool CCHIsNewCommand(void* helper) { return ((CConsoleHelper*)helper)->IsNewCommand(); } int CCHGetArgCount(void* helper) { return ((CConsoleHelper*)helper)->GetArgCount(); } void CCHGetArg(void* helper, int index, char* buffer) { return ((CConsoleHelper*)helper)->GetArg(index, buffer); }