Page 78 of 97

Posted: Sun May 15, 2011 5:48 pm
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*/);
}

Posted: Sun May 15, 2011 6:29 pm
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"));

Posted: Sun May 15, 2011 7:37 pm
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).

Posted: Sun May 15, 2011 8:52 pm
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

Posted: Sun May 15, 2011 9:07 pm
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?

Posted: Mon May 16, 2011 5:33 am
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.

Posted: Mon May 16, 2011 8:40 am
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);}"));

Posted: Mon May 16, 2011 8:56 am
by VladSh
Infocatcher
Вопросец.. чем отличается кнопка "Применить" от "Ok"? Вроде делается одно и то же...

Posted: Mon May 16, 2011 9:11 am
by Infocatcher
VladSh
Кнопка "Применить" не закрывает диалог.
Если кнопка не нужна, можно запускать с -modal=true.

Posted: Mon May 16, 2011 12:25 pm
by VladSh
Infocatcher
Неочевидно; спасибо за пояснения.

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

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

Posted: Mon May 16, 2011 8:14 pm
by KDJ
Translator.js
Added: ability to resize the window.

Posted: Mon May 16, 2011 8:55 pm
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:

Posted: Tue May 17, 2011 3:03 pm
by Instructor
KDJ wrote:Check, is it now does not flickers?
Translator.js
It is OK now.

Posted: Wed May 18, 2011 1:40 pm
by DV
Вопрос к гуру скриптописания :) Умеет ли JScript или WShell оперировать с двоичными данными (байтами), прочитанными из двоичного (бинарного) файла? И возможно ли, собственно, прочитать двоичный файл в духе var binaryArray = oFile.GetBytes() ?