Translator.js - for those who do not use transparency we can remove black flicker.
Code: Select all
                          0x00080000,      //dwExStyle: WS_EX_LAYEREDCode: Select all
                          0,               //dwExStyleCode: 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*/);
}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*/);
} ).
).