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