Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ
Translator.js - for those who do not use transparency we can remove black flicker.

Code: Select all

                          0x00080000,      //dwExStyle: WS_EX_LAYERED
to

Code: Select all

                          0,               //dwExStyle

Code: Select all

function SetOpaqueLevel(hWnd, nLevel)
{
  var lpBuf;

  if (nLevel < 0)
  {
    lpBuf  = AkelPad.MemAlloc(1);
    if (oSys.Call("user32::GetLayeredWindowAttributes", hWnd, 0, lpBuf, 0))
    {
      nOpaque = AkelPad.MemRead(lpBuf, 5 /*DT_BYTE*/);
      nOpaque += (nLevel == -1) ? 20 : -20;
    }
    AkelPad.MemFree(lpBuf);
  }

  if (nOpaque > 255)
    nOpaque = 255;
  else if (nOpaque < 55)
    nOpaque = 55;

  oSys.Call("user32::SetLayeredWindowAttributes", hWnd, 0, nOpaque, 2 /*LWA_ALPHA*/);
}
to

Code: Select all

function SetOpaqueLevel(hWnd, nLevel)
{
  var lpBuf;
  var dwStyle;

  if (nLevel < 0)
  {
    lpBuf  = AkelPad.MemAlloc(1);
    if (oSys.Call("user32::GetLayeredWindowAttributes", hWnd, 0, lpBuf, 0))
      nOpaque = AkelPad.MemRead(lpBuf, 5 /*DT_BYTE*/);
    else
      nOpaque = 255;
    nOpaque += (nLevel == -1) ? 20 : -20;
    AkelPad.MemFree(lpBuf);
  }

  if (nOpaque > 255)
    nOpaque = 255;
  else if (nOpaque < 55)
    nOpaque = 55;

  //WS_EX_LAYERED style
  dwStyle=oSys.Call("user32::GetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/);

  if (nOpaque == 255)
  {
    if (dwStyle & 0x00080000 /*WS_EX_LAYERED*/)
    {
      dwStyle&=~0x00080000 /*WS_EX_LAYERED*/;
      oSys.Call("user32::SetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/, dwStyle);
    }
  }
  else
  {
    if (!(dwStyle & 0x00080000 /*WS_EX_LAYERED*/))
    {
      dwStyle|=0x00080000 /*WS_EX_LAYERED*/;
      oSys.Call("user32::SetWindowLong" + _TCHAR, hWnd, -20 /*GWL_EXSTYLE*/, dwStyle);
    }
  }
  if (dwStyle & 0x00080000 /*WS_EX_LAYERED*/)
    oSys.Call("user32::SetLayeredWindowAttributes", hWnd, 0, nOpaque, 2 /*LWA_ALPHA*/);
}

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

converter.js: Added recode converter (works like built-in recode command).
getHash.js
crypt.js

All:
Better title for slow operations warning.
Now you can use script as module:

Code: Select all

AkelPad.Include("..\\converter.js");
WScript.Echo(
	convertToUnicode(
		convertFromUnicode("бНОПНЯ", 20866),
		1251
	)
);

Code: Select all

AkelPad.Include("..\\getHash.js");
WScript.Echo(hashes.md5.get("Qwe"));

Code: Select all

AkelPad.Include("..\\crypt.js");
WScript.Echo(cryptors.aes256.encrypt("text", "pass"));

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

About Translator.js - there is must be checks in order to use SetLayeredWindowAttributes and WS_EX_LAYARED style. The problem is Windows <2000 does not have such functionality(neither style constant nor syscall).

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor wrote:Translator.js - for those who do not use transparency we can remove black flicker.
Thank you very much for your advice.
I updated the script. I did a little differently.
Check, is it now does not flickers?
Translator.js
Last edited by KDJ on Wed May 25, 2011 7:30 pm, edited 1 time in total.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre wrote:About Translator.js - there is must be checks in order to use SetLayeredWindowAttributes and WS_EX_LAYARED style. The problem is Windows <2000 does not have such functionality(neither style constant nor syscall).
Does anyone still uses the old Windows?

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

KDJ
It's better to use RichEdit instead of edit in Translator.js (because of better Ctrl+Left/Right handling and Ctrl+A support :)).
See example in converter.js.
You should also handle WM_CONTEXTMENU and implement all menu commands.
And in this case MENU_POPUP_EDIT is better:

Code: Select all

var hPopupEdit = oSys.Call("user32::GetSubMenu", hPopupMenu, 0 /*MENU_POPUP_EDIT*/);
And yes, window should be resizeable. :)
In addition I request option to invert Enter and Ctrl+Enter behavior.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

crypt.js
Fixed: hotkeys Ctrl+Z and Ctrl+Shift+Z worked in input fields.
Fixed typo in description – thanks to VladSh.

jsBeautifier.js
Added -action argument.
Now you can use script as module:

Code: Select all

AkelPad.Include("..\\jsBeautifier.js");
WScript.Echo(jsBeautify("function f(){alert(0);}"));

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher
Вопросец.. чем отличается кнопка "Применить" от "Ok"? Вроде делается одно и то же...

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh
Кнопка "Применить" не закрывает диалог.
Если кнопка не нужна, можно запускать с -modal=true.

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Infocatcher
Неочевидно; спасибо за пояснения.

Доп. Я как первый раз запустил скрипт (не выделив текст), то не понял, как он работает - будет шифровать весь файл или выделенный текст; может быть вверху какое-нибудь пояснение поставить? Например в строке заголовка:
- cript.js - шифрование выделенного текста
- cript.js - шифрование всего файла
ну или может в самом верху лэйбл добавить..

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

VladSh
Неочевидно
Возможно, но другое название для этой кнопки не придумалось.
По крайней мере, с Ok и Отмена должно быть более или менее понятно. :)
Я как первый раз запустил скрипт (не выделив текст), то не понял, как он работает - будет шифровать весь файл или выделенный текст
С -onlySelected=true будет ругаться:
Crypt.js
---------------------------
Отсутствует выделенный текст!
---------------------------
ОК
Насчет заголовка не знаю, надо кратко сформулировать два реализованных варианта – выделенный или весь текст и только выделенный текст (-onlySelected=true). А там и так может быть написано, например, «Crypt.js :: AES-256» при -cryptor="AES256".

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Translator.js
Added: ability to resize the window.
Last edited by KDJ on Wed May 25, 2011 7:32 pm, edited 1 time in total.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Infocatcher wrote:In addition I request option to invert Enter and Ctrl+Enter behavior.
I don't know how to do that when you press Ctrl+Enter in the edit box does not insert a new line. :cry:

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ wrote:Check, is it now does not flickers?
Translator.js
It is OK now.

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Вопрос к гуру скриптописания :) Умеет ли JScript или WShell оперировать с двоичными данными (байтами), прочитанными из двоичного (бинарного) файла? И возможно ли, собственно, прочитать двоичный файл в духе var binaryArray = oFile.GetBytes() ?
Locked