Posted: Sun Jun 18, 2017 1:18 pm
Diamen, from JScript? Yes, it is possible to register hotkey. Look for example in history.js script in collection.
Code: Select all
var HOTKEYF_CONTROL = 0x02;
var HOTKEYF_ALT = 0x04;
function MAKEWORD(lo,hi)
{
return (lo & 0xFF) + ((hi & 0xFF)<<8);
}
var _HK_SH = MAKEWORD(0x48,HOTKEYF_ALT|HOTKEYF_CONTROL);
var g_hAkelPad = AkelPad.GetMainWnd();
var WM_USER = 0x0400;
var DT_QWORD = 2;
var DT_WORD = 4;
var AKD_DLLADD = WM_USER + 308;
function test(a){
alert(a);
}
AddFunction("test",_HK_SH,test,33)
function AddFunction(name,hk,proc,param)
{
var szof = _X64?8:4;
var func = AkelPad.MemAlloc(5*szof);
var mn = AkelPad.MemAlloc((name.length+1)*_TSIZE);
AkelPad.MemCopy(mn, name, _TSTR);
AkelPad.MemCopy(func, mn, DT_QWORD); //name
AkelPad.MemCopy(func+szof, hk, DT_WORD); //hotkey
AkelPad.MemCopy(func+2*szof, 0, DT_WORD); //FALSE
AkelPad.MemCopy(func+3*szof, proc, DT_QWORD); //proc
AkelPad.MemCopy(func+4*szof, param, DT_QWORD); //param
var res = AkelPad.SendMessage(g_hAkelPad, AKD_DLLADD, 0, func);
AkelPad.MemFree(mn);
AkelPad.MemFree(func);
return res;
}
function DelFunction(prs)
{
AkelPad.SendMessage(g_hAkelPad, AKD_DLLDELETE, 0, prs);
}Code: Select all
HK_CallBackAddr = oSys.RegisterCallback(HK_CallBack);
func_opentop = AddFunction(rott,_HK_RT,HK_CallBackAddr,CBC_OPENTOP);
func_openall = AddFunction(rota,_HK_RA,HK_CallBackAddr,CBC_OPENALL);
func_showhide = AddFunction(showhide,_HK_SH,HK_CallBackAddr,CBC_SHOWHIDE);Code: Select all
//! INITIALIZATION OF SCRIPT BUSINESS LOGIC: EACH SCRIPT DO IT DIFFERENTLY. WE - PREPARE HOTKEYS
HK_CallBackAddr = oSys.RegisterCallback(HK_CallBack);
func_opentop = AddFunction(rott,_HK_RT,HK_CallBackAddr,CBC_OPENTOP);
func_openall = AddFunction(rota,_HK_RA,HK_CallBackAddr,CBC_OPENALL);
func_showhide = AddFunction(showhide,_HK_SH,HK_CallBackAddr,CBC_SHOWHIDE);
//! HOOK AKELPAD EVENT QUEUE - THIS GIVES SCRIPT ABILITY REACT ON EVENTS
if(AkelPad.WindowSubClass( WSC_MAINPROC, AkelPadCallBack,
AKDN_OPENDOCUMENT_FINISH, // THIS IS EVENT RELATED TO BUSINESS LOGIC OF SCRIPT
AKDN_MAIN_ONFINISH, // THIS EVENT SHOULD BE HOOKED BY ALL RESIDENT SCRIPTS - FIRED WHEN AKELPAD ABOUT TO CLOSE, SO SCRIPT MUST FINISH ITSELF
AKDN_FRAME_DESTROY // THIS IS EVENT RELATED TO BUSINESS LOGIC OF SCRIPT
))
{
//! DECLARED OURSELF(SCRIPT) RESIDENT
AkelPad.ScriptNoMutex();
//! PROCESS EVENT QUEUE (SCRIPT SITS HERE UNTIL IT IS TIME TO FINISH)
AkelPad.WindowGetMessage();
//! UNHOOK EVENT QUEUE - SCRIPTS FINISHES, NOT INTRESTED IN EVENT ANYMORE
AkelPad.WindowUnsubClass( WSC_MAINPROC );
}
//! CLEANUP EVERYTHING HERE: WE UNREGISTER
DelFunction(func_opentop);
DelFunction(func_openall);
DelFunction(func_showhide);
oSys.UnregisterCallback(HK_CallBackAddr);Code: Select all
if (typeof AkelPad == "object")Code: Select all
1
2
1
2Правда ошибка всё же была: не возвращался поиск на окно редактирования программы с окна редактирования плагином. Скрипт обновил.Добавлено: SearchReplace.js - возможность использования скрипта в окнах редактирования плагинов, таких как, ContextMenu, ToolBar, Log::Output, Clipboard::Capture, HexSel::Main. >>>
Поиск текста в окне Log::Output с выводом результатов поиска в то же самое окно Log::Output в принципе может работать? У меня ни разу ничего не находил.Instructor wrote:Добавлено: SearchReplace.js - возможность использования скрипта в окнах редактирования плагинов, таких как, ContextMenu, ToolBar, Log::Output, Clipboard::Capture, HexSel::Main. >>>
Точнее, не так. Оно якобы находит, только все найденные вхождения в окне Log::Output представляют собой пустые строки!DV wrote:Поиск текста в окне Log::Output с выводом результатов поиска в то же самое окно Log::Output в принципе может работать? У меня ни разу ничего не находил.
Точнее, не так. Оно якобы находит, только все найденные вхождения в окне Log::Output представляют собой пустые строки!DV wrote:Поиск текста в окне Log::Output с выводом результатов поиска в то же самое окно Log::Output в принципе может работать? У меня ни разу ничего не находил.
Бомба! (Итеративный поиск в окне Log::Output - это круто!)Instructor wrote:SearchReplace.js v2.0