Page 67 of 97

Posted: Tue Mar 08, 2011 12:53 pm
by se7h

Posted: Thu Mar 10, 2011 7:03 am
by Instructor
Infocatcher wrote:То есть если реализовать некий гипотетический контрол, не делающий прокрутку, то что в нем будет после Ctrl+Home/Ctrl+End?
Что будет можно посмотреть так:

Code: Select all

AkelPad.SendMessage(hWndEdit, 3185 /*AEM_LOCKSCROLL*/, 3 /*SB_BOTH*/, true);
AkelPad.SetSel(-1, -1);
AkelPad.SendMessage(hWndEdit, 3185 /*AEM_LOCKSCROLL*/, 3 /*SB_BOTH*/, false);

Posted: Thu Mar 10, 2011 4:36 pm
by Infocatcher
Instructor
Мне нагляднее с

Code: Select all

new ActiveXObject("WScript.shell").SendKeys("^{END}");
:)

Заодно вспомнил одну идею.
Как сохранить, а потом восстановить горизонтальную прокрутку?

Posted: Thu Mar 10, 2011 6:29 pm
by Infocatcher
Еще более тестовая: toggleComments-experimental.js
Много чего <del>сломано</del> переписано, кое-где изменена логика работы.
Реализована предварительная обработка строк перед поиском блочных комментариев.
Реализовано вырезание простых вариантов регулярных выражений в js перед поиском.

Posted: Thu Mar 10, 2011 9:02 pm
by KDJ
The following code crashes AkelPad:

Code: Select all

AkelPad.SendMessage(AkelPad.GetMainWnd(), 1178 /*AKD_WAITKEYBOARD*/, 0, 0);
Why?

Posted: Thu Mar 10, 2011 9:35 pm
by KDJ
And the following code does not work:

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3044 /*AEM_KEYDOWN*/, 0x09 /*VK_TAB*/, 0);

Posted: Fri Mar 11, 2011 3:03 pm
by Instructor
Infocatcher wrote:Как сохранить, а потом восстановить горизонтальную прокрутку?
EM_GETSCROLLPOS, EM_SETSCROLLPOS.

KDJ
AKD_WAITKEYBOARD == 1312

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 0x102 /*WM_CHAR*/, 0x09 /*VK_TAB*/, 0);
or

Code: Select all

AkelPad.SendMessage(AkelPad.GetEditWnd(), 3044 /*AEM_KEYDOWN*/, 0x09 /*VK_TAB*/, 0x4 /*AEMOD_CONTROL*/);

Posted: Fri Mar 11, 2011 3:54 pm
by Infocatcher
Instructor wrote:EM_GETSCROLLPOS, EM_SETSCROLLPOS.
Ммм...

Code: Select all

var hWndEdit = AkelPad.GetEditWnd();
var lpPoint = AkelPad.MemAlloc(8 /*sizeof(POINT)*/);
if(lpPoint) {
	AkelPad.SendMessage(hWndEdit, 1245 /*EM_GETSCROLLPOS*/, 0, lpPoint);
	WScript.Echo(AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/) + "\n" + AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/));
	AkelPad.SetSel(-1, -1);
	AkelPad.SendMessage(hWndEdit, 1246 /*EM_SETSCROLLPOS*/, 0, lpPoint);
	AkelPad.MemFree(lpPoint);
}
.
А мне почему-то казалось, что горизонтальную прокрутку при этом не восстанавливает.
Пожалуй, еще коррекция нужна, чтобы не оказалось, что текст не видно. :?

Posted: Fri Mar 11, 2011 7:35 pm
by KDJ
Instructor, thanks.
But, in your script SelNextWord.js, I have read:
AkelPad.SendMessage(hMainWnd, 1178 /*AKD_WAITKEYBOARD*/, 0, 0);

Posted: Fri Mar 11, 2011 9:46 pm
by FeyFre
KDJ
In ReplaceReplicateCharsWithOne.js in regexp second brackets are redundant. It is enough first one /(.)\1+/

PS. It seems we I answered that question simultaneously ;)

Posted: Fri Mar 11, 2011 9:55 pm
by KDJ
FeyFre
Yes, that's right. I removed this script.

Posted: Fri Mar 11, 2011 11:07 pm
by FeyFre
KDJ, no, no, do not delete it. It still can be useful for someone else.

Posted: Fri Mar 11, 2011 11:26 pm
by KDJ
FeyFre
You're right. But I can increase the functionality of the script.
I'll think about it. Thank you.

Posted: Sat Mar 12, 2011 7:48 am
by Instructor
KDJ wrote:But, in your script ...
Corrected.

Posted: Sat Mar 12, 2011 9:02 pm
by Infocatcher
runScript.js
Arguments now stored for each script.

goToLongestLine.js
Added Ctrl+PageUp and Ctrl+PageDown hotkeys – go to start/end of document.