找回密码
 加入
搜索
查看: 11170|回复: 20

[GUI管理] 如何把GUI做成这样win7的效果【请见图】

 火.. [复制链接]
发表于 2011-4-23 16:39:10 | 显示全部楼层 |阅读模式
如题,见图,如何做得?


我觉得应该是调用了API

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-4-23 17:47:46 | 显示全部楼层
使用皮肤文件
发表于 2011-4-23 18:45:45 | 显示全部楼层
楼主,什么叫API?
发表于 2011-4-23 18:49:18 | 显示全部楼层
应该是皮肤文件,简单方便
 楼主| 发表于 2011-4-23 22:14:02 | 显示全部楼层
本帖最后由 zhhsh 于 2011-4-23 22:16 编辑

没有使用皮肤。。。

而且只有win7 可用
发表于 2011-4-23 22:17:49 | 显示全部楼层
 楼主| 发表于 2011-4-24 11:12:09 | 显示全部楼层
我反编译了源码,得到这样,可惜的是代码已经被迷惑了。
因此我想找到原始代码.
  1. Global $A4A, $A4B, $A4C, $A4D, $A4E, $A4F
  2. Global $A49[16][55535 + 2 + 1]
  3. _3S_()
  4. Func _3S_()
  5.         If @OSBuild < 6500 Then
  6.                 MsgBox(32, 'oops', 'Sorry VHD Features are only available in Windows 7.')
  7.                 Exit
  8.         EndIf
  9.         Local $AM6, $AM7
  10.         $AM6 = GUICreate('Create, Attach and Detach Virtual Hard Disk', 400, 200)
  11.         GUISetIcon(@ScriptFullPath, 207)
  12.         $A4A = _42_($AM6, 'Create', 10, 10, 350, 50, 14)
  13.         $A4B = _42_($AM6, 'Attach', 10, 60, 350, 50, 14)
  14.         $A4C = _42_($AM6, 'Detach', 10, 110, 350, 50, 14)
  15.         _43_($A4A, 'Create a partitioned VHD ready for setup')
  16.         _43_($A4B, 'Attach a existing VHD to system')
  17.         _43_($A4C, 'Detach a attached VHD from system')
  18.         $AM7 = GUICtrlCreateLabel('', 10, 150, 0, 0)
  19.         GUIRegisterMsg(273, '_3t_')
  20.         GUISetState()
  21.         ControlFocus($AM6, '', $AM7)
  22.         While 1
  23.                 Switch GUIGetMsg()
  24.                         Case -3
  25.                                 ExitLoop
  26.                 EndSwitch
  27.                 If $A4D Or $A4E Or $A4F = 1 Then ExitLoop
  28.         WEnd
  29.         If $A4D = 1 Then
  30.                 GUIDelete($AM6)
  31.                 _3U_()
  32.         ElseIf $A4E = 1 Then
  33.                 GUIDelete($AM6)
  34.                 _3W_()
  35.         ElseIf $A4F = 1 Then
  36.                 GUIDelete($AM6)
  37.                 _3V_()
  38.         EndIf
  39.         Exit
  40. EndFunc   ;==>_3S_
  41. Func _3T_($AIA, $AIV, $AIC, $AID)
  42.         #forceref $aia, $aiv
  43.         Local $AM8 = BitShift($AIC, 16)
  44.         Local $AM9 = BitAND($AIC, 65535)
  45.         Local $AMA = $AID
  46.         Local $ADE = ''
  47.         Switch $AMA
  48.                 Case $A4A
  49.                         Switch $AM8
  50.                                 Case 0
  51.                                         $A4D = 1
  52.                         EndSwitch
  53.                 Case $A4B
  54.                         Switch $AM8
  55.                                 Case 0
  56.                                         $A4E = 1
  57.                         EndSwitch
  58.                 Case $A4C
  59.                         Switch $AM8
  60.                                 Case 0
  61.                                         $A4F = 1
  62.                         EndSwitch
  63.         EndSwitch
  64.         Return 'GUI_RUNDEFMSG'
  65. EndFunc   ;==>_3T_
  66. Func _3U_()
  67.         $AMB = GUICreate('Create and Attach Virtual Hard Disk', 380, 340)
  68.         GUISetState($AMB)
  69.         GUISetIcon(@ScriptFullPath, 207)
  70.         GUISetState()
  71.         GUICtrlCreateLabel('Specify the virtual hard disk location on the machine.', 10, 10)
  72.         GUICtrlCreateLabel('&Location:', 10, 40)
  73.         $AMC = GUICtrlCreateInput('', 10, 60, 275)
  74.         $AMD = GUICtrlCreateButton('&Browse...', 295, 58, 80)
  75.         GUICtrlCreateLabel('Virtual hard disk &size:', 10, 100)
  76.         $AME = GUICtrlCreateInput('25', 240, 100, 80)
  77.         $AMF = GUICtrlCreateCombo('MB', 327, 100, 42, -1, 3)
  78.         GUICtrlSetData(-1, 'GB', 'GB')
  79.         GUICtrlCreateGroup('Virtual hard disk format', 10, 130, 360, 163)
  80.         $AMG = GUICtrlCreateRadio('&Dynamically expanding', 30, 145, 200, 20)
  81.         GUICtrlCreateLabel('The size of this virtual hard disk expands to a fixed maximum size as data is saved to it.  The disk size does not compact automatically when data is deleted.', 30, 165, 330, 50)
  82.         $AMH = GUICtrlCreateRadio('&Fixed size (Recommended)', 30, 210, 200, 20)
  83.         GUICtrlCreateLabel('The virtual hard disk uses a fixed amount of space regardless of the amount of the data stored on it.  Its default size is the maximum amount of space available on your physical hard disk.', 30, 230, 330, 50)
  84.         GUICtrlSetState($AMH, 1)
  85.         $AMI = GUICtrlCreateButton('Cancel', 290, 310, 80)
  86.         $AMJ = GUICtrlCreateButton('OK', 205, 310, 80)
  87.         While 1
  88.                 Sleep(10)
  89.                 $AIV = GUIGetMsg()
  90.                 Switch $AIV
  91.                         Case -3, $AMI
  92.                                 GUIDelete($AMB)
  93.                                 Return
  94.                         Case $AMD
  95.                                 Local $ADY = FileSaveDialog('Choose a name for the new Vdisk file', '', 'Virtual Hard Disk (*.vhd)', 18, 'Windows7.vhd')
  96.                                 If Not @error Then GUICtrlSetData($AMC, $ADY)
  97.                         Case $AMJ
  98.                                 $AMK = GUICtrlRead($AMC)
  99.                                 $AML = GUICtrlRead($AME)
  100.                                 $AMM = ''
  101.                                 $AMN = 'Win7 VHD'
  102.                                 If Not StringMid($AMK, 2, 1) = ':' Then
  103.                                         MsgBox(48, 'Error', 'No VHD file location selected.')
  104.                                         ContinueCase
  105.                                 EndIf
  106.                                 If StringRegExp($AML, '[^0-9]') Or StringLen($AML) = 0 Then
  107.                                         MsgBox(48, 'Error', 'Invalid Size type, please use only digets')
  108.                                         ContinueCase
  109.                                 EndIf
  110.                                 $AMO = GUICtrlRead($AMF)
  111.                                 If $AMO = 'GB' Then
  112.                                         $AML = $AML * 1024
  113.                                 EndIf
  114.                                 $AMP = 'expandable'
  115.                                 If BitAND(GUICtrlRead($AMH), 1) Then $AMP = 'fixed'
  116.                                 $AED = DriveGetDrive('all')
  117.                                 $AHO = 'z:'
  118.                                 For $AE1 = Asc('d') To Asc('z')
  119.                                         $AMQ = 0
  120.                                         For $A79 = 1 To $AED[0]
  121.                                                 IF (Chr($AE1) & ':') = $AED[$A79] Then $AMQ = 1
  122.                                         Next
  123.                                         If $AMQ = 0 Then
  124.                                                 $AHO = Chr($AE1) & ':'
  125.                                                 ExitLoop
  126.                                         EndIf
  127.                                 Next
  128.                                 GUIDelete($AMB)
  129.                                 _3X_($AMK, $AML, $AMP, $AHO, $AMN)
  130.                                 Return
  131.                 EndSwitch
  132.         WEnd
  133. EndFunc   ;==>_3U_
  134. Func _3V_()
  135.         Local $ADY = FileOpenDialog('Select Vdisk file to detach', '', 'Virtual Hard Disk (*.vhd)')
  136.         If @error Then Exit
  137.         Local $AMR = @TempDir & '\' & Random(1000, 9999, 1) & '_diskpart.txt'
  138.         $AIJ = FileOpen($AMR, 2)
  139.         FileWrite($AIJ, 'select vdisk file="' & $ADY & '"' & @CRLF & 'detach vdisk' & @CRLF)
  140.         FileClose($AIJ)
  141.         $A52 = ShellExecuteWait('diskpart.exe', '/s "' & $AMR & '"')
  142.         If $A52 = 0 Then
  143.                 MsgBox(64, 'Finshed VHD', 'VHD file: ' & $ADY & ' was successfully detach')
  144.                 FileDelete($AMR)
  145.                 Return
  146.         Else
  147.                 MsgBox(16, 'Failed to detach VHD', 'An error (' & $A52 & ') occured during VHD detached')
  148.                 FileDelete($AMR)
  149.                 Return
  150.         EndIf
  151. EndFunc   ;==>_3V_
  152. Func _3W_()
  153.         Local $ADY = FileOpenDialog('Select Vdisk file to attach', '', 'Virtual Hard Disk (*.vhd)')
  154.         If @error Then Exit
  155.         Local $AMR = @TempDir & '\' & Random(1000, 9999, 1) & '_diskpart.txt'
  156.         $AIJ = FileOpen($AMR, 2)
  157.         FileWrite($AIJ, 'select vdisk file="' & $ADY & '"' & @CRLF & 'attach vdisk' & @CRLF)
  158.         FileClose($AIJ)
  159.         $A52 = ShellExecuteWait('diskpart.exe', '/s "' & $AMR & '"')
  160.         If $A52 = 0 Then
  161.                 MsgBox(64, 'Finshed VHD', 'VHD file: ' & $ADY & ' was successfully attached')
  162.                 FileDelete($AMR)
  163.                 Return
  164.         Else
  165.                 MsgBox(16, 'Failed to attach VHD', 'An error (' & $A52 & ') occured during VHD attached')
  166.                 FileDelete($AMR)
  167.                 Return
  168.         EndIf
  169. EndFunc   ;==>_3W_
  170. Func _3X_($AMK, $AML, $AMP, $AHO, $AMN)
  171.         Local $AMR = @TempDir & '\' & Random(1000, 9999, 1) & '_diskpart.txt'
  172.         $AIJ = FileOpen($AMR, 2)
  173.         FileWrite($AIJ, 'create vdisk file="' & $AMK & '" maximum=' & $AML & ' type=' & $AMP & @CRLF & 'select vdisk file="' & $AMK & '"' & @CRLF & 'attach vdisk' & @CRLF & 'create partition primary' & @CRLF & 'format quick label="' & $AMN & '"' & @CRLF & 'assign letter=' & $AHO & @CRLF)
  174.         FileClose($AIJ)
  175.         $A52 = ShellExecuteWait('diskpart.exe', '/s "' & $AMR & '"')
  176.         If $A52 = 0 Then
  177.                 MsgBox(64, 'Finshed VHD', 'VHD file: ' & $AMK & ' was successfully created.')
  178.                 FileDelete($AMR)
  179.                 Return
  180.         Else
  181.                 MsgBox(16, 'Failed to create VHD', 'An error (' & $A52 & ') occured during VHD creation.')
  182.                 FileDelete($AMR)
  183.                 Return
  184.         EndIf
  185. EndFunc
  186. Func _40_($ADE, $AN3 = 0, $AN4 = 0, $AN5 = False)
  187.         Local $AN6 = 'ptr', $AN7 = $ADE
  188.         If IsDllStruct($ADE) Then
  189.                 $AN7 = DllStructGetPtr($ADE)
  190.         Else
  191.                 If Not IsPtr($ADE) Then $AN6 = 'STR'
  192.         EndIf
  193.         Local $A8D = DllCall('kernel32.dll', 'int', 'MultiByteToWideChar', 'uint', $AN3, 'dword', $AN4, $AN6, $AN7, 'int', -1, 'ptr', 0, 'int', 0)
  194.         If @error Then Return SetError(@error, @extended, 0)
  195.         Local $AN8 = $A8D[0]
  196.         Local $A84 = DllStructCreate('wchar[' & $AN8 & ']')
  197.         Local $AN9 = DllStructGetPtr($A84)
  198.         $A8D = DllCall('kernel32.dll', 'int', 'MultiByteToWideChar', 'uint', $AN3, 'dword', $AN4, $AN6, $AN7, 'int', -1, 'ptr', $AN9, 'int', $AN8)
  199.         If @error Then Return SetError(@error, @extended, 0)
  200.         If $AN5 Then Return DllStructGetData($A84, 1)
  201.         Return $A84
  202. EndFunc   ;==>_40_
  203. Func _41_($AIA)
  204.         Local $ANA, $ANB = -1, $ANC = True
  205.         If Not WinExists($AIA) Then Return SetError(-1, -1, 0)
  206.         For $AND = 0 To 16 - 1
  207.                 If $A49[$AND][0] <> 0 Then
  208.                         If Not WinExists($A49[$AND][0]) Then
  209.                                 For $A4H = 0 To UBound($A49, 2) - 1
  210.                                         $A49[$AND][$A4H] = 0
  211.                                 Next
  212.                                 $A49[$AND][1] = 10000
  213.                                 $ANC = False
  214.                         EndIf
  215.                 EndIf
  216.         Next
  217.         For $AND = 0 To 16 - 1
  218.                 If $A49[$AND][0] = $AIA Then
  219.                         $ANB = $AND
  220.                         ExitLoop
  221.                 EndIf
  222.         Next
  223.         If $ANB = -1 Then
  224.                 For $AND = 0 To 16 - 1
  225.                         If $A49[$AND][0] = 0 Then
  226.                                 $A49[$AND][0] = $AIA
  227.                                 $A49[$AND][1] = 10000
  228.                                 $ANC = False
  229.                                 $ANB = $AND
  230.                                 ExitLoop
  231.                         EndIf
  232.                 Next
  233.         EndIf
  234.         If $ANB = -1 And $ANC Then Return SetError(16, 0, 0)
  235.         If $A49[$ANB][1] = 10000 + 55535 Then
  236.                 For $ANE = 2 To UBound($A49, 2) - 1
  237.                         If $A49[$ANB][$ANE] = 0 Then
  238.                                 $ANA = ($ANE - 2) + 10000
  239.                                 $A49[$ANB][$ANE] = $ANA
  240.                                 Return $ANA
  241.                         EndIf
  242.                 Next
  243.                 Return SetError(-1, 55535, 0)
  244.         EndIf
  245.         $ANA = $A49[$ANB][1]
  246.         $A49[$ANB][1] += 1
  247.         $A49[$ANB][($ANA - 10000) + 2] = $ANA
  248.         Return $ANA
  249. EndFunc   ;==>_41_
  250. Func _42_($AIA, $ADE, $AMW, $AMX, $AD9, $ADA, $AMV = -1, $AMS = -1)
  251.         If Not IsHWnd($AIA) Then
  252.                 Return SetError(1, 0, 0)
  253.         EndIf
  254.         If Not IsString($ADE) Then
  255.                 Return SetError(2, 0, 0)
  256.         EndIf
  257.         Local $ANF = BitOR(65536, 268435456, 1073741824, 16384)
  258.         If $AMV = -1 Then
  259.                 $AMV = $ANF
  260.         Else
  261.                 $AMV = BitOR($AMV, $ANF)
  262.         EndIf
  263.         If $AMS = -1 Then $AMS = 0
  264.         Local $ANA = _41_($AIA)
  265.         If @error Then Return SetError(@error, @extended, 0)
  266.         Local $ANG = _3Y_($AMS, 'Button', $ADE, $AMV, $AMW, $AMX, $AD9, $ADA, $AIA, $ANA)
  267.         _2G_($ANG, 48, _3__(17), True)
  268.         Return $ANG
  269. EndFunc   ;==>_42_
  270. Func _43_($AIA, $ANH)
  271.         If Not IsHWnd($AIA) Then $AIA = GUICtrlGetHandle($AIA)
  272.         Local $ANI = _40_($ANH)
  273.         Return _2G_($AIA, 5641, 0, DllStructGetPtr($ANI)) <> 0
  274. EndFunc   ;==>_43_
  275. Func _3Y_($AMS, $AMT, $AMU, $AMV, $AMW, $AMX, $AD9, $ADA, $AMY, $AMZ = 0, $A7Q = 0, $AM_ = 0)
  276.         If $A7Q = 0 Then $A7Q = _3Z_('')
  277.         Local $A8D = DllCall('user32.dll', 'hwnd', 'CreateWindowExW', 'dword', $AMS, 'wstr', $AMT, 'wstr', $AMU, 'dword', $AMV, 'int', $AMW, 'int', $AMX, 'int', $AD9, 'int', $ADA, 'hwnd', $AMY, 'handle', $AMZ, 'handle', $A7Q, 'ptr', $AM_)
  278.         If @error Then Return SetError(@error, @extended, 0)
  279.         Return $A8D[0]
  280. EndFunc   ;==>_3Y_
  281. Func _2G_($AIA, $AIB, $AIC = 0, $AID = 0, $AIE = 0, $AIF = 'wparam', $AIG = 'lparam', $AIH = 'lparam')
  282.         Local $A8D = DllCall('user32.dll', $AIH, 'SendMessage', 'hwnd', $AIA, 'int', $AIB, $AIF, $AIC, $AIG, $AID)
  283.         If @error Then Return SetError(@error, @extended, '')
  284.         If $AIE >= 0 And $AIE <= 4 Then Return $A8D[$AIE]
  285.         Return $A8D
  286. EndFunc   ;==>_2G_
  287. Func _3__($AN2)
  288.         Local $A8D = DllCall('gdi32.dll', 'handle', 'GetStockObject', 'int', $AN2)
  289.         If @error Then Return SetError(@error, @extended, 0)
  290.         Return $A8D[0]
  291. EndFunc   ;==>_3__
  292. Func _3Z_($AN0)
  293.         Local $AN1 = 'wstr'
  294.         If $AN0 = '' Then
  295.                 $AN0 = 0
  296.                 $AN1 = 'ptr'
  297.         EndIf
  298.         Local $A8D = DllCall('kernel32.dll', 'handle', 'GetModuleHandleW', $AN1, $AN0)
  299.         If @error Then Return SetError(@error, @extended, 0)
  300.         Return $A8D[0]
  301. EndFunc
复制代码
发表于 2011-4-25 13:22:14 | 显示全部楼层
使用皮肤文件
发表于 2011-4-25 14:07:11 | 显示全部楼层
你是如何反编译的?
发表于 2011-4-25 15:21:57 | 显示全部楼层
呵呵  强大啊
发表于 2011-4-25 17:54:00 | 显示全部楼层
回复 3# mo_shaojie
API  : application program interface  应用程序接口.
发表于 2011-4-25 18:14:05 | 显示全部楼层
你是如何反编译的?
发表于 2011-4-25 22:01:45 | 显示全部楼层
偶也很想知道
发表于 2011-4-25 22:19:58 | 显示全部楼层
竟然可以反编译...
发表于 2011-4-25 22:22:08 | 显示全部楼层
我反编译了源码,得到这样,可惜的是代码已经被迷惑了。
因此我想找到原始代码.
zhhsh 发表于 2011-4-24 11:12


   


    你是怎么反编译的?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2026-9-21 07:40 , Processed in 0.083679 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表