/* studio_api.h by the AMX Mod X Dev Team */ #ifndef _INCLUDE_STUDIO_H #define _INCLUDE_STUDIO_H #define WINDOWS_LEAN_AND_MEAN #include #include // DLL Export #define EXPORT extern "C" __declspec(dllexport) // Return values for functions #define PLUGIN_CONTINUE 0 #define PLUGIN_STOP 1 #define PLUGIN_HANDLED 2 // Important values for events #define COMP_DEFAULT 0 #define COMP_STARTHL 1 #define COMP_UPLOAD 2 #define HELP_DEFAULT 0 #define HELP_SEARCH 1 #define HELP_FORUMS 2 #define HELP_ABOUT 3 #define CTRL_OUTPUT 0 // Output list #define CTRL_CODETOOLS_MAIN 1 // Code-Tools window #define CTRL_CODETOOLS_ITEM 2 // Code-Tools tab #define CTRL_NOTES 3 // Notes tab #define NEW_PAWN_PLUGIN 0 #define NEW_PAWN_EMPTYPLUGIN 1 #define NEW_PAWN_HEADER 2 #define NEW_CPP_MODULE 3 #define NEW_CPP_UNIT 4 #define NEW_CPP_HEADER 5 #define NEW_OTHER_TEXTFILE 6 #define NEW_OTHER_HTML 7 #define NEW_OTHER_SQL 8 #define NEW_OTHER_XML 9 // Messages (see "Functions and Events.txt" for further information) #define SCM_SHOWPROGRESS WM_USER + 0x100 // Show progressbar #define SCM_HIDEPROGRESS WM_USER + 0x101 // Hide progressbar #define SCM_UPDATEPROGRESS WM_USER + 0x102 // Update progress #define SCM_LOADCODESNIPPETS WM_USER + 0x103 // Load Code-Snippets of a language #define SCM_CODESNIPPETCLICK WM_USER + 0x104 // Simulate click on a Code-Snippet #define SCM_MIRC_CMD WM_USER + 0x105 // Send a command to mIRC (like /msg #amxmodx hello) #define SCM_RELOADINI WM_USER + 0x106 // Reload configuration ini (Hint: This is not the whole configuration!) #define SCM_SELECTLANGUAGE WM_USER + 0x107 // Set the highlighter language of the active document #define SCM_LOADFILE WM_USER + 0x108 // Load a custom file #define SCM_CURRPROJECTS WM_USER + 0x109 // Returns the current projects index #define SCM_COMPILE WM_USER + 0x110 // Simulate click on the "Compile"-button #define SCM_COMPILE_UPLOAD WM_USER + 0x111 // Simulate click on the "Compile and upload"-button #define SCM_COMPILE_STARTHL WM_USER + 0x112 // Simulate click on the "Compile and Start HL"-button #define SCM_MENU_LOADIMAGE WM_USER + 0x113 // Load an image (bitmap), returns the image index #define SCM_MENU_ADDITEM WM_USER + 0x114 // Add a menu item #define SCM_MENU_ADDSUBITEM WM_USER + 0x115 // Add a submenu item #define SCM_MENU_FAKECLICK WM_USER + 0x116 // Fake a click on a custom menu item #define SCM_MENU_SHOWITEM WM_USER + 0x117 // Show an item #define SCM_MENU_HIDEITEM WM_USER + 0x118 // Hide an item #define SCM_PLUGIN_LOAD WM_USER + 0x119 // Load a plugin #define SCM_PLUGIN_UNLOAD WM_USER + 0x120 // Unload a plugin #define SCM_SETTINGS_CREATEPAGE WM_USER + 0x121 // Create a new settings-page, returns the new HWND #define SCM_SETTINGS_REMOVEPAGE WM_USER + 0x194 // Removes a page from the settings dialog #define SCM_CODEINSPECTOR_CLEAR WM_USER + 0x122 // Clear the code-inspector #define SCM_CODEINSPECTOR_ADD WM_USER + 0x123 // Add a field to the code-inspector #define SCM_CODEINSPECTOR_ADDCOMBO WM_USER + 0x124 // Add a combobox-item to the code-inspector #define SCM_CODEINSPECTOR_SETVALUE WM_USER + 0x125 // Set a field of the code-inspector #define SCM_CODEINSPECTOR_SETNAME WM_USER + 0x126 // Set the name of an item #define SCM_CODEINSPECTOR_GETVALUE WM_USER + 0x127 // Get the value of an item #define SCM_CODEINSPECTOR_GETNAME WM_USER + 0x128 // Get the name of an item #define SCM_CODEINSPECTOR_COUNT WM_USER + 0x129 // Gets the count #define SCM_CODEINSPECTOR_BEGINUPDATE WM_USER + 0x130 // Begin update #define SCM_CODEINSPECTOR_ENDUPDATE WM_USER + 0x131 // End update #define SCM_CODEINSPECTOR_DELETE WM_USER + 0x132 // Deletes a field in the code-inspector #define SCM_PAWN_NEWFILE WM_USER + 0x133 // Create new Pawn-file #define SCM_PAWN_SAVEFILE WM_USER + 0x134 // Save a Pawn-file #define SCM_PAWN_CLOSEFILE WM_USER + 0x135 // Close a Pawn-file #define SCM_PAWN_ISUNTITLED WM_USER + 0x136 // Returns 1 if untitled, otherwise 0 #define SCM_PAWN_ACTIVATE WM_USER + 0x137 // Activate the Pawn Projects #define SCM_PAWN_ACTIVATEDOC WM_USER + 0x138 // Activate a Pawn document #define SCM_PAWN_GETNOTES WM_USER + 0x139 // Gets the notes text (RTF) #define SCM_PAWN_SETNOTES WM_USER + 0x140 // Set the notes text (RTF) #define SCM_PAWN_GETFILENAME WM_USER + 0x141 // Gets the filename of a document #define SCM_PAWN_SETFILENAME WM_USER + 0x142 // Sets the filename #define SCM_PAWN_FILECOUNT WM_USER + 0x195 // Returns the number of loaded scripts #define SCM_PAWN_GETTEXT WM_USER + 0x143 // Gets the text of a document #define SCM_PAWN_SETTEXT WM_USER + 0x144 // Sets the text of a document #define SCM_CPP_NEWFILE WM_USER + 0x145 // Create new Pawn-file #define SCM_CPP_SAVEFILE WM_USER + 0x146 // Save a Pawn-file #define SCM_CPP_CLOSEFILE WM_USER + 0x147 // Close a Pawn-file #define SCM_CPP_ISUNTITLED WM_USER + 0x148 // Returns 1 if untitled, otherwise 0 #define SCM_CPP_ACTIVATE WM_USER + 0x149 // Activate the Pawn Projects #define SCM_CPP_ACTIVATEDOC WM_USER + 0x150 // Activate a Pawn document #define SCM_CPP_ACTIVATEIDE WM_USER + 0x151 // Activate the C++ IDE #define SCM_CPP_GETNOTES WM_USER + 0x152 // Gets the notes text (RTF) #define SCM_CPP_SETNOTES WM_USER + 0x153 // Set the notes text (RTF) #define SCM_CPP_GETFILENAME WM_USER + 0x154 // Gets the filename of a document #define SCM_CPP_SETFILENAME WM_USER + 0x155 // Sets the filename #define SCM_CPP_FILECOUNT WM_USER + 0x196 // Returns the number of loaded C(++) files #define SCM_CPP_GETTEXT WM_USER + 0x156 // Gets the text of a document #define SCM_CPP_SETTEXT WM_USER + 0x157 // Sets the text of a document #define SCM_OTHER_NEWFILE WM_USER + 0x158 // Create a new file #define SCM_OTHER_SAVEFILE WM_USER + 0x159 // Save a file #define SCM_OTHER_CLOSEFILE WM_USER + 0x160 // Close a file #define SCM_OTHER_ISUNTITLED WM_USER + 0x161 // Returns 1 if untitled, otherwise 0 #define SCM_OTHER_ACTIVATE WM_USER + 0x162 // Activate a file #define SCM_OTHER_ACTIVATEDOC WM_USER + 0x163 // Activate a document #define SCM_OTHER_GETNOTES WM_USER + 0x164 // Gets the notes text (RTF) #define SCM_OTHER_SETNOTES WM_USER + 0x165 // Set the notes text (RTF) #define SCM_OTHER_GETFILENAME WM_USER + 0x166 // Gets the filename of a document #define SCM_OTHER_SETFILENAME WM_USER + 0x167 // Sets the filename #define SCM_OTHER_FILECOUNT WM_USER + 0x197 // Returns the number of loaded files #define SCM_OTHER_GETTEXT WM_USER + 0x168 // Gets the text of a document #define SCM_OTHER_SETTEXT WM_USER + 0x169 // Sets the text of a document #define SCM_OUTPUT_SHOW WM_USER + 0x170 // Show the output #define SCM_OUTPUT_HIDE WM_USER + 0x171 // Hide the output #define SCM_OUTPUT_ADD WM_USER + 0x172 // Add an item to the output #define SCM_OUTPUT_CLEAR WM_USER + 0x173 // Clear the output #define SCM_OUTPUT_DELETE WM_USER + 0x174 // Delete an item in the output #define SCM_OUTPUT_GETTEXT WM_USER + 0x175 // Get the whole output #define SCM_OUTPUT_GETITEM WM_USER + 0x176 // Get the text of a specific item #define SCM_OUTPUT_INDEXOF WM_USER + 0x177 // Gets the item index of an item, returns -1 if not found #define SCM_ACTIVE_DOCUMENT WM_USER + 0x178 // Returns the index of the active document #define SCM_ACTIVE_PROJECTS WM_USER + 0x179 // Returns the index of the active projects #define SCM_EDITOR_SETTEXT WM_USER + 0x180 // Sets the editor's text #define SCM_EDITOR_GETTEXT WM_USER + 0x181 // Gets the editor's text #define SCM_EDTIOR_SETCALLTIPS WM_USER + 0x182 // Sets the calltips #define SCM_EDITOR_SHOWCALLTIP WM_USER + 0x183 // Shows the calltip #define SCM_EDITOR_SETAUTOCOMPLETE WM_USER + 0x184 // Sets the autocomplete list #define SCM_EDITOR_SHOWAUTOCOMPLETE WM_USER + 0x185 // Show the autocomplete list #define SCM_EDITOR_GETSELSTART WM_USER + 0x186 // Gets the sel start #define SCM_EDITOR_GETSELLENGTH WM_USER + 0x187 // Gets the sel length #define SCM_EDITOR_SETSELSTART WM_USER + 0x188 // Set sel start #define SCM_EDITOR_SETSELLENGH WM_USER + 0x189 // Set sel length #define SCM_REMOVE_MENUITEM WM_USER + 0x190 // Remove an item from the menu #define SCM_REMOVE_IMAGE WM_USER + 0x191 // Remove an image from the image list #define SCM_SETTHEME WM_USER + 0x192 // Set theme #define SCM_GETTHEME WM_USER + 0x193 // Get theme struct load_info { /* Plugin Values */ const CHAR *sPluginName; const CHAR *sPluginDescription; /* Form Handles */ HWND *hModuleHandle; HWND *hAllFilesForm; HWND *hAutoIndent; HWND *hClose; HWND *hConnGen; HWND *hGoToLine; HWND *hHTMLPreview; HWND *hHudMsgGenerator; HWND *hInfo; HWND *hIRCPaster; HWND *hMainForm; HWND *hMenuGenerator; HWND *hMOTDGen; HWND *hPluginsIniEditor; HWND *hReplace; HWND *hSearch; HWND *hSelectColor; HWND *hSettings; HWND *hSocketsTerminal; HWND *hParamEdit; /* Important Control Handles */ HWND *hOutput; HWND *hCodeExplorer; HWND *hCodeInspector; HWND *hNotes; /* Other */ void *pApplication; }; int SendStudioMsg(int Message, const CHAR *Data, int IntData) { HWND StudioHandle; StudioHandle = FindWindow("TfrmMain", "AMXX-Studio"); if (StudioHandle != 0) { COPYDATASTRUCT sMessage; sMessage.dwData = IntData; sMessage.cbData = strlen(Data) + 1; sMessage.lpData = (void *) Data; return SendMessage(StudioHandle, WM_COPYDATA, (WPARAM)Message, (LPARAM)&sMessage); } else return -1; } // If you receive strings as integer, simply cast them with (CHAR *) SendStudioMsg(...); #endif