2009년 5월 20일 수요일

CMD 창을 투명하게

 

 

제작자 홈 : http://komalo.deviantart.com/

 

 

 

 

 

 

오늘은 포스팅할 내용이 없어서 이거라도 올려봅니다.

비스타랑 윈도우 7에서만 작동합니다.

Autoit 스크립트로 만들었기 때문에 간혹 백신에서 오진할 수도 있겠죠?

실행해주시고 커맨드창 띄우면 투명하게 됩니다.

물론 에어로는 켜진 상태여야겠죠.

 

스크립트가 이렇다네요. 물론 저는 봐도 모릅니다. ^^

 

 

#include <Misc.au3>
#include <Process.au3>
#Include <WinAPI.au3>
Opt("TrayMenuMode",1)

Global Const $HSHELL_WINDOWCREATED = 1
Global Const $HSHELL_WINDOWACTIVATED = 4;
Global Const $HWND_MESSAGE  = -3
Global $bHook = 1

$hGui = GUICreate("", 10, 10, -1, 0,-1,-1,$HWND_MESSAGE)
GUIRegisterMsg(_WinAPI_RegisterWindowMessage("SHELLHOOK"), "HookProc")
ShellHookWindow($hGui, $bHook)
ClearMemory()
$About = TrayCreateItem("About")
TrayCreateItem("")
$Exit = TrayCreateItem("Exit")

While 1
 Switch TrayGetMsg()
  Case $About
   MsgBox("","","Glass CMD for Windows Vista/Seven By Komalo - komalo.deviantart.com")
  Case $Exit
   Exit
 EndSwitch
WEnd

Func HookProc($hWnd, $Msg, $wParam, $lParam)
 Switch $wParam
  Case $HSHELL_WINDOWCREATED
  If _ProcessGetName(WinGetProcess($lParam)) = "cmd.exe" Then
   EnableBlurBehind($lParam)
   If @error Then MsgBox(16, "Glass CMD", "You are not running Vista!")
   ClearMemory()
  EndIf
 Case $HSHELL_WINDOWACTIVATED
  ClearMemory()
 EndSwitch
EndFunc

Func ShellHookWindow($hWnd, $bFlag)
    Local $sFunc = 'DeregisterShellHookWindow'
    If $bFlag Then $sFunc = 'RegisterShellHookWindow'
    Local $aRet = DllCall('user32.dll', 'int', $sFunc, 'hwnd', $hWnd)
    Return $aRet[0]
EndFunc

Func EnableBlurBehind($hWnd)
 Const $DWM_BB_ENABLE = 0x00000001
 $Struct = DllStructCreate("dword;int;ptr;int")
 DllStructSetData($Struct,1,$DWM_BB_ENABLE)
 DllStructSetData($Struct,2,"1")
 DllStructSetData($Struct,4,"1")
 DllCall("dwmapi.dll","int","DwmEnableBlurBehindWindow","hwnd",$hWnd,"ptr",DllStructGetPtr($Struct))
EndFunc

Func ClearMemory()
 Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
 Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory

 

 

댓글 6개:

  1. 오 애인이신듯 위에분 스 *^^*

    답글삭제
  2. @파란날개천사 - 2009/05/20 23:42
    아뇨 웬지 저분 티스토리때 Alpsgirl님 같습니다. 맨날 똑같은 댓글로 오해의 소지를 불러일으키시는 ㅠㅠ

    답글삭제
  3. 위에 스 저분 혹시 내블로그에 잊을만하면 오시던



    녞쓰야 사랑한다. 이사람인가 ㅡ_-);;

    답글삭제
  4. 오 저도 적용해 보았어요 >_<

    답글삭제
  5. 아..

    DwmEnableBlurBehindWindow() 로 하는 거였군요.

    차라리 스크립트 보는게 더 도움이 되겠네요.

    감사합니다. ㅎㅎ

    답글삭제