intptr_t WINAPI ProcessSynchroEventW(const struct ProcessSynchroEventInfo *Info) { if (Info->Event != SE_COMMONSYNCHRO) return 0; if (gnInCall > 0) return 0; #if 1 OutputDebugString(L"Posting macro\n"); MacroSendMacroText mcr = {sizeof(MacroSendMacroText)}; //mcr.SequenceText = L"i = 0; if APanel.Plugin then i=i+1; end; if PPanel.Plugin then i=i+2; end; Plugin.Call(\"6197AF6C-4755-49A5-84A1-8F227BF4790E\",i)"; mcr.SequenceText = L"Plugin.Call(\"6197AF6C-4755-49A5-84A1-8F227BF4790E\",APanel.Plugin and \"\" or APanel.Path0,PPanel.Plugin and \"\" or PPanel.Path0)"; INT_PTR i = psi.MacroControl(&guid_PluginGuid, MCTL_SENDSTRING, MSSC_POST, &mcr); MacroParseResult* mpr; if (!i) { mpr = (MacroParseResult*)calloc(4096,1); mpr->StructSize = sizeof(*mpr); psi.MacroControl(&guid_PluginGuid, MCTL_GETLASTERROR, 4096, mpr); free(mpr); } else InterlockedIncrement(&gnInCall); #endif #if 0 wchar_t szDbg[100]; static LONG nCount; nCount++; wsprintf(szDbg, L"%i: PanelControl(FCTL_GETPANELINFO, PANEL_ACTIVE)...", nCount); PanelInfo piA = {sizeof(piA)}, piP = {sizeof(piP)}; INT_PTR nARc = psi.PanelControl(PANEL_ACTIVE, FCTL_GETPANELINFO, 0, &piA); OutputDebugString(L" and PANEL_PASSIVE..."); INT_PTR nPRc = psi.PanelControl(PANEL_PASSIVE, FCTL_GETPANELINFO, 0, &piP); OutputDebugString(L" Done\n"); #endif return 0; }
static void RunKey(const wchar_t* Key) { MacroSendMacroText macro; memset(¯o,0,sizeof(macro)); macro.StructSize=sizeof(MacroSendMacroText); macro.SequenceText=Key; Info.MacroControl(&MainGuid,MCTL_SENDSTRING,MSSC_POST,¯o); }
/** Open plugin configuration of actions dialog. */ HANDLE WINAPI OpenW(const struct OpenInfo *oInfo) { switch (oInfo->OpenFrom) { case OPEN_EDITOR: editorSet->openMenu(); break; case OPEN_COMMANDLINE: { OpenCommandLineInfo *ocli =(OpenCommandLineInfo*)oInfo->Data; //file name, which we received const wchar_t *file = ocli->CommandLine; wchar_t *nfile = PathToFull(file,true); if (nfile){ if (!editorSet){ editorSet = new FarEditorSet(); } editorSet->viewFile(DString(nfile)); } delete[] nfile; } break; case OPEN_FROMMACRO: { Info.MacroControl(&MainGuid, MCTL_GETAREA, 0, NULL); OpenMacroInfo* mi=(OpenMacroInfo*)oInfo->Data; int MenuCode=-1; if (mi->Count) { switch (mi->Values[0].Type) { case FMVT_INTEGER: MenuCode=(int)mi->Values[0].Integer; break; case FMVT_DOUBLE: MenuCode=(int)mi->Values[0].Double; break; default: MenuCode = -1; } } if (MenuCode < 0) return 0; editorSet->openMenu(MenuCode-1); } break; } return 0; };