梦想吧技术论坛's Archiver

似水年华 发表于 2007-4-22 06:04 PM

au3-1.75版劲舞团窗口模式脚本

[code]
#NoTrayIcon
$g_szVersion = "WinModeScript"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
If Not FileExists(@ScriptDir&"\patcher.exe") Then Exit 1
$Pid = Run(@ScriptDir&"\patcher.exe", @ScriptDir)
If @DesktopWidth < 801 OR @DesktopHeight < 601 Then Exit 2
AutoItSetOption("WinTitleMatchMode", 4)
HotKeySet("!{ENTER}", "_ChangeMode")
HotKeySet("{ESC}", "_EndScript")
$OldW = @DesktopWidth
$OldH = @DesktopHeight
$OldB = @DesktopDepth
$OldF = @DesktopRefresh
ToolTip('劲舞团1.75版窗口模式补丁' & @CR & '按 "Alt+Enter" 键切换模式', 0, 0)
Sleep(4000)
ToolTip("")
While ProcessExists($Pid) OR ProcessExists("Audition.exe")
Sleep(100)
WEnd
Func _ChangeMode()
If @DesktopWidth = 800 OR @DesktopHeight = 600 Then
  _DisplayChangeRes($OldW, $OldH, $OldB, $OldF)
  WinMove("classname=DLightClass", "", 0, 0, 800, 600)
ElseIf $OldW <> 800 OR $OldH <> 600 Then
  _DisplayChangeRes(800, 600, $OldB, $OldF)
  WinMove("classname=DLightClass", "", 0, 0, 800, 600)
EndIf
EndFunc
Func _EndScript()
Exit 0
EndFunc
Func _DisplayChangeRes($WIDTH, $HEIGHT, $BPP, $FREQ)
$DM_PELSWIDTH = 0x00080000
$DM_PELSHEIGHT = 0x00100000
$DM_BITSPERPEL = 0x00040000
$DM_DISPLAYFREQUENCY = 0x00400000
$CDS_TEST = 0x00000002
$CDS_UPDATEREGISTRY = 0x00000001
$DISP_CHANGE_RESTART = 1
$DISP_CHANGE_SUCCESSFUL = 0
$HWND_BROADCAST = 0xffff
$WM_DISPLAYCHANGE = 0x007E
$DEVMODE = DLLStructCreate ("byte[32];int[10];byte[32];int[6]")
$B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DLLStructGetPtr ($DEVMODE))
If @error Then
$B = 0
Else
$B = $B[0]
EndIf
If $B <> 0 Then
DllStructSetData ($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
DllStructSetData ($DEVMODE, 4, $WIDTH, 2)
DllStructSetData ($DEVMODE, 4, $HEIGHT, 3)
DllStructSetData ($DEVMODE, 4, $BPP, 1)
DllStructSetData ($DEVMODE, 4, $FREQ, 5)
$B = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DLLStructGetPtr ($DEVMODE), "int", $CDS_TEST)
If @error Then
$B = -1
Else
$B = $B[0]
EndIf
Select
Case $B = $DISP_CHANGE_RESTART
$DEVMODE = ""
Return 2
Case $B = $DISP_CHANGE_SUCCESSFUL
DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DLLStructGetPtr ($DEVMODE), "int", $CDS_UPDATEREGISTRY)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
"int", $BPP, "int", $HEIGHT * 2 ^ 16 + $WIDTH)
$DEVMODE = ""
Return 1
Case Else
$DEVMODE = ""
Return $B
EndSelect
EndIf
EndFunc
[/code]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.