Jump to content

Hole in the black


Recommended Posts

I sometime watch movies using my computer and so I made this little script for making the screen black all around the movie window.

To start: Start it, start the movie, press CTRL.

To finish: click in the black, press ALT-F4.

#include <GUIConstants.au3>
Opt ('MustDeclareVars', 1)
Opt ('TrayIconHide', 1)

Local $NullGifFile = "47494638396105000500830000000000800000008000808000000080" & _
      "800080008080C0C0C0808080FF000000FF00FFFF000000FFFF00FF00" & _

Local $Style = $WS_POPUP
Local $hHandle, $aCCC

GUISetBkColor(0, GUICreate('', @DesktopWidth, @DesktopHeight, 0, 0, $Style, $ExStyle, 0))

FileDelete(@ScriptDir & '\null.gif')
_CreateFile($NullGifFile, @ScriptDir & '\null.gif')

If FileExists(@ScriptDir & '\null.gif') Then
      $hHandle = _WaitTheWindow()
      $aCCC = WinGetPos($hHandle)
   Until Not @error
   GUICtrlCreatePic('null.gif', $aCCC[0], $aCCC[1], $aCCC[2], $aCCC[3], -1, -1)
   FileDelete(@ScriptDir & '\null.gif')
   While GUIGetMsg() <> $GUI_EVENT_CLOSE

Func _WaitTheWindow()
   While _IsPressed(0x11) = 0
      ToolTip('Activate the window and press "Ctrl".')
   Return WinGetHandle('')
EndFunc  ;==>_WaitTheWindow

Func _IsPressed($hexKey)
   Local $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey)
   If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then
      Return 1
      Return 0
EndFunc  ;==>_IsPressed

Func _CreateFile($sHexData, $sFileName)
   Local $dllKernel32 = DllOpen("kernel32.dll")
   Local $nStrSize = StringLen($sHexData)
   Local $p = DllStructCreate ("ubyte[" & $nStrSize / 2 & "]")
   For $i = 1 To $nStrSize Step 2
      DllStructSetData ($p, 1, Dec(StringMid($sHexData, $i, 2)) , ($i + 1) / 2)
   Local $ret = DllCall($dllKernel32, "int", "CreateFile", _
         "str", $sFileName, _
         "int", 0x40000000, _
         "int", 1, _
         "ptr", 0, _
         "int", 4, _
         "int", 0x80, _
         "ptr", 0)
   DllCall($dllKernel32, "int", "WriteFile", _
         "int", $ret[0], _
         "ptr", DllStructGetPtr ($p), _
         "int", $nStrSize / 2, _
         "int_ptr", 0, _
         "ptr", 0)
   DllCall($dllKernel32, "int", "CloseHandle", "int", $ret[0])
EndFunc  ;==>_CreateFile
Edited by ezzetabi
Link to comment
Share on other sites

what is $HoleFile? what is all that Chr stuff?

I think this is should be some GIF file, but it is created wrong for me.

Anyway, not surely understand script purpose - isn't any player can expand movie to fullscren? Or you watch movies in small window? :)

Link to comment
Share on other sites

I watch movies in a small window. I can't focus to the whole screen surface as I like. Secondly, some movies fullscreen become too pixelated.

Edit: Since LazyCat have some problems with the creationg of the gif file I changed the script, put the script and the attached .gif file in the same folder.

Edited by ezzetabi
Link to comment
Share on other sites

Yes, now it works :)

Here a simple function that should correctly write gif:

Func _CreateNullGif()
    Local $sHexData = "47494638396105000500830000000000800000008000808000000080" &_
                      "800080008080C0C0C0808080FF000000FF00FFFF000000FFFF00FF00" & _
    Local $nStrSize = StringLen($sHexData)
    Local $p = DllStructCreate("byte[" & $nStrSize/2 & "]")
    For $i = 1 To $nStrSize Step 2
        DllStructSetData($p, 1, Dec(StringMid($sHexData, $i, 2)), ($i+1)/2)
    Local $ret  = DllCall("kernel32.dll","int","CreateFile",_



Edit: wordwrap

Edited by Lazycat
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...