Робота з - часовою панеллю - у своєму плагіні

Причиною написання цієї статті послужив, як мені здається, найбільш поточний день спосіб вирішення проблеми додавання власним плагіном "Пошук та Заміна (S&R)" файлів на стандартну "тимчасову панель" FAR, яким я і хочу поділитися з вами.

Отже, не потрібно завантажувати за допомогою LoadLibrary стандартний плагін tmppanel.dll на згадку самому зі свого плагіна, потрібно попросити зробити це FAR, тоді точно буде відомо, що до моменту необхідності роботи з "тимчасовою панеллю" зі свого плагіна, вона буде вже завантажена в пам'ять і належним чином проініціалізована. Для цього потрібно, щоб tmppanel.dll виставлявся прапор PF_PRELOAD. У tmppanel.dll версії 1.70 build 27 (входить до релізу FAR 1.70) цей прапор не виставляється, тому я зробив усі необхідні зміни у стандартному плагіні і його версія 1.71 build 28 (шукайте на офіційному сайті) робить все, що нам потрібно.

Замість LoadLibrary ми отримуємо покажчик на завантажену "тимчасову панель" за допомогою GetModuleHandle:

Відповідно, вивантажувати нам потім також нічого вручну не потрібно.

Модуль tmppanel.dll експортує такі функції: .

Щоб додати наші файли на "тимчасову панель" потрібно отримати покажчик на цю панель за допомогою , потім викликати і, нарешті, повернути FAR'у покажчик на створену тимчасову панель. Схематично виглядатиме це ось так:

Ну, і нарешті, слід експортувати всі інші функції, які ми чіпляємо з tmppanel.dll (крім SetFindList - навіщо плодити сутності?!), Інакше користувач не зможе повноцінно працювати з "тимчасовою панеллю", відкритою шляхом виклику нашого плагіна . Код функцій, що експортуються, найпростіший: