unit studioapi; interface uses SysUtils, Windows, Messages; type TLoadInfo = record { Plugin values } sPluginName: PChar; sPluginDescription: PChar; { Form Handles } hAllFilesForm: PHandle; hAutoIndent: PHandle; hClose: PHandle; hConnGen: PHandle; hGoToLine: PHandle; hHTMLPreview: PHandle; hHudMsgGenerator: PHandle; hInfo: PHandle; hIRCPaster: PHandle; hMainForm: PHandle; hMenuGenerator: PHandle; hMOTDGen: PHandle; hPluginsIniEditor: PHandle; hReplace: PHandle; hSearch: PHandle; hSelectColor: PHandle; hSettings: PHandle; hSocketsTerminal: PHandle; { Important Control Handles } hOutput: PHandle; hCodeExplorer: PHandle; hCodeInspector: PHandle; // even if it won't be useful hNotes: PHandle; { Other } pApplication: Pointer; // this is only useful for Delphi developers end; type PLoadInfo = ^TLoadInfo; TLoadPlugin = procedure (LoadInfo: PLoadInfo); cdecl; TUnloadPlugin = procedure; cdecl; const { Return values for dlls } PLUGIN_CONTINUE = 0; // continue... PLUGIN_STOP = 1; // stop calling funcs and don't handle the command PLUGIN_HANDLED = 2; // don't handle the command { Compile values } COMP_DEFAULT = 0; COMP_STARTHL = 1; COMP_UPLOAD = 2; { Help values } HELP_DEFAULT = 0; HELP_SEARCH = 1; HELP_FORUMS = 2; HELP_ABOUT = 3; { Controls for visible state } CTRL_OUTPUT = 0; // Output list CTRL_CODETOOLS_MAIN = 1; // Code-Tools window CTRL_CODETOOLS_ITEM = 2; // Code-Tools tab CTRL_NOTES = 3; // Notes tab { Languages } NEW_PAWN_PLUGIN = 0; NEW_PAWN_EMPTYPLUGIN = 1; NEW_PAWN_HEADER = 2; NEW_CPP_MODULE = 3; NEW_CPP_UNIT = 4; NEW_CPP_HEADER = 5; NEW_OTHER_TEXTFILE = 6; NEW_OTHER_HTML = 7; NEW_OTHER_SQL = 8; NEW_OTHER_XML = 9; const SCM_SHOWPROGRESS = WM_USER + $100; SCM_HIDEPROGRESS = WM_USER + $101; SCM_UPDATEPROGRESS = WM_USER + $102; SCM_LOADCODESNIPPETS = WM_USER + $103; SCM_CODESNIPPETCLICK = WM_USER + $104; SCM_MIRC_CMD = WM_USER + $105; SCM_RELOADINI = WM_USER + $106; SCM_SELECTLANGUAGE = WM_USER + $107; SCM_LOADFILE = WM_USER + $108; SCM_CURRPROJECTS = WM_USER + $109; SCM_COMPILE = WM_USER + $110; SCM_COMPILE_UPLOAD = WM_USER + $111; SCM_COMPILE_STARTHL = WM_USER + $112; SCM_MENU_LOADIMAGE = WM_USER + $113; SCM_MENU_ADDITEM = WM_USER + $114; SCM_MENU_ADDSUBITEM = WM_USER + $115; SCM_MENU_FAKECLICK = WM_USER + $116; SCM_MENU_SHOWITEM = WM_USER + $117; SCM_MENU_HIDEITEM = WM_USER + $118; SCM_PLUGIN_LOAD = WM_USER + $119; SCM_PLUGIN_UNLOAD = WM_USER + $120; SCM_SETTINGS_CREATEPAGE = WM_USER + $121; SCM_CODEINSPECTOR_CLEAR = WM_USER + $122; SCM_CODEINSPECTOR_ADD = WM_USER + $123; SCM_CODEINSPECTOR_ADDCOMBO = WM_USER + $124; SCM_CODEINSPECTOR_SETVALUE = WM_USER + $125; SCM_CODEINSPECTOR_SETNAME = WM_USER + $126; SCM_CODEINSPECTOR_GETVALUE = WM_USER + $127; SCM_CODEINSPECTOR_GETNAME = WM_USER + $128; SCM_CODEINSPECTOR_COUNT = WM_USER + $129; SCM_CODEINSPECTOR_BEGINUPDATE = WM_USER + $130; SCM_CODEINSPECTOR_ENDUPDATE = WM_USER + $131; SCM_CODEINSPECTOR_DELETE = WM_USER + $132; SCM_PAWN_NEWFILE = WM_USER + $133; SCM_PAWN_SAVEFILE = WM_USER + $134; SCM_PAWN_CLOSEFILE = WM_USER + $135; SCM_PAWN_ISUNTITLED = WM_USER + $136; SCM_PAWN_ACTIVATE = WM_USER + $137; SCM_PAWN_ACTIVATEDOC = WM_USER + $138; SCM_PAWN_GETNOTES = WM_USER + $139; SCM_PAWN_SETNOTES = WM_USER + $140; SCM_PAWN_GETFILENAME = WM_USER + $141; SCM_PAWN_SETFILENAME = WM_USER + $142; SCM_PAWN_GETTEXT = WM_USER + $143; SCM_PAWN_SETTEXT = WM_USER + $144; SCM_CPP_NEWFILE = WM_USER + $145; SCM_CPP_SAVEFILE = WM_USER + $146; SCM_CPP_CLOSEFILE = WM_USER + $147; SCM_CPP_ISUNTITLED = WM_USER + $148; SCM_CPP_ACTIVATE = WM_USER + $149; SCM_CPP_ACTIVATEDOC = WM_USER + $150; SCM_CPP_ACTIVATEIDE = WM_USER + $151; SCM_CPP_GETNOTES = WM_USER + $152; SCM_CPP_SETNOTES = WM_USER + $153; SCM_CPP_GETFILENAME = WM_USER + $154; SCM_CPP_SETFILENAME = WM_USER + $155; SCM_CPP_GETTEXT = WM_USER + $156; SCM_CPP_SETTEXT = WM_USER + $157; SCM_OTHER_NEWFILE = WM_USER + $158; SCM_OTHER_SAVEFILE = WM_USER + $159; SCM_OTHER_CLOSEFILE = WM_USER + $160; SCM_OTHER_ISUNTITLED = WM_USER + $161; SCM_OTHER_ACTIVATE = WM_USER + $162; SCM_OTHER_ACTIVATEDOC = WM_USER + $163; SCM_OTHER_GETNOTES = WM_USER + $164; SCM_OTHER_SETNOTES = WM_USER + $165; SCM_OTHER_GETFILENAME = WM_USER + $166; SCM_OTHER_SETFILENAME = WM_USER + $167; SCM_OTHER_GETTEXT = WM_USER + $168; SCM_OTHER_SETTEXT = WM_USER + $169; SCM_OUTPUT_SHOW = WM_USER + $170; SCM_OUTPUT_HIDE = WM_USER + $171; SCM_OUTPUT_ADD = WM_USER + $172; SCM_OUTPUT_CLEAR = WM_USER + $173; SCM_OUTPUT_DELETE = WM_USER + $174; SCM_OUTPUT_GETTEXT = WM_USER + $175; SCM_OUTPUT_GETITEM = WM_USER + $176; SCM_OUTPUT_INDEXOF = WM_USER + $177; SCM_ACTIVE_DOCUMENT = WM_USER + $178; SCM_ACTIVE_PROJECTS = WM_USER + $179; SCM_EDITOR_SETTEXT = WM_USER + $180; SCM_EDITOR_GETTEXT = WM_USER + $181; SCM_EDTIOR_SETCALLTIPS = WM_USER + $182; SCM_EDITOR_SHOWCALLTIP = WM_USER + $183; SCM_EDITOR_SETAUTOCOMPLETE = WM_USER + $184; SCM_EDITOR_SHOWAUTOCOMPLETE = WM_USER + $185; SCM_EDITOR_GETSELSTART = WM_USER + $186; SCM_EDITOR_GETSELLENGTH = WM_USER + $187; SCM_EDITOR_SETSELSTART = WM_USER + $188; SCM_EDITOR_SETSELLENGH = WM_USER + $189; SCM_REMOVE_MENUITEM = WM_USER + $190; SCM_REMOVE_IMAGE = WM_USER + $191; SCM_SETTHEME = WM_USER + $192; SCM_GETTHEME = WM_USER + $193; function SendStudioMsg(eMessage: Integer; eData: String; eIntData: Integer): Integer; implementation function SendStudioMsg(eMessage: Integer; eData: String; eIntData: Integer): Integer; var eStudioHandle: HWND; eCopyDataStruct: TCopyDataStruct; begin with eCopyDataStruct do begin dwData := eIntData; cbData := Length(eData) + 1; lpData := PChar(eData); end; eStudioHandle := FindWindow('TfrmMain', 'AMXX-Studio'); if eStudioHandle <> 0 then Result := SendMessage(eStudioHandle, WM_COPYDATA, eMessage, LongInt(@eCopyDataStruct)) else Result := 0; end; end.