local ffi = require "ffi" ffi.cdef [[ /* plugin.hpp Plugin API for Far Manager 3.0 build 3674 */ enum { FARMANAGERVERSION_MAJOR = 3, FARMANAGERVERSION_MINOR = 0, FARMANAGERVERSION_REVISION = 0, FARMANAGERVERSION_BUILD = 3674, }; static const uint32_t FARMACRO_KEY_EVENT = (KEY_EVENT|0x8000); enum { CP_UNICODE = 1200, CP_REVERSEBOM = 1201, CP_DEFAULT = -1, CP_REDETECT = -2, }; typedef unsigned __int64 FARCOLORFLAGS; /*@ static const FARCOLORFLAGS FCF_FG_4BIT = 0x0000000000000001ULL, FCF_BG_4BIT = 0x0000000000000002ULL, FCF_4BITMASK = 0x0000000000000003ULL, // FCF_FG_4BIT|FCF_BG_4BIT FCF_EXTENDEDFLAGS = 0xFFFFFFFFFFFFFFFCULL, // ~FCF_4BITMASK FCF_FG_BOLD = 0x1000000000000000ULL, FCF_FG_ITALIC = 0x2000000000000000ULL, FCF_FG_UNDERLINE = 0x4000000000000000ULL, FCF_STYLEMASK = 0x7000000000000000ULL, // FCF_FG_BOLD|FCF_FG_ITALIC|FCF_FG_UNDERLINE FCF_NONE = 0; */ struct FarColor { FARCOLORFLAGS Flags; COLORREF ForegroundColor; COLORREF BackgroundColor; void* Reserved; }; enum { INDEXMASK = 0x0000000f, COLORMASK = 0x00ffffff, ALPHAMASK = 0xff000000, }; /*@ #define INDEXVALUE(x) ((x)&INDEXMASK) #define COLORVALUE(x) ((x)&COLORMASK) #define ALPHAVALUE(x) ((x)&ALPHAMASK) #define IS_OPAQUE(x) (ALPHAVALUE(x)==ALPHAMASK) #define IS_TRANSPARENT(x) (!ALPHAVALUE(x)) #define MAKE_OPAQUE(x) (x|=ALPHAMASK) #define MAKE_TRANSPARENT(x) (x&=COLORMASK) */ typedef unsigned __int64 COLORDIALOGFLAGS; static const /*COLORDIALOGFLAGS*/ uint32_t CDF_NONE = 0; typedef BOOL (__stdcall *FARAPICOLORDIALOG)( const GUID* PluginId, COLORDIALOGFLAGS Flags, struct FarColor *Color ); typedef unsigned __int64 FARMESSAGEFLAGS; static const /*FARMESSAGEFLAGS*/ uint32_t FMSG_WARNING = 0x0000000000000001, FMSG_ERRORTYPE = 0x0000000000000002, FMSG_KEEPBACKGROUND = 0x0000000000000004, FMSG_LEFTALIGN = 0x0000000000000008, FMSG_ALLINONE = 0x0000000000000010, FMSG_MB_OK = 0x0000000000010000, FMSG_MB_OKCANCEL = 0x0000000000020000, FMSG_MB_ABORTRETRYIGNORE = 0x0000000000030000, FMSG_MB_YESNO = 0x0000000000040000, FMSG_MB_YESNOCANCEL = 0x0000000000050000, FMSG_MB_RETRYCANCEL = 0x0000000000060000, FMSG_NONE = 0; typedef intptr_t (__stdcall *FARAPIMESSAGE)( const GUID* PluginId, const GUID* Id, FARMESSAGEFLAGS Flags, const wchar_t *HelpTopic, const wchar_t * const *Items, size_t ItemsNumber, intptr_t ButtonsNumber ); enum FARDIALOGITEMTYPES { DI_TEXT = 0, DI_VTEXT = 1, DI_SINGLEBOX = 2, DI_DOUBLEBOX = 3, DI_EDIT = 4, DI_PSWEDIT = 5, DI_FIXEDIT = 6, DI_BUTTON = 7, DI_CHECKBOX = 8, DI_RADIOBUTTON = 9, DI_COMBOBOX = 10, DI_LISTBOX = 11, DI_USERCONTROL =255, }; /* Check diagol element type has inputstring? (DI_EDIT, DI_FIXEDIT, DI_PSWEDIT, etc) */ static __inline BOOL IsEdit(enum FARDIALOGITEMTYPES Type) { switch (Type) { case DI_EDIT: case DI_FIXEDIT: case DI_PSWEDIT: case DI_COMBOBOX: return TRUE; default: return FALSE; } } typedef unsigned __int64 FARDIALOGITEMFLAGS; static const /*FARDIALOGITEMFLAGS*/ uint32_t DIF_BOXCOLOR = 0x0000000000000200, DIF_GROUP = 0x0000000000000400, DIF_LEFTTEXT = 0x0000000000000800, DIF_MOVESELECT = 0x0000000000001000, DIF_SHOWAMPERSAND = 0x0000000000002000, DIF_CENTERGROUP = 0x0000000000004000, DIF_NOBRACKETS = 0x0000000000008000, DIF_MANUALADDHISTORY = 0x0000000000008000, DIF_SEPARATOR = 0x0000000000010000, DIF_SEPARATOR2 = 0x0000000000020000, DIF_EDITOR = 0x0000000000020000, DIF_LISTNOAMPERSAND = 0x0000000000020000, DIF_LISTNOBOX = 0x0000000000040000, DIF_HISTORY = 0x0000000000040000, DIF_BTNNOCLOSE = 0x0000000000040000, DIF_CENTERTEXT = 0x0000000000040000, DIF_SEPARATORUSER = 0x0000000000080000, DIF_SETSHIELD = 0x0000000000080000, DIF_EDITEXPAND = 0x0000000000080000, DIF_DROPDOWNLIST = 0x0000000000100000, DIF_USELASTHISTORY = 0x0000000000200000, DIF_MASKEDIT = 0x0000000000400000, DIF_LISTTRACKMOUSE = 0x0000000000400000, DIF_LISTTRACKMOUSEINFOCUS = 0x0000000000800000, DIF_SELECTONENTRY = 0x0000000000800000, DIF_3STATE = 0x0000000000800000, DIF_EDITPATH = 0x0000000001000000, DIF_LISTWRAPMODE = 0x0000000001000000, DIF_NOAUTOCOMPLETE = 0x0000000002000000, DIF_LISTAUTOHIGHLIGHT = 0x0000000002000000, DIF_LISTNOCLOSE = 0x0000000004000000, DIF_EDITPATHEXEC = 0x0000000004000000, DIF_HIDDEN = 0x0000000010000000, DIF_READONLY = 0x0000000020000000, DIF_NOFOCUS = 0x0000000040000000, DIF_DISABLE = 0x0000000080000000, //@ DIF_DEFAULTBUTTON = 0x0000000100000000, //@ DIF_FOCUS = 0x0000000200000000, //@ DIF_RIGHTTEXT = 0x0000000400000000, //@ DIF_WORDWRAP = 0x0000000800000000, DIF_NONE = 0; enum FARMESSAGE { DM_FIRST = 0, DM_CLOSE = 1, DM_ENABLE = 2, DM_ENABLEREDRAW = 3, DM_GETDLGDATA = 4, DM_GETDLGITEM = 5, DM_GETDLGRECT = 6, DM_GETTEXT = 7, DM_KEY = 9, DM_MOVEDIALOG = 10, DM_SETDLGDATA = 11, DM_SETDLGITEM = 12, DM_SETFOCUS = 13, DM_REDRAW = 14, DM_SETTEXT = 15, DM_SETMAXTEXTLENGTH = 16, DM_SHOWDIALOG = 17, DM_GETFOCUS = 18, DM_GETCURSORPOS = 19, DM_SETCURSORPOS = 20, DM_SETTEXTPTR = 22, DM_SHOWITEM = 23, DM_ADDHISTORY = 24, DM_GETCHECK = 25, DM_SETCHECK = 26, DM_SET3STATE = 27, DM_LISTSORT = 28, DM_LISTGETITEM = 29, DM_LISTGETCURPOS = 30, DM_LISTSETCURPOS = 31, DM_LISTDELETE = 32, DM_LISTADD = 33, DM_LISTADDSTR = 34, DM_LISTUPDATE = 35, DM_LISTINSERT = 36, DM_LISTFINDSTRING = 37, DM_LISTINFO = 38, DM_LISTGETDATA = 39, DM_LISTSETDATA = 40, DM_LISTSETTITLES = 41, DM_LISTGETTITLES = 42, DM_RESIZEDIALOG = 43, DM_SETITEMPOSITION = 44, DM_GETDROPDOWNOPENED = 45, DM_SETDROPDOWNOPENED = 46, DM_SETHISTORY = 47, DM_GETITEMPOSITION = 48, DM_SETMOUSEEVENTNOTIFY = 49, DM_EDITUNCHANGEDFLAG = 50, DM_GETITEMDATA = 51, DM_SETITEMDATA = 52, DM_LISTSET = 53, DM_GETCURSORSIZE = 54, DM_SETCURSORSIZE = 55, DM_LISTGETDATASIZE = 56, DM_GETSELECTION = 57, DM_SETSELECTION = 58, DM_GETEDITPOSITION = 59, DM_SETEDITPOSITION = 60, DM_SETCOMBOBOXEVENT = 61, DM_GETCOMBOBOXEVENT = 62, DM_GETCONSTTEXTPTR = 63, DM_GETDLGITEMSHORT = 64, DM_SETDLGITEMSHORT = 65, DM_GETDIALOGINFO = 66, DN_FIRST = 4096, DN_BTNCLICK = 4097, DN_CTLCOLORDIALOG = 4098, DN_CTLCOLORDLGITEM = 4099, DN_CTLCOLORDLGLIST = 4100, DN_DRAWDIALOG = 4101, DN_DRAWDLGITEM = 4102, DN_EDITCHANGE = 4103, DN_ENTERIDLE = 4104, DN_GOTFOCUS = 4105, DN_HELP = 4106, DN_HOTKEY = 4107, DN_INITDIALOG = 4108, DN_KILLFOCUS = 4109, DN_LISTCHANGE = 4110, DN_DRAGGED = 4111, DN_RESIZECONSOLE = 4112, DN_DRAWDIALOGDONE = 4113, DN_LISTHOTKEY = 4114, DN_INPUT = 4115, DN_CONTROLINPUT = 4116, DN_CLOSE = 4117, DN_GETVALUE = 4118, DM_USER = 0x4000, }; enum FARCHECKEDSTATE { BSTATE_UNCHECKED = 0, BSTATE_CHECKED = 1, BSTATE_3STATE = 2, BSTATE_TOGGLE = 3, }; enum FARCOMBOBOXEVENTTYPE { CBET_KEY = 0x00000001, CBET_MOUSE = 0x00000002, }; typedef unsigned __int64 LISTITEMFLAGS; static const /*LISTITEMFLAGS*/ uint32_t LIF_SELECTED = 0x0000000000010000, LIF_CHECKED = 0x0000000000020000, LIF_SEPARATOR = 0x0000000000040000, LIF_DISABLE = 0x0000000000080000, LIF_GRAYED = 0x0000000000100000, LIF_HIDDEN = 0x0000000000200000, LIF_DELETEUSERDATA = 0x0000000080000000, LIF_NONE = 0; struct FarListItem { LISTITEMFLAGS Flags; const wchar_t *Text; intptr_t Reserved[2]; }; struct FarListUpdate { size_t StructSize; intptr_t Index; struct FarListItem Item; }; struct FarListInsert { size_t StructSize; intptr_t Index; struct FarListItem Item; }; struct FarListGetItem { size_t StructSize; intptr_t ItemIndex; struct FarListItem Item; }; struct FarListPos { size_t StructSize; intptr_t SelectPos; intptr_t TopPos; }; typedef unsigned __int64 FARLISTFINDFLAGS; static const /*FARLISTFINDFLAGS*/ uint32_t LIFIND_EXACTMATCH = 0x0000000000000001, LIFIND_NONE = 0; struct FarListFind { size_t StructSize; intptr_t StartIndex; const wchar_t *Pattern; FARLISTFINDFLAGS Flags; }; struct FarListDelete { size_t StructSize; intptr_t StartIndex; intptr_t Count; }; typedef unsigned __int64 FARLISTINFOFLAGS; static const /*FARLISTINFOFLAGS*/ uint32_t LINFO_SHOWNOBOX = 0x0000000000000400, LINFO_AUTOHIGHLIGHT = 0x0000000000000800, LINFO_REVERSEHIGHLIGHT = 0x0000000000001000, LINFO_WRAPMODE = 0x0000000000008000, LINFO_SHOWAMPERSAND = 0x0000000000010000, LINFO_NONE = 0; struct FarListInfo { size_t StructSize; FARLISTINFOFLAGS Flags; size_t ItemsNumber; intptr_t SelectPos; intptr_t TopPos; intptr_t MaxHeight; intptr_t MaxLength; }; struct FarListItemData { size_t StructSize; intptr_t Index; size_t DataSize; void *Data; }; struct FarList { size_t StructSize; size_t ItemsNumber; struct FarListItem *Items; }; struct FarListTitles { size_t StructSize; size_t TitleSize; const wchar_t *Title; size_t BottomSize; const wchar_t *Bottom; }; struct FarDialogItemColors { size_t StructSize; unsigned __int64 Flags; size_t ColorsCount; struct FarColor* Colors; }; struct FAR_CHAR_INFO { WCHAR Char; struct FarColor Attributes; }; struct FarDialogItem { enum FARDIALOGITEMTYPES Type; intptr_t X1,Y1,X2,Y2; union { intptr_t Selected; struct FarList *ListItems; struct FAR_CHAR_INFO *VBuf; intptr_t Reserved0; } //#ifndef __cplusplus // Param //#endif ; const wchar_t *History; const wchar_t *Mask; FARDIALOGITEMFLAGS Flags; const wchar_t *Data; size_t MaxLength; // terminate 0 not included (if == 0 string size is unlimited) intptr_t UserData; intptr_t Reserved[2]; }; struct FarDialogItemData { size_t StructSize; size_t PtrLength; wchar_t *PtrData; }; struct FarDialogEvent { size_t StructSize; HANDLE hDlg; intptr_t Msg; intptr_t Param1; void* Param2; intptr_t Result; }; struct OpenDlgPluginData { size_t StructSize; HANDLE hDlg; }; struct DialogInfo { size_t StructSize; GUID Id; GUID Owner; }; struct FarGetDialogItem { size_t StructSize; size_t Size; struct FarDialogItem* Item; }; typedef unsigned __int64 FARDIALOGFLAGS; static const /*FARDIALOGFLAGS*/ uint32_t FDLG_WARNING = 0x0000000000000001, FDLG_SMALLDIALOG = 0x0000000000000002, FDLG_NODRAWSHADOW = 0x0000000000000004, FDLG_NODRAWPANEL = 0x0000000000000008, FDLG_KEEPCONSOLETITLE = 0x0000000000000010, FDLG_NONE = 0; typedef intptr_t(__stdcall *FARWINDOWPROC)( HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2 ); typedef intptr_t(__stdcall *FARAPISENDDLGMESSAGE)( HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2 ); typedef intptr_t(__stdcall *FARAPIDEFDLGPROC)( HANDLE hDlg, intptr_t Msg, intptr_t Param1, void* Param2 ); typedef HANDLE(__stdcall *FARAPIDIALOGINIT)( const GUID* PluginId, const GUID* Id, intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2, const wchar_t *HelpTopic, const struct FarDialogItem *Item, size_t ItemsNumber, intptr_t Reserved, FARDIALOGFLAGS Flags, FARWINDOWPROC DlgProc, void* Param ); typedef intptr_t (__stdcall *FARAPIDIALOGRUN)( HANDLE hDlg ); typedef void (__stdcall *FARAPIDIALOGFREE)( HANDLE hDlg ); struct FarKey { WORD VirtualKeyCode; DWORD ControlKeyState; }; typedef unsigned __int64 MENUITEMFLAGS; static const /*MENUITEMFLAGS*/ uint32_t MIF_SELECTED = 0x000000000010000, MIF_CHECKED = 0x000000000020000, MIF_SEPARATOR = 0x000000000040000, MIF_DISABLE = 0x000000000080000, MIF_GRAYED = 0x000000000100000, MIF_HIDDEN = 0x000000000200000, MIF_NONE = 0; struct FarMenuItem { MENUITEMFLAGS Flags; const wchar_t *Text; struct FarKey AccelKey; intptr_t UserData; intptr_t Reserved[2]; }; typedef unsigned __int64 FARMENUFLAGS; static const /*FARMENUFLAGS*/ uint32_t FMENU_SHOWAMPERSAND = 0x0000000000000001, FMENU_WRAPMODE = 0x0000000000000002, FMENU_AUTOHIGHLIGHT = 0x0000000000000004, FMENU_REVERSEAUTOHIGHLIGHT = 0x0000000000000008, FMENU_CHANGECONSOLETITLE = 0x0000000000000010, FMENU_NONE = 0; typedef intptr_t (__stdcall *FARAPIMENU)( const GUID* PluginId, const GUID* Id, intptr_t X, intptr_t Y, intptr_t MaxHeight, FARMENUFLAGS Flags, const wchar_t *Title, const wchar_t *Bottom, const wchar_t *HelpTopic, const struct FarKey *BreakKeys, intptr_t *BreakCode, const struct FarMenuItem *Item, size_t ItemsNumber ); typedef unsigned __int64 PLUGINPANELITEMFLAGS; static const /*PLUGINPANELITEMFLAGS*/ uint32_t PPIF_SELECTED = 0x0000000040000000, PPIF_PROCESSDESCR = 0x0000000080000000, PPIF_NONE = 0; struct FarPanelItemFreeInfo { size_t StructSize; HANDLE hPlugin; }; typedef void (__stdcall *FARPANELITEMFREECALLBACK)(void* UserData, const struct FarPanelItemFreeInfo* Info); struct UserDataItem { void* Data; FARPANELITEMFREECALLBACK FreeData; }; struct PluginPanelItem { FILETIME CreationTime; FILETIME LastAccessTime; FILETIME LastWriteTime; FILETIME ChangeTime; unsigned __int64 FileSize; unsigned __int64 AllocationSize; const wchar_t *FileName; const wchar_t *AlternateFileName; const wchar_t *Description; const wchar_t *Owner; const wchar_t * const *CustomColumnData; size_t CustomColumnNumber; PLUGINPANELITEMFLAGS Flags; struct UserDataItem UserData; uintptr_t FileAttributes; uintptr_t NumberOfLinks; uintptr_t CRC32; intptr_t Reserved[2]; }; struct FarGetPluginPanelItem { size_t StructSize; size_t Size; struct PluginPanelItem* Item; }; struct SortingPanelItem { FILETIME CreationTime; FILETIME LastAccessTime; FILETIME LastWriteTime; FILETIME ChangeTime; unsigned __int64 FileSize; unsigned __int64 AllocationSize; const wchar_t *FileName; const wchar_t *AlternateFileName; const wchar_t *Description; const wchar_t *Owner; const wchar_t * const *CustomColumnData; size_t CustomColumnNumber; PLUGINPANELITEMFLAGS Flags; struct UserDataItem UserData; uintptr_t FileAttributes; uintptr_t NumberOfLinks; uintptr_t CRC32; intptr_t Position; intptr_t SortGroup; uintptr_t NumberOfStreams; unsigned __int64 StreamsSize; }; typedef unsigned __int64 PANELINFOFLAGS; static const /*PANELINFOFLAGS*/ uint32_t PFLAGS_SHOWHIDDEN = 0x0000000000000001, PFLAGS_HIGHLIGHT = 0x0000000000000002, PFLAGS_REVERSESORTORDER = 0x0000000000000004, PFLAGS_USESORTGROUPS = 0x0000000000000008, PFLAGS_SELECTEDFIRST = 0x0000000000000010, PFLAGS_REALNAMES = 0x0000000000000020, PFLAGS_NUMERICSORT = 0x0000000000000040, PFLAGS_PANELLEFT = 0x0000000000000080, PFLAGS_DIRECTORIESFIRST = 0x0000000000000100, PFLAGS_USECRC32 = 0x0000000000000200, PFLAGS_CASESENSITIVESORT = 0x0000000000000400, PFLAGS_PLUGIN = 0x0000000000000800, PFLAGS_VISIBLE = 0x0000000000001000, PFLAGS_FOCUS = 0x0000000000002000, PFLAGS_ALTERNATIVENAMES = 0x0000000000004000, PFLAGS_SHORTCUT = 0x0000000000008000, PFLAGS_NONE = 0; enum PANELINFOTYPE { PTYPE_FILEPANEL = 0, PTYPE_TREEPANEL = 1, PTYPE_QVIEWPANEL = 2, PTYPE_INFOPANEL = 3, }; enum OPENPANELINFO_SORTMODES { SM_DEFAULT = 0, SM_UNSORTED = 1, SM_NAME = 2, SM_EXT = 3, SM_MTIME = 4, SM_CTIME = 5, SM_ATIME = 6, SM_SIZE = 7, SM_DESCR = 8, SM_OWNER = 9, SM_COMPRESSEDSIZE = 10, SM_NUMLINKS = 11, SM_NUMSTREAMS = 12, SM_STREAMSSIZE = 13, SM_FULLNAME = 14, SM_CHTIME = 15, }; struct PanelInfo { size_t StructSize; HANDLE PluginHandle; GUID OwnerGuid; PANELINFOFLAGS Flags; size_t ItemsNumber; size_t SelectedItemsNumber; RECT PanelRect; size_t CurrentItem; size_t TopPanelItem; intptr_t ViewMode; enum PANELINFOTYPE PanelType; enum OPENPANELINFO_SORTMODES SortMode; }; struct PanelRedrawInfo { size_t StructSize; size_t CurrentItem; size_t TopPanelItem; }; struct CmdLineSelect { size_t StructSize; intptr_t SelStart; intptr_t SelEnd; }; struct FarPanelDirectory { size_t StructSize; const wchar_t* Name; const wchar_t* Param; GUID PluginId; const wchar_t* File; }; /*@ #define PANEL_NONE ((HANDLE)(-1)) #define PANEL_ACTIVE ((HANDLE)(-1)) #define PANEL_PASSIVE ((HANDLE)(-2)) #define PANEL_STOP ((HANDLE)(-1)) */ enum FILE_CONTROL_COMMANDS { FCTL_CLOSEPANEL = 0, FCTL_GETPANELINFO = 1, FCTL_UPDATEPANEL = 2, FCTL_REDRAWPANEL = 3, FCTL_GETCMDLINE = 4, FCTL_SETCMDLINE = 5, FCTL_SETSELECTION = 6, FCTL_SETVIEWMODE = 7, FCTL_INSERTCMDLINE = 8, FCTL_SETUSERSCREEN = 9, FCTL_SETPANELDIRECTORY = 10, FCTL_SETCMDLINEPOS = 11, FCTL_GETCMDLINEPOS = 12, FCTL_SETSORTMODE = 13, FCTL_SETSORTORDER = 14, FCTL_SETCMDLINESELECTION = 15, FCTL_GETCMDLINESELECTION = 16, FCTL_CHECKPANELSEXIST = 17, FCTL_SETNUMERICSORT = 18, FCTL_GETUSERSCREEN = 19, FCTL_ISACTIVEPANEL = 20, FCTL_GETPANELITEM = 21, FCTL_GETSELECTEDPANELITEM = 22, FCTL_GETCURRENTPANELITEM = 23, FCTL_GETPANELDIRECTORY = 24, FCTL_GETCOLUMNTYPES = 25, FCTL_GETCOLUMNWIDTHS = 26, FCTL_BEGINSELECTION = 27, FCTL_ENDSELECTION = 28, FCTL_CLEARSELECTION = 29, FCTL_SETDIRECTORIESFIRST = 30, FCTL_GETPANELFORMAT = 31, FCTL_GETPANELHOSTFILE = 32, FCTL_SETCASESENSITIVESORT = 33, FCTL_GETPANELPREFIX = 34, FCTL_SETACTIVEPANEL = 35, }; typedef void (__stdcall *FARAPITEXT)( intptr_t X, intptr_t Y, const struct FarColor* Color, const wchar_t *Str ); typedef HANDLE(__stdcall *FARAPISAVESCREEN)(intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2); typedef void (__stdcall *FARAPIRESTORESCREEN)(HANDLE hScreen); typedef intptr_t (__stdcall *FARAPIGETDIRLIST)( const wchar_t *Dir, struct PluginPanelItem **pPanelItem, size_t *pItemsNumber ); typedef intptr_t (__stdcall *FARAPIGETPLUGINDIRLIST)( const GUID* PluginId, HANDLE hPanel, const wchar_t *Dir, struct PluginPanelItem **pPanelItem, size_t *pItemsNumber ); typedef void (__stdcall *FARAPIFREEDIRLIST)(struct PluginPanelItem *PanelItem, size_t nItemsNumber); typedef void (__stdcall *FARAPIFREEPLUGINDIRLIST)(HANDLE hPanel, struct PluginPanelItem *PanelItem, size_t nItemsNumber); typedef unsigned __int64 VIEWER_FLAGS; static const /*VIEWER_FLAGS*/ uint32_t VF_NONMODAL = 0x0000000000000001, VF_DELETEONCLOSE = 0x0000000000000002, VF_ENABLE_F6 = 0x0000000000000004, VF_DISABLEHISTORY = 0x0000000000000008, VF_IMMEDIATERETURN = 0x0000000000000100, VF_DELETEONLYFILEONCLOSE = 0x0000000000000200, VF_NONE = 0; typedef intptr_t (__stdcall *FARAPIVIEWER)( const wchar_t *FileName, const wchar_t *Title, intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2, VIEWER_FLAGS Flags, uintptr_t CodePage ); typedef unsigned __int64 EDITOR_FLAGS; static const /*EDITOR_FLAGS*/ uint32_t EF_NONMODAL = 0x0000000000000001, EF_CREATENEW = 0x0000000000000002, EF_ENABLE_F6 = 0x0000000000000004, EF_DISABLEHISTORY = 0x0000000000000008, EF_DELETEONCLOSE = 0x0000000000000010, EF_IMMEDIATERETURN = 0x0000000000000100, EF_DELETEONLYFILEONCLOSE = 0x0000000000000200, EF_LOCKED = 0x0000000000000400, EF_DISABLESAVEPOS = 0x0000000000000800, EN_NONE = 0; enum EDITOR_EXITCODE { EEC_OPEN_ERROR = 0, EEC_MODIFIED = 1, EEC_NOT_MODIFIED = 2, EEC_LOADING_INTERRUPTED = 3, }; typedef intptr_t (__stdcall *FARAPIEDITOR)( const wchar_t *FileName, const wchar_t *Title, intptr_t X1, intptr_t Y1, intptr_t X2, intptr_t Y2, EDITOR_FLAGS Flags, intptr_t StartLine, intptr_t StartChar, uintptr_t CodePage ); typedef const wchar_t*(__stdcall *FARAPIGETMSG)( const GUID* PluginId, intptr_t MsgId ); typedef unsigned __int64 FARHELPFLAGS; static const /*FARHELPFLAGS*/ uint32_t FHELP_NOSHOWERROR = 0x0000000080000000, FHELP_SELFHELP = 0x0000000000000000, FHELP_FARHELP = 0x0000000000000001, FHELP_CUSTOMFILE = 0x0000000000000002, FHELP_CUSTOMPATH = 0x0000000000000004, FHELP_GUID = 0x0000000000000008, FHELP_USECONTENTS = 0x0000000040000000, FHELP_NONE = 0; typedef BOOL (__stdcall *FARAPISHOWHELP)( const wchar_t *ModuleName, const wchar_t *Topic, FARHELPFLAGS Flags ); enum ADVANCED_CONTROL_COMMANDS { ACTL_GETFARMANAGERVERSION = 0, ACTL_WAITKEY = 2, ACTL_GETCOLOR = 3, ACTL_GETARRAYCOLOR = 4, ACTL_GETWINDOWINFO = 6, ACTL_GETWINDOWCOUNT = 7, ACTL_SETCURRENTWINDOW = 8, ACTL_COMMIT = 9, ACTL_GETFARHWND = 10, ACTL_SETARRAYCOLOR = 16, ACTL_REDRAWALL = 19, ACTL_SYNCHRO = 20, ACTL_SETPROGRESSSTATE = 21, ACTL_SETPROGRESSVALUE = 22, ACTL_QUIT = 23, ACTL_GETFARRECT = 24, ACTL_GETCURSORPOS = 25, ACTL_SETCURSORPOS = 26, ACTL_PROGRESSNOTIFY = 27, ACTL_GETWINDOWTYPE = 28, }; enum FAR_MACRO_CONTROL_COMMANDS { MCTL_LOADALL = 0, MCTL_SAVEALL = 1, MCTL_SENDSTRING = 2, MCTL_GETSTATE = 5, MCTL_GETAREA = 6, MCTL_ADDMACRO = 7, MCTL_DELMACRO = 8, MCTL_GETLASTERROR = 9, MCTL_EXECSTRING = 10, }; typedef unsigned __int64 FARKEYMACROFLAGS; static const /*FARKEYMACROFLAGS*/ uint32_t KMFLAGS_SILENTCHECK = 0x0000000000000001, KMFLAGS_DISABLEOUTPUT = 0x0000000000000001, // this flag is ignored, don't use it in new projects. KMFLAGS_NOSENDKEYSTOPLUGINS = 0x0000000000000002, KMFLAGS_ENABLEOUTPUT = 0x0000000000000004, KMFLAGS_NONE = 0; enum FARMACROSENDSTRINGCOMMAND { MSSC_POST =0, MSSC_CHECK =2, }; enum FARMACROAREA { MACROAREA_OTHER = 0, // Mode of copying text from the screen; vertical menus MACROAREA_SHELL = 1, // File panels MACROAREA_VIEWER = 2, // Internal viewer program MACROAREA_EDITOR = 3, // Editor MACROAREA_DIALOG = 4, // Dialogs MACROAREA_SEARCH = 5, // Quick search in panels MACROAREA_DISKS = 6, // Menu of disk selection MACROAREA_MAINMENU = 7, // Main menu MACROAREA_MENU = 8, // Other menus MACROAREA_HELP = 9, // Help system MACROAREA_INFOPANEL = 10, // Info panel MACROAREA_QVIEWPANEL = 11, // Quick view panel MACROAREA_TREEPANEL = 12, // Folders tree panel MACROAREA_FINDFOLDER = 13, // Find folder MACROAREA_USERMENU = 14, // User menu MACROAREA_SHELLAUTOCOMPLETION = 15, // Autocompletion list in command line MACROAREA_DIALOGAUTOCOMPLETION = 16, // Autocompletion list in dialogs MACROAREA_COMMON = 255, }; enum FARMACROSTATE { MACROSTATE_NOMACRO = 0, MACROSTATE_EXECUTING = 1, MACROSTATE_EXECUTING_COMMON = 2, MACROSTATE_RECORDING = 3, MACROSTATE_RECORDING_COMMON = 4, }; enum FARMACROPARSEERRORCODE { MPEC_SUCCESS = 0, MPEC_ERROR = 1, }; struct MacroParseResult { size_t StructSize; DWORD ErrCode; COORD ErrPos; const wchar_t *ErrSrc; }; struct MacroSendMacroText { size_t StructSize; FARKEYMACROFLAGS Flags; INPUT_RECORD AKey; const wchar_t *SequenceText; }; typedef unsigned __int64 FARADDKEYMACROFLAGS; static const /*FARADDKEYMACROFLAGS*/ uint32_t AKMFLAGS_NONE = 0; typedef intptr_t (__stdcall *FARMACROCALLBACK)(void* Id,FARADDKEYMACROFLAGS Flags); struct MacroAddMacro { size_t StructSize; void* Id; const wchar_t *SequenceText; const wchar_t *Description; FARKEYMACROFLAGS Flags; INPUT_RECORD AKey; enum FARMACROAREA Area; FARMACROCALLBACK Callback; }; enum FARMACROVARTYPE { FMVT_UNKNOWN = 0, FMVT_INTEGER = 1, FMVT_STRING = 2, FMVT_DOUBLE = 3, FMVT_BOOLEAN = 4, FMVT_BINARY = 5, FMVT_POINTER = 6, FMVT_NIL = 7, FMVT_ARRAY = 8, }; struct FarMacroValue { enum FARMACROVARTYPE Type; union { __int64 Integer; __int64 Boolean; double Double; const wchar_t *String; void *Pointer; struct { void *Data; size_t Size; } Binary; struct { struct FarMacroValue *Values; size_t Count; } Array; } //#ifndef __cplusplus // Value //#endif ; }; struct FarMacroCall { size_t StructSize; size_t Count; struct FarMacroValue *Values; void (__stdcall *Callback)(void *CallbackData, struct FarMacroValue *Values, size_t Count); void *CallbackData; }; struct FarGetValue { size_t StructSize; intptr_t Type; struct FarMacroValue Value; }; struct MacroExecuteString { size_t StructSize; unsigned __int64 Flags; const wchar_t *SequenceText; size_t InCount; struct FarMacroValue *InValues; size_t OutCount; const struct FarMacroValue *OutValues; }; typedef unsigned __int64 FARSETCOLORFLAGS; static const /*FARSETCOLORFLAGS*/ uint32_t FSETCLR_REDRAW = 0x0000000000000001, FSETCLR_NONE = 0; struct FarSetColors { size_t StructSize; FARSETCOLORFLAGS Flags; size_t StartIndex; size_t ColorsCount; struct FarColor* Colors; }; enum WINDOWINFO_TYPE { WTYPE_PANELS = 1, WTYPE_VIEWER = 2, WTYPE_EDITOR = 3, WTYPE_DIALOG = 4, WTYPE_VMENU = 5, WTYPE_HELP = 6, }; typedef unsigned __int64 WINDOWINFO_FLAGS; static const /*WINDOWINFO_FLAGS*/ uint32_t WIF_MODIFIED = 0x0000000000000001, WIF_CURRENT = 0x0000000000000002, WIF_MODAL = 0x0000000000000004; struct WindowInfo { size_t StructSize; intptr_t Id; wchar_t *TypeName; wchar_t *Name; intptr_t TypeNameSize; intptr_t NameSize; intptr_t Pos; enum WINDOWINFO_TYPE Type; WINDOWINFO_FLAGS Flags; }; struct WindowType { size_t StructSize; enum WINDOWINFO_TYPE Type; }; enum TASKBARPROGRESSTATE { TBPS_NOPROGRESS =0x0, TBPS_INDETERMINATE=0x1, TBPS_NORMAL =0x2, TBPS_ERROR =0x4, TBPS_PAUSED =0x8, }; struct ProgressValue { size_t StructSize; unsigned __int64 Completed; unsigned __int64 Total; }; enum VIEWER_CONTROL_COMMANDS { VCTL_GETINFO = 0, VCTL_QUIT = 1, VCTL_REDRAW = 2, VCTL_SETKEYBAR = 3, VCTL_SETPOSITION = 4, VCTL_SELECT = 5, VCTL_SETMODE = 6, VCTL_GETFILENAME = 7, }; typedef unsigned __int64 VIEWER_OPTIONS; static const /*VIEWER_OPTIONS*/ uint32_t VOPT_SAVEFILEPOSITION = 0x0000000000000001, VOPT_AUTODETECTCODEPAGE = 0x0000000000000002, VOPT_NONE = 0; enum VIEWER_SETMODE_TYPES { VSMT_VIEWMODE = 0, VSMT_WRAP = 1, VSMT_WORDWRAP = 2, }; typedef unsigned __int64 VIEWER_SETMODEFLAGS_TYPES; static const /*VIEWER_SETMODEFLAGS_TYPES*/ uint32_t VSMFL_REDRAW = 0x0000000000000001; struct ViewerSetMode { size_t StructSize; enum VIEWER_SETMODE_TYPES Type; union { intptr_t iParam; wchar_t *wszParam; } //#ifndef __cplusplus // Param //#endif ; VIEWER_SETMODEFLAGS_TYPES Flags; }; struct ViewerSelect { size_t StructSize; __int64 BlockStartPos; __int64 BlockLen; }; typedef unsigned __int64 VIEWER_SETPOS_FLAGS; static const /*VIEWER_SETPOS_FLAGS*/ uint32_t VSP_NOREDRAW = 0x0000000000000001, VSP_PERCENT = 0x0000000000000002, VSP_RELATIVE = 0x0000000000000004, VSP_NORETNEWPOS = 0x0000000000000008; struct ViewerSetPosition { size_t StructSize; VIEWER_SETPOS_FLAGS Flags; __int64 StartPos; __int64 LeftPos; }; typedef unsigned __int64 VIEWER_MODE_FLAGS; static const /*VIEWER_MODE_FLAGS*/ uint32_t VMF_WRAP = 0x0000000000000001, VMF_WORDWRAP = 0x0000000000000002; enum VIEWER_MODE_TYPE { VMT_TEXT =0, VMT_HEX =1, VMT_DUMP =2, }; struct ViewerMode { uintptr_t CodePage; VIEWER_MODE_FLAGS Flags; enum VIEWER_MODE_TYPE ViewMode; }; struct ViewerInfo { size_t StructSize; intptr_t ViewerID; intptr_t TabSize; struct ViewerMode CurMode; __int64 FileSize; __int64 FilePos; __int64 LeftPos; VIEWER_OPTIONS Options; intptr_t WindowSizeX; intptr_t WindowSizeY; }; enum VIEWER_EVENTS { VE_READ =0, VE_CLOSE =1, VE_GOTFOCUS =6, VE_KILLFOCUS =7, }; enum EDITOR_EVENTS { EE_READ =0, EE_SAVE =1, EE_REDRAW =2, EE_CLOSE =3, EE_GOTFOCUS =6, EE_KILLFOCUS =7, EE_CHANGE =8, }; enum DIALOG_EVENTS { DE_DLGPROCINIT =0, DE_DEFDLGPROCINIT =1, DE_DLGPROCEND =2, }; enum SYNCHRO_EVENTS { SE_COMMONSYNCHRO =0, }; //@ #define EEREDRAW_ALL (void*)0 static const int32_t CURRENT_EDITOR = -1; enum EDITOR_CONTROL_COMMANDS { ECTL_GETSTRING = 0, ECTL_SETSTRING = 1, ECTL_INSERTSTRING = 2, ECTL_DELETESTRING = 3, ECTL_DELETECHAR = 4, ECTL_INSERTTEXT = 5, ECTL_GETINFO = 6, ECTL_SETPOSITION = 7, ECTL_SELECT = 8, ECTL_REDRAW = 9, ECTL_TABTOREAL = 10, ECTL_REALTOTAB = 11, ECTL_EXPANDTABS = 12, ECTL_SETTITLE = 13, ECTL_READINPUT = 14, ECTL_PROCESSINPUT = 15, ECTL_ADDCOLOR = 16, ECTL_GETCOLOR = 17, ECTL_SAVEFILE = 18, ECTL_QUIT = 19, ECTL_SETKEYBAR = 20, ECTL_SETPARAM = 22, ECTL_GETBOOKMARKS = 23, ECTL_DELETEBLOCK = 25, ECTL_ADDSESSIONBOOKMARK = 26, ECTL_PREVSESSIONBOOKMARK = 27, ECTL_NEXTSESSIONBOOKMARK = 28, ECTL_CLEARSESSIONBOOKMARKS = 29, ECTL_DELETESESSIONBOOKMARK = 30, ECTL_GETSESSIONBOOKMARKS = 31, ECTL_UNDOREDO = 32, ECTL_GETFILENAME = 33, ECTL_DELCOLOR = 34, ECTL_SUBSCRIBECHANGEEVENT = 36, ECTL_UNSUBSCRIBECHANGEEVENT = 37, }; enum EDITOR_SETPARAMETER_TYPES { ESPT_TABSIZE = 0, ESPT_EXPANDTABS = 1, ESPT_AUTOINDENT = 2, ESPT_CURSORBEYONDEOL = 3, ESPT_CHARCODEBASE = 4, ESPT_CODEPAGE = 5, ESPT_SAVEFILEPOSITION = 6, ESPT_LOCKMODE = 7, ESPT_SETWORDDIV = 8, ESPT_GETWORDDIV = 9, ESPT_SHOWWHITESPACE = 10, ESPT_SETBOM = 11, }; struct EditorSetParameter { size_t StructSize; enum EDITOR_SETPARAMETER_TYPES Type; union { intptr_t iParam; wchar_t *wszParam; intptr_t Reserved; } //#ifndef __cplusplus // Param //#endif ; unsigned __int64 Flags; size_t Size; }; enum EDITOR_UNDOREDO_COMMANDS { EUR_BEGIN = 0, EUR_END = 1, EUR_UNDO = 2, EUR_REDO = 3, }; struct EditorUndoRedo { size_t StructSize; enum EDITOR_UNDOREDO_COMMANDS Command; }; struct EditorGetString { size_t StructSize; intptr_t StringNumber; intptr_t StringLength; const wchar_t *StringText; const wchar_t *StringEOL; intptr_t SelStart; intptr_t SelEnd; }; struct EditorSetString { size_t StructSize; intptr_t StringNumber; intptr_t StringLength; const wchar_t *StringText; const wchar_t *StringEOL; }; enum EXPAND_TABS { EXPAND_NOTABS = 0, EXPAND_ALLTABS = 1, EXPAND_NEWTABS = 2, }; enum EDITOR_OPTIONS { EOPT_EXPANDALLTABS = 0x00000001, EOPT_PERSISTENTBLOCKS = 0x00000002, EOPT_DELREMOVESBLOCKS = 0x00000004, EOPT_AUTOINDENT = 0x00000008, EOPT_SAVEFILEPOSITION = 0x00000010, EOPT_AUTODETECTCODEPAGE= 0x00000020, EOPT_CURSORBEYONDEOL = 0x00000040, EOPT_EXPANDONLYNEWTABS = 0x00000080, EOPT_SHOWWHITESPACE = 0x00000100, EOPT_BOM = 0x00000200, EOPT_SHOWLINEBREAK = 0x00000400, }; enum EDITOR_BLOCK_TYPES { BTYPE_NONE = 0, BTYPE_STREAM = 1, BTYPE_COLUMN = 2, }; enum EDITOR_CURRENTSTATE { ECSTATE_MODIFIED = 0x00000001, ECSTATE_SAVED = 0x00000002, ECSTATE_LOCKED = 0x00000004, }; struct EditorInfo { size_t StructSize; intptr_t EditorID; intptr_t WindowSizeX; intptr_t WindowSizeY; intptr_t TotalLines; intptr_t CurLine; intptr_t CurPos; intptr_t CurTabPos; intptr_t TopScreenLine; intptr_t LeftPos; intptr_t Overtype; intptr_t BlockType; intptr_t BlockStartLine; uintptr_t Options; intptr_t TabSize; size_t BookmarkCount; size_t SessionBookmarkCount; uintptr_t CurState; uintptr_t CodePage; }; struct EditorBookmarks { size_t StructSize; size_t Size; size_t Count; intptr_t *Line; intptr_t *Cursor; intptr_t *ScreenLine; intptr_t *LeftPos; }; struct EditorSetPosition { size_t StructSize; intptr_t CurLine; intptr_t CurPos; intptr_t CurTabPos; intptr_t TopScreenLine; intptr_t LeftPos; intptr_t Overtype; }; struct EditorSelect { size_t StructSize; intptr_t BlockType; intptr_t BlockStartLine; intptr_t BlockStartPos; intptr_t BlockWidth; intptr_t BlockHeight; }; struct EditorConvertPos { size_t StructSize; intptr_t StringNumber; intptr_t SrcPos; intptr_t DestPos; }; typedef unsigned __int64 EDITORCOLORFLAGS; static const /*EDITORCOLORFLAGS*/ uint32_t ECF_TABMARKFIRST = 0x0000000000000001, ECF_TABMARKCURRENT = 0x0000000000000002; struct EditorColor { size_t StructSize; intptr_t StringNumber; intptr_t ColorItem; intptr_t StartPos; intptr_t EndPos; uintptr_t Priority; EDITORCOLORFLAGS Flags; struct FarColor Color; GUID Owner; }; struct EditorDeleteColor { size_t StructSize; GUID Owner; intptr_t StringNumber; intptr_t StartPos; }; static const uint32_t EDITOR_COLOR_NORMAL_PRIORITY = 0x80000000U; struct EditorSaveFile { size_t StructSize; const wchar_t *FileName; const wchar_t *FileEOL; uintptr_t CodePage; }; enum EDITOR_CHANGETYPE { ECTYPE_CHANGED = 0, ECTYPE_ADDED = 1, ECTYPE_DELETED = 2, }; struct EditorChange { size_t StructSize; enum EDITOR_CHANGETYPE Type; intptr_t StringNumber; }; struct EditorSubscribeChangeEvent { size_t StructSize; GUID PluginId; }; typedef unsigned __int64 INPUTBOXFLAGS; static const /*INPUTBOXFLAGS*/ uint32_t FIB_ENABLEEMPTY = 0x0000000000000001, FIB_PASSWORD = 0x0000000000000002, FIB_EXPANDENV = 0x0000000000000004, FIB_NOUSELASTHISTORY = 0x0000000000000008, FIB_BUTTONS = 0x0000000000000010, FIB_NOAMPERSAND = 0x0000000000000020, FIB_EDITPATH = 0x0000000000000040, FIB_EDITPATHEXEC = 0x0000000000000080, FIB_NONE = 0; typedef intptr_t (__stdcall *FARAPIINPUTBOX)( const GUID* PluginId, const GUID* Id, const wchar_t *Title, const wchar_t *SubTitle, const wchar_t *HistoryName, const wchar_t *SrcText, wchar_t *DestText, size_t DestSize, const wchar_t *HelpTopic, INPUTBOXFLAGS Flags ); enum FAR_PLUGINS_CONTROL_COMMANDS { PCTL_LOADPLUGIN = 0, PCTL_UNLOADPLUGIN = 1, PCTL_FORCEDLOADPLUGIN = 2, PCTL_FINDPLUGIN = 3, PCTL_GETPLUGININFORMATION = 4, PCTL_GETPLUGINS = 5, }; enum FAR_PLUGIN_LOAD_TYPE { PLT_PATH = 0, }; enum FAR_PLUGIN_FIND_TYPE { PFM_GUID = 0, PFM_MODULENAME = 1, }; typedef unsigned __int64 FAR_PLUGIN_FLAGS; static const /*FAR_PLUGIN_FLAGS*/ uint32_t FPF_LOADED = 0x0000000000000001, //@ FPF_ANSI = 0x1000000000000000ULL, FPF_NONE = 0; enum FAR_FILE_FILTER_CONTROL_COMMANDS { FFCTL_CREATEFILEFILTER = 0, FFCTL_FREEFILEFILTER = 1, FFCTL_OPENFILTERSMENU = 2, FFCTL_STARTINGTOFILTER = 3, FFCTL_ISFILEINFILTER = 4, }; enum FAR_FILE_FILTER_TYPE { FFT_PANEL = 0, FFT_FINDFILE = 1, FFT_COPY = 2, FFT_SELECT = 3, FFT_CUSTOM = 4, }; enum FAR_REGEXP_CONTROL_COMMANDS { RECTL_CREATE = 0, RECTL_FREE = 1, RECTL_COMPILE = 2, RECTL_OPTIMIZE = 3, RECTL_MATCHEX = 4, RECTL_SEARCHEX = 5, RECTL_BRACKETSCOUNT = 6, }; struct RegExpMatch { intptr_t start,end; }; struct RegExpSearch { const wchar_t* Text; intptr_t Position; intptr_t Length; struct RegExpMatch* Match; intptr_t Count; void* Reserved; }; enum FAR_SETTINGS_CONTROL_COMMANDS { SCTL_CREATE = 0, SCTL_FREE = 1, SCTL_SET = 2, SCTL_GET = 3, SCTL_ENUM = 4, SCTL_DELETE = 5, SCTL_CREATESUBKEY = 6, SCTL_OPENSUBKEY = 7, }; enum FARSETTINGSTYPES { FST_UNKNOWN = 0, FST_SUBKEY = 1, FST_QWORD = 2, FST_STRING = 3, FST_DATA = 4, }; enum FARSETTINGS_SUBFOLDERS { FSSF_ROOT = 0, FSSF_HISTORY_CMD = 1, FSSF_HISTORY_FOLDER = 2, FSSF_HISTORY_VIEW = 3, FSSF_HISTORY_EDIT = 4, FSSF_HISTORY_EXTERNAL = 5, FSSF_FOLDERSHORTCUT_0 = 6, FSSF_FOLDERSHORTCUT_1 = 7, FSSF_FOLDERSHORTCUT_2 = 8, FSSF_FOLDERSHORTCUT_3 = 9, FSSF_FOLDERSHORTCUT_4 = 10, FSSF_FOLDERSHORTCUT_5 = 11, FSSF_FOLDERSHORTCUT_6 = 12, FSSF_FOLDERSHORTCUT_7 = 13, FSSF_FOLDERSHORTCUT_8 = 14, FSSF_FOLDERSHORTCUT_9 = 15, FSSF_CONFIRMATIONS = 16, FSSF_SYSTEM = 17, FSSF_PANEL = 18, FSSF_EDITOR = 19, FSSF_SCREEN = 20, FSSF_DIALOG = 21, FSSF_INTERFACE = 22, FSSF_PANELLAYOUT = 23, }; enum FAR_PLUGIN_SETTINGS_LOCATION { PSL_ROAMING = 0, PSL_LOCAL = 1, }; struct FarSettingsCreate { size_t StructSize; GUID Guid; HANDLE Handle; }; struct FarSettingsItem { size_t StructSize; size_t Root; const wchar_t* Name; enum FARSETTINGSTYPES Type; union { unsigned __int64 Number; const wchar_t* String; struct { size_t Size; const void* Data; } Data; } //#ifndef __cplusplus // Value //#endif ; }; struct FarSettingsName { const wchar_t* Name; enum FARSETTINGSTYPES Type; }; struct FarSettingsHistory { const wchar_t* Name; const wchar_t* Param; GUID PluginId; const wchar_t* File; FILETIME Time; BOOL Lock; }; struct FarSettingsEnum { size_t StructSize; size_t Root; size_t Count; union { const struct FarSettingsName* Items; const struct FarSettingsHistory* Histories; } //#ifndef __cplusplus // Value //#endif ; }; struct FarSettingsValue { size_t StructSize; size_t Root; const wchar_t* Value; }; typedef intptr_t (__stdcall *FARAPIPANELCONTROL)( HANDLE hPanel, enum FILE_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t(__stdcall *FARAPIADVCONTROL)( const GUID* PluginId, enum ADVANCED_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIVIEWERCONTROL)( intptr_t ViewerID, enum VIEWER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIEDITORCONTROL)( intptr_t EditorID, enum EDITOR_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIMACROCONTROL)( const GUID* PluginId, enum FAR_MACRO_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIPLUGINSCONTROL)( HANDLE hHandle, enum FAR_PLUGINS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIFILEFILTERCONTROL)( HANDLE hHandle, enum FAR_FILE_FILTER_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPIREGEXPCONTROL)( HANDLE hHandle, enum FAR_REGEXP_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); typedef intptr_t (__stdcall *FARAPISETTINGSCONTROL)( HANDLE hHandle, enum FAR_SETTINGS_CONTROL_COMMANDS Command, intptr_t Param1, void* Param2 ); enum FARCLIPBOARD_TYPE { FCT_ANY=0, FCT_STREAM=1, FCT_COLUMN=2 }; // typedef int (__cdecl *FARSTDSPRINTF)(wchar_t *Buffer,const wchar_t *Format,...); typedef int (__cdecl *FARSTDSNPRINTF)(wchar_t *Buffer,size_t Sizebuf,const wchar_t *Format,...); typedef int (__cdecl *FARSTDSSCANF)(const wchar_t *Buffer, const wchar_t *Format,...); // typedef void (__stdcall *FARSTDQSORT)(void *base, size_t nelem, size_t width, int (__stdcall *fcmp)(const void *, const void *,void *userparam),void *userparam); typedef void *(__stdcall *FARSTDBSEARCH)(const void *key, const void *base, size_t nelem, size_t width, int (__stdcall *fcmp)(const void *, const void *,void *userparam),void *userparam); typedef size_t (__stdcall *FARSTDGETFILEOWNER)(const wchar_t *Computer,const wchar_t *Name,wchar_t *Owner,size_t Size); typedef size_t (__stdcall *FARSTDGETNUMBEROFLINKS)(const wchar_t *Name); typedef int (__stdcall *FARSTDATOI)(const wchar_t *s); typedef __int64 (__stdcall *FARSTDATOI64)(const wchar_t *s); typedef wchar_t *(__stdcall *FARSTDITOA64)(__int64 value, wchar_t *string, int radix); typedef wchar_t *(__stdcall *FARSTDITOA)(int value, wchar_t *string, int radix); typedef wchar_t *(__stdcall *FARSTDLTRIM)(wchar_t *Str); typedef wchar_t *(__stdcall *FARSTDRTRIM)(wchar_t *Str); typedef wchar_t *(__stdcall *FARSTDTRIM)(wchar_t *Str); typedef wchar_t *(__stdcall *FARSTDTRUNCSTR)(wchar_t *Str,intptr_t MaxLength); typedef wchar_t *(__stdcall *FARSTDTRUNCPATHSTR)(wchar_t *Str,intptr_t MaxLength); typedef wchar_t *(__stdcall *FARSTDQUOTESPACEONLY)(wchar_t *Str); typedef const wchar_t*(__stdcall *FARSTDPOINTTONAME)(const wchar_t *Path); typedef BOOL (__stdcall *FARSTDADDENDSLASH)(wchar_t *Path); typedef BOOL (__stdcall *FARSTDCOPYTOCLIPBOARD)(enum FARCLIPBOARD_TYPE Type, const wchar_t *Data); typedef size_t (__stdcall *FARSTDPASTEFROMCLIPBOARD)(enum FARCLIPBOARD_TYPE Type, wchar_t *Data, size_t Size); typedef int (__stdcall *FARSTDLOCALISLOWER)(wchar_t Ch); typedef int (__stdcall *FARSTDLOCALISUPPER)(wchar_t Ch); typedef int (__stdcall *FARSTDLOCALISALPHA)(wchar_t Ch); typedef int (__stdcall *FARSTDLOCALISALPHANUM)(wchar_t Ch); typedef wchar_t (__stdcall *FARSTDLOCALUPPER)(wchar_t LowerChar); typedef wchar_t (__stdcall *FARSTDLOCALLOWER)(wchar_t UpperChar); typedef void (__stdcall *FARSTDLOCALUPPERBUF)(wchar_t *Buf,intptr_t Length); typedef void (__stdcall *FARSTDLOCALLOWERBUF)(wchar_t *Buf,intptr_t Length); typedef void (__stdcall *FARSTDLOCALSTRUPR)(wchar_t *s1); typedef void (__stdcall *FARSTDLOCALSTRLWR)(wchar_t *s1); typedef int (__stdcall *FARSTDLOCALSTRICMP)(const wchar_t *s1,const wchar_t *s2); typedef int (__stdcall *FARSTDLOCALSTRNICMP)(const wchar_t *s1,const wchar_t *s2,intptr_t n); typedef unsigned __int64 PROCESSNAME_FLAGS; static const /*PROCESSNAME_FLAGS*/ uint32_t // 0xFFFF - length // 0xFF0000 - mode // 0xFFFFFFFFFF000000 - flags PN_CMPNAME = 0x0000000000000000, PN_CMPNAMELIST = 0x0000000000010000, PN_GENERATENAME = 0x0000000000020000, PN_CHECKMASK = 0x0000000000030000, PN_SKIPPATH = 0x0000000001000000, PN_SHOWERRORMESSAGE = 0x0000000002000000; typedef size_t (__stdcall *FARSTDPROCESSNAME)(const wchar_t *param1, wchar_t *param2, size_t size, PROCESSNAME_FLAGS flags); typedef void (__stdcall *FARSTDUNQUOTE)(wchar_t *Str); typedef unsigned __int64 XLAT_FLAGS; static const /*XLAT_FLAGS*/ uint32_t XLAT_SWITCHKEYBLAYOUT = 0x0000000000000001, XLAT_SWITCHKEYBBEEP = 0x0000000000000002, XLAT_USEKEYBLAYOUTNAME = 0x0000000000000004, XLAT_CONVERTALLCMDLINE = 0x0000000000010000, XLAT_NONE = 0; typedef size_t (__stdcall *FARSTDINPUTRECORDTOKEYNAME)(const INPUT_RECORD* Key, wchar_t *KeyText, size_t Size); typedef wchar_t*(__stdcall *FARSTDXLAT)(wchar_t *Line,intptr_t StartPos,intptr_t EndPos,XLAT_FLAGS Flags); typedef BOOL (__stdcall *FARSTDKEYNAMETOINPUTRECORD)(const wchar_t *Name,INPUT_RECORD* Key); typedef int (__stdcall *FRSUSERFUNC)( const struct PluginPanelItem *FData, const wchar_t *FullName, void *Param ); typedef unsigned __int64 FRSMODE; static const /*FRSMODE*/ uint32_t FRS_RETUPDIR = 0x0000000000000001, FRS_RECUR = 0x0000000000000002, FRS_SCANSYMLINK = 0x0000000000000004; typedef void (__stdcall *FARSTDRECURSIVESEARCH)(const wchar_t *InitDir,const wchar_t *Mask,FRSUSERFUNC Func,FRSMODE Flags,void *Param); typedef size_t (__stdcall *FARSTDMKTEMP)(wchar_t *Dest, size_t DestSize, const wchar_t *Prefix); typedef size_t (__stdcall *FARSTDGETPATHROOT)(const wchar_t *Path,wchar_t *Root, size_t DestSize); enum LINK_TYPE { LINK_HARDLINK = 1, LINK_JUNCTION = 2, LINK_VOLMOUNT = 3, LINK_SYMLINKFILE = 4, LINK_SYMLINKDIR = 5, LINK_SYMLINK = 6, }; typedef unsigned __int64 MKLINK_FLAGS; static const /*MKLINK_FLAGS*/ uint32_t MLF_SHOWERRMSG = 0x0000000000010000, MLF_DONOTUPDATEPANEL = 0x0000000000020000, MLF_NONE = 0; typedef BOOL (__stdcall *FARSTDMKLINK)(const wchar_t *Src,const wchar_t *Dest,enum LINK_TYPE Type, MKLINK_FLAGS Flags); typedef size_t (__stdcall *FARGETREPARSEPOINTINFO)(const wchar_t *Src, wchar_t *Dest, size_t DestSize); enum CONVERTPATHMODES { CPM_FULL = 0, CPM_REAL = 1, CPM_NATIVE = 2, }; typedef size_t (__stdcall *FARCONVERTPATH)(enum CONVERTPATHMODES Mode, const wchar_t *Src, wchar_t *Dest, size_t DestSize); typedef size_t (__stdcall *FARGETCURRENTDIRECTORY)(size_t Size, wchar_t* Buffer); typedef unsigned __int64 FARFORMATFILESIZEFLAGS; /*@ static const FARFORMATFILESIZEFLAGS FFFS_COMMAS = 0x0100000000000000LL, FFFS_FLOATSIZE = 0x0200000000000000LL, FFFS_SHOWBYTESINDEX = 0x0400000000000000LL, FFFS_ECONOMIC = 0x0800000000000000LL, FFFS_THOUSAND = 0x1000000000000000LL, FFFS_MINSIZEINDEX = 0x2000000000000000LL, FFFS_MINSIZEINDEX_MASK = 0x0000000000000003LL; */ typedef size_t (__stdcall *FARFORMATFILESIZE)(unsigned __int64 Size, intptr_t Width, FARFORMATFILESIZEFLAGS Flags, wchar_t *Dest, size_t DestSize); typedef struct FarStandardFunctions { size_t StructSize; FARSTDATOI atoi; FARSTDATOI64 atoi64; FARSTDITOA itoa; FARSTDITOA64 itoa64; // FARSTDSPRINTF sprintf; FARSTDSSCANF sscanf; // FARSTDQSORT qsort; FARSTDBSEARCH bsearch; // FARSTDSNPRINTF snprintf; // FARSTDLOCALISLOWER LIsLower; FARSTDLOCALISUPPER LIsUpper; FARSTDLOCALISALPHA LIsAlpha; FARSTDLOCALISALPHANUM LIsAlphanum; FARSTDLOCALUPPER LUpper; FARSTDLOCALLOWER LLower; FARSTDLOCALUPPERBUF LUpperBuf; FARSTDLOCALLOWERBUF LLowerBuf; FARSTDLOCALSTRUPR LStrupr; FARSTDLOCALSTRLWR LStrlwr; FARSTDLOCALSTRICMP LStricmp; FARSTDLOCALSTRNICMP LStrnicmp; FARSTDUNQUOTE Unquote; FARSTDLTRIM LTrim; FARSTDRTRIM RTrim; FARSTDTRIM Trim; FARSTDTRUNCSTR TruncStr; FARSTDTRUNCPATHSTR TruncPathStr; FARSTDQUOTESPACEONLY QuoteSpaceOnly; FARSTDPOINTTONAME PointToName; FARSTDGETPATHROOT GetPathRoot; FARSTDADDENDSLASH AddEndSlash; FARSTDCOPYTOCLIPBOARD CopyToClipboard; FARSTDPASTEFROMCLIPBOARD PasteFromClipboard; FARSTDINPUTRECORDTOKEYNAME FarInputRecordToName; FARSTDKEYNAMETOINPUTRECORD FarNameToInputRecord; FARSTDXLAT XLat; FARSTDGETFILEOWNER GetFileOwner; FARSTDGETNUMBEROFLINKS GetNumberOfLinks; FARSTDRECURSIVESEARCH FarRecursiveSearch; FARSTDMKTEMP MkTemp; FARSTDPROCESSNAME ProcessName; FARSTDMKLINK MkLink; FARCONVERTPATH ConvertPath; FARGETREPARSEPOINTINFO GetReparsePointInfo; FARGETCURRENTDIRECTORY GetCurrentDirectory; FARFORMATFILESIZE FormatFileSize; } FARSTANDARDFUNCTIONS; struct PluginStartupInfo { size_t StructSize; const wchar_t *ModuleName; FARAPIMENU Menu; FARAPIMESSAGE Message; FARAPIGETMSG GetMsg; FARAPIPANELCONTROL PanelControl; FARAPISAVESCREEN SaveScreen; FARAPIRESTORESCREEN RestoreScreen; FARAPIGETDIRLIST GetDirList; FARAPIGETPLUGINDIRLIST GetPluginDirList; FARAPIFREEDIRLIST FreeDirList; FARAPIFREEPLUGINDIRLIST FreePluginDirList; FARAPIVIEWER Viewer; FARAPIEDITOR Editor; FARAPITEXT Text; FARAPIEDITORCONTROL EditorControl; FARSTANDARDFUNCTIONS *FSF; FARAPISHOWHELP ShowHelp; FARAPIADVCONTROL AdvControl; FARAPIINPUTBOX InputBox; FARAPICOLORDIALOG ColorDialog; FARAPIDIALOGINIT DialogInit; FARAPIDIALOGRUN DialogRun; FARAPIDIALOGFREE DialogFree; FARAPISENDDLGMESSAGE SendDlgMessage; FARAPIDEFDLGPROC DefDlgProc; FARAPIVIEWERCONTROL ViewerControl; FARAPIPLUGINSCONTROL PluginsControl; FARAPIFILEFILTERCONTROL FileFilterControl; FARAPIREGEXPCONTROL RegExpControl; FARAPIMACROCONTROL MacroControl; FARAPISETTINGSCONTROL SettingsControl; void *Private; void* Instance; }; typedef HANDLE (__stdcall *FARAPICREATEFILE)(const wchar_t *Object,DWORD DesiredAccess,DWORD ShareMode,SECURITY_ATTRIBUTES* SecurityAttributes,DWORD CreationDistribution,DWORD FlagsAndAttributes,HANDLE TemplateFile); typedef DWORD (__stdcall *FARAPIGETFILEATTRIBUTES)(const wchar_t *FileName); typedef BOOL (__stdcall *FARAPISETFILEATTRIBUTES)(const wchar_t *FileName,DWORD dwFileAttributes); typedef BOOL (__stdcall *FARAPIMOVEFILEEX)(const wchar_t *ExistingFileName,const wchar_t *NewFileName,DWORD dwFlags); typedef BOOL (__stdcall *FARAPIDELETEFILE)(const wchar_t *FileName); typedef BOOL (__stdcall *FARAPIREMOVEDIRECTORY)(const wchar_t *DirName); typedef BOOL (__stdcall *FARAPICREATEDIRECTORY)(const wchar_t *PathName,SECURITY_ATTRIBUTES* lpSecurityAttributes); struct ArclitePrivateInfo { size_t StructSize; FARAPICREATEFILE CreateFile; FARAPIGETFILEATTRIBUTES GetFileAttributes; FARAPISETFILEATTRIBUTES SetFileAttributes; FARAPIMOVEFILEEX MoveFileEx; FARAPIDELETEFILE DeleteFile; FARAPIREMOVEDIRECTORY RemoveDirectory; FARAPICREATEDIRECTORY CreateDirectory; }; struct NetBoxPrivateInfo { size_t StructSize; FARAPICREATEFILE CreateFile; FARAPIGETFILEATTRIBUTES GetFileAttributes; FARAPISETFILEATTRIBUTES SetFileAttributes; FARAPIMOVEFILEEX MoveFileEx; FARAPIDELETEFILE DeleteFile; FARAPIREMOVEDIRECTORY RemoveDirectory; FARAPICREATEDIRECTORY CreateDirectory; }; struct MacroPluginReturn { intptr_t ReturnType; size_t Count; struct FarMacroValue *Values; }; typedef intptr_t (__stdcall *FARAPICALLFAR)(intptr_t CheckCode, struct FarMacroCall* Data); typedef void (__stdcall *FARAPICALLPLUGIN)(struct MacroPluginReturn* Data, struct FarMacroCall* Target); struct MacroPrivateInfo { size_t StructSize; FARAPICALLFAR CallFar; FARAPICALLPLUGIN CallPlugin; }; typedef unsigned __int64 PLUGIN_FLAGS; static const /*PLUGIN_FLAGS*/ uint32_t PF_PRELOAD = 0x0000000000000001, PF_DISABLEPANELS = 0x0000000000000002, PF_EDITOR = 0x0000000000000004, PF_VIEWER = 0x0000000000000008, PF_FULLCMDLINE = 0x0000000000000010, PF_DIALOG = 0x0000000000000020, PF_NONE = 0; struct PluginMenuItem { const GUID *Guids; const wchar_t * const *Strings; size_t Count; }; enum VERSION_STAGE { VS_RELEASE = 0, VS_ALPHA = 1, VS_BETA = 2, VS_RC = 3, }; struct VersionInfo { DWORD Major; DWORD Minor; DWORD Revision; DWORD Build; enum VERSION_STAGE Stage; }; static __inline BOOL CheckVersion(const struct VersionInfo* Current, const struct VersionInfo* Required) { return (Current->Major > Required->Major) || (Current->Major == Required->Major && Current->Minor > Required->Minor) || (Current->Major == Required->Major && Current->Minor == Required->Minor && Current->Revision > Required->Revision) || (Current->Major == Required->Major && Current->Minor == Required->Minor && Current->Revision == Required->Revision && Current->Build >= Required->Build); } static __inline struct VersionInfo MAKEFARVERSION(DWORD Major, DWORD Minor, DWORD Revision, DWORD Build, enum VERSION_STAGE Stage) { struct VersionInfo Info = {Major, Minor, Revision, Build, Stage}; return Info; } //#define FARMANAGERVERSION MAKEFARVERSION(FARMANAGERVERSION_MAJOR,FARMANAGERVERSION_MINOR, FARMANAGERVERSION_REVISION, FARMANAGERVERSION_BUILD, FARMANAGERVERSION_STAGE) struct GlobalInfo { size_t StructSize; struct VersionInfo MinFarVersion; struct VersionInfo Version; GUID Guid; const wchar_t *Title; const wchar_t *Description; const wchar_t *Author; void* Instance; }; struct PluginInfo { size_t StructSize; PLUGIN_FLAGS Flags; struct PluginMenuItem DiskMenu; struct PluginMenuItem PluginMenu; struct PluginMenuItem PluginConfig; const wchar_t *CommandPrefix; void* Instance; }; struct FarGetPluginInformation { size_t StructSize; const wchar_t *ModuleName; FAR_PLUGIN_FLAGS Flags; struct PluginInfo *PInfo; struct GlobalInfo *GInfo; }; typedef unsigned __int64 INFOPANELLINE_FLAGS; static const /*INFOPANELLINE_FLAGS*/ uint32_t IPLFLAGS_SEPARATOR = 0x0000000000000001; struct InfoPanelLine { const wchar_t *Text; const wchar_t *Data; INFOPANELLINE_FLAGS Flags; }; typedef unsigned __int64 PANELMODE_FLAGS; static const /*PANELMODE_FLAGS*/ uint32_t PMFLAGS_FULLSCREEN = 0x0000000000000001, PMFLAGS_DETAILEDSTATUS = 0x0000000000000002, PMFLAGS_ALIGNEXTENSIONS = 0x0000000000000004, PMFLAGS_CASECONVERSION = 0x0000000000000008; struct PanelMode { const wchar_t *ColumnTypes; const wchar_t *ColumnWidths; const wchar_t * const *ColumnTitles; const wchar_t *StatusColumnTypes; const wchar_t *StatusColumnWidths; PANELMODE_FLAGS Flags; }; typedef unsigned __int64 OPENPANELINFO_FLAGS; static const /*OPENPANELINFO_FLAGS*/ uint32_t OPIF_DISABLEFILTER = 0x0000000000000001, OPIF_DISABLESORTGROUPS = 0x0000000000000002, OPIF_DISABLEHIGHLIGHTING = 0x0000000000000004, OPIF_ADDDOTS = 0x0000000000000008, OPIF_RAWSELECTION = 0x0000000000000010, OPIF_REALNAMES = 0x0000000000000020, OPIF_SHOWNAMESONLY = 0x0000000000000040, OPIF_SHOWRIGHTALIGNNAMES = 0x0000000000000080, OPIF_SHOWPRESERVECASE = 0x0000000000000100, OPIF_COMPAREFATTIME = 0x0000000000000400, OPIF_EXTERNALGET = 0x0000000000000800, OPIF_EXTERNALPUT = 0x0000000000001000, OPIF_EXTERNALDELETE = 0x0000000000002000, OPIF_EXTERNALMKDIR = 0x0000000000004000, OPIF_USEATTRHIGHLIGHTING = 0x0000000000008000, OPIF_USECRC32 = 0x0000000000010000, OPIF_USEFREESIZE = 0x0000000000020000, OPIF_SHORTCUT = 0x0000000000040000, OPIF_NONE = 0; struct KeyBarLabel { struct FarKey Key; const wchar_t *Text; const wchar_t *LongText; }; struct KeyBarTitles { size_t CountLabels; struct KeyBarLabel *Labels; }; struct FarSetKeyBarTitles { size_t StructSize; struct KeyBarTitles *Titles; }; typedef unsigned __int64 OPERATION_MODES; static const /*OPERATION_MODES*/ uint32_t OPM_SILENT =0x0000000000000001, OPM_FIND =0x0000000000000002, OPM_VIEW =0x0000000000000004, OPM_EDIT =0x0000000000000008, OPM_TOPLEVEL =0x0000000000000010, OPM_DESCR =0x0000000000000020, OPM_QUICKVIEW =0x0000000000000040, OPM_PGDN =0x0000000000000080, OPM_COMMANDS =0x0000000000000100, OPM_NONE =0; struct OpenPanelInfo { size_t StructSize; HANDLE hPanel; OPENPANELINFO_FLAGS Flags; const wchar_t *HostFile; const wchar_t *CurDir; const wchar_t *Format; const wchar_t *PanelTitle; const struct InfoPanelLine *InfoLines; size_t InfoLinesNumber; const wchar_t * const *DescrFiles; size_t DescrFilesNumber; const struct PanelMode *PanelModesArray; size_t PanelModesNumber; intptr_t StartPanelMode; enum OPENPANELINFO_SORTMODES StartSortMode; intptr_t StartSortOrder; const struct KeyBarTitles *KeyBar; const wchar_t *ShortcutData; unsigned __int64 FreeSize; struct UserDataItem UserData; void* Instance; }; struct AnalyseInfo { size_t StructSize; const wchar_t *FileName; void *Buffer; size_t BufferSize; OPERATION_MODES OpMode; void* Instance; }; struct OpenAnalyseInfo { size_t StructSize; struct AnalyseInfo* Info; HANDLE Handle; }; struct OpenMacroInfo { size_t StructSize; size_t Count; struct FarMacroValue *Values; }; typedef unsigned __int64 FAROPENSHORTCUTFLAGS; static const /*FAROPENSHORTCUTFLAGS*/ uint32_t FOSF_ACTIVE = 0x0000000000000001, FOSF_NONE = 0; struct OpenShortcutInfo { size_t StructSize; const wchar_t *HostFile; const wchar_t *ShortcutData; FAROPENSHORTCUTFLAGS Flags; }; struct OpenCommandLineInfo { size_t StructSize; const wchar_t *CommandLine; }; enum OPENFROM { OPEN_LEFTDISKMENU = 0, OPEN_PLUGINSMENU = 1, OPEN_FINDLIST = 2, OPEN_SHORTCUT = 3, OPEN_COMMANDLINE = 4, OPEN_EDITOR = 5, OPEN_VIEWER = 6, OPEN_FILEPANEL = 7, OPEN_DIALOG = 8, OPEN_ANALYSE = 9, OPEN_RIGHTDISKMENU = 10, OPEN_FROMMACRO = 11, OPEN_LUAMACRO = 100, }; enum MACROCALLTYPE { MCT_MACROINIT = 0, MCT_MACROSTEP = 1, MCT_MACROFINAL = 2, MCT_MACROPARSE = 3, MCT_LOADMACROS = 4, MCT_ENUMMACROS = 5, MCT_WRITEMACROS = 6, MCT_GETMACRO = 7, MCT_PROCESSMACRO = 8, MCT_DELMACRO = 9, MCT_RUNSTARTMACRO = 10, MCT_EXECSTRING = 11, MCT_PANELSORT = 12, MCT_GETCUSTOMSORTMODES = 13, }; enum MACROPLUGINRETURNTYPE { MPRT_NORMALFINISH = 0, MPRT_ERRORFINISH = 1, MPRT_ERRORPARSE = 2, MPRT_KEYS = 3, MPRT_PRINT = 4, MPRT_PLUGINCALL = 5, MPRT_PLUGINMENU = 6, MPRT_PLUGINCONFIG = 7, MPRT_PLUGINCOMMAND = 8, MPRT_USERMENU = 9, }; struct OpenMacroPluginInfo { enum MACROCALLTYPE CallType; intptr_t Handle; struct FarMacroCall *Data; struct MacroPluginReturn Ret; }; enum FAR_EVENTS { FE_CHANGEVIEWMODE =0, FE_REDRAW =1, FE_IDLE =2, FE_CLOSE =3, FE_BREAK =4, FE_COMMAND =5, FE_GOTFOCUS =6, FE_KILLFOCUS =7, }; struct OpenInfo { size_t StructSize; enum OPENFROM OpenFrom; const GUID* Guid; intptr_t Data; void* Instance; }; struct SetDirectoryInfo { size_t StructSize; HANDLE hPanel; const wchar_t *Dir; intptr_t Reserved; OPERATION_MODES OpMode; struct UserDataItem UserData; void* Instance; }; struct SetFindListInfo { size_t StructSize; HANDLE hPanel; const struct PluginPanelItem *PanelItem; size_t ItemsNumber; void* Instance; }; struct PutFilesInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; BOOL Move; const wchar_t *SrcPath; OPERATION_MODES OpMode; void* Instance; }; struct ProcessHostFileInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; OPERATION_MODES OpMode; void* Instance; }; struct MakeDirectoryInfo { size_t StructSize; HANDLE hPanel; const wchar_t *Name; OPERATION_MODES OpMode; void* Instance; }; struct CompareInfo { size_t StructSize; HANDLE hPanel; const struct PluginPanelItem *Item1; const struct PluginPanelItem *Item2; enum OPENPANELINFO_SORTMODES Mode; void* Instance; }; struct GetFindDataInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; OPERATION_MODES OpMode; void* Instance; }; struct FreeFindDataInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; void* Instance; }; struct GetFilesInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; BOOL Move; const wchar_t *DestPath; OPERATION_MODES OpMode; void* Instance; }; struct DeleteFilesInfo { size_t StructSize; HANDLE hPanel; struct PluginPanelItem *PanelItem; size_t ItemsNumber; OPERATION_MODES OpMode; void* Instance; }; struct ProcessPanelInputInfo { size_t StructSize; HANDLE hPanel; INPUT_RECORD Rec; void* Instance; }; struct ProcessEditorInputInfo { size_t StructSize; INPUT_RECORD Rec; void* Instance; }; typedef unsigned __int64 PROCESSCONSOLEINPUT_FLAGS; static const /*PROCESSCONSOLEINPUT_FLAGS*/ uint32_t PCIF_FROMMAIN = 0x0000000000000001, PCIF_NONE = 0; struct ProcessConsoleInputInfo { size_t StructSize; PROCESSCONSOLEINPUT_FLAGS Flags; INPUT_RECORD Rec; void* Instance; }; struct ExitInfo { size_t StructSize; void* Instance; }; struct ProcessPanelEventInfo { size_t StructSize; intptr_t Event; void* Param; HANDLE hPanel; void* Instance; }; struct ProcessEditorEventInfo { size_t StructSize; intptr_t Event; void* Param; intptr_t EditorID; void* Instance; }; struct ProcessDialogEventInfo { size_t StructSize; intptr_t Event; struct FarDialogEvent* Param; void* Instance; }; struct ProcessSynchroEventInfo { size_t StructSize; intptr_t Event; void* Param; void* Instance; }; struct ProcessViewerEventInfo { size_t StructSize; intptr_t Event; void* Param; intptr_t ViewerID; void* Instance; }; struct ClosePanelInfo { size_t StructSize; HANDLE hPanel; void* Instance; }; struct CloseAnalyseInfo { size_t StructSize; HANDLE Handle; void* Instance; }; struct ConfigureInfo { size_t StructSize; const GUID* Guid; void* Instance; }; /*@ static const GUID FarGuid = {0x00000000, 0x0000, 0x0000, {0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00}}; */ // Exported Functions HANDLE __stdcall AnalyseW(const struct AnalyseInfo *Info); void __stdcall CloseAnalyseW(const struct CloseAnalyseInfo *Info); void __stdcall ClosePanelW(const struct ClosePanelInfo *Info); intptr_t __stdcall CompareW(const struct CompareInfo *Info); intptr_t __stdcall ConfigureW(const struct ConfigureInfo *Info); intptr_t __stdcall DeleteFilesW(const struct DeleteFilesInfo *Info); void __stdcall ExitFARW(const struct ExitInfo *Info); void __stdcall FreeFindDataW(const struct FreeFindDataInfo *Info); intptr_t __stdcall GetFilesW(struct GetFilesInfo *Info); intptr_t __stdcall GetFindDataW(struct GetFindDataInfo *Info); void __stdcall GetGlobalInfoW(struct GlobalInfo *Info); void __stdcall GetOpenPanelInfoW(struct OpenPanelInfo *Info); void __stdcall GetPluginInfoW(struct PluginInfo *Info); intptr_t __stdcall MakeDirectoryW(struct MakeDirectoryInfo *Info); HANDLE __stdcall OpenW(const struct OpenInfo *Info); intptr_t __stdcall ProcessDialogEventW(const struct ProcessDialogEventInfo *Info); intptr_t __stdcall ProcessEditorEventW(const struct ProcessEditorEventInfo *Info); intptr_t __stdcall ProcessEditorInputW(const struct ProcessEditorInputInfo *Info); intptr_t __stdcall ProcessPanelEventW(const struct ProcessPanelEventInfo *Info); intptr_t __stdcall ProcessHostFileW(const struct ProcessHostFileInfo *Info); intptr_t __stdcall ProcessPanelInputW(const struct ProcessPanelInputInfo *Info); intptr_t __stdcall ProcessConsoleInputW(struct ProcessConsoleInputInfo *Info); intptr_t __stdcall ProcessSynchroEventW(const struct ProcessSynchroEventInfo *Info); intptr_t __stdcall ProcessViewerEventW(const struct ProcessViewerEventInfo *Info); intptr_t __stdcall PutFilesW(const struct PutFilesInfo *Info); intptr_t __stdcall SetDirectoryW(const struct SetDirectoryInfo *Info); intptr_t __stdcall SetFindListW(const struct SetFindListInfo *Info); void __stdcall SetStartupInfoW(const struct PluginStartupInfo *Info); ]]