Kết quả 1 đến 10 của 10
-
02-09-16, 05:01 PM #1
[SHARE] Cách làm một Autoupdate bằng Autoit
Cái này mình cũng sưu tâm nên k rõ tường tận !! mình có chú thích bên trong code những thứ hiểu được !! nêu nếu ai thấy có thể lấy đc thì lấy ! không tiếp gạch đá nhé
Yêu cầu :
+ Phận mềm Autoit
+ Photoshop
Chỉ tưng đó thôi !! trong hình mình cũng có từng này file thôi :
[Only registered and activated users can see links. ]
còn đây là code :
PHP Code:#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <ProgressConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <IE.au3>
; Mấy dòng trên là khai báo thư viện ^_^ không nói chắc cũng biết
Opt("TrayAutoPause", 0) ; Tắt chế độ auto pause khi nhấn chuột vào icon ở chỗ dồng hồ
Opt("TrayMenuMode", 1) ; Tắt menu chuột phải ở icon
; Khai báo và khở động giao diện
Global $hGUI, $hImage, $hGraphic, $hImage
Global Const $SC_DRAGMOVE = 0xF012
_GDIPlus_Startup()
; Load PNG image chỗ này là lấy cái hình làm giao diện nè
$hImage = _GDIPlus_ImageLoadFromFile("gui.dat")
$iWidth = _GDIPlus_ImageGetWidth($hImage)
$iHeight = _GDIPlus_ImageGetHeight($hImage)
; Create GUI -> lệnh tạo giao diện, nút thoát
$hGUI = GUICreate("VLCA", $iWidth, $iHeight, -1, -1, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST)
$hGUI_child = GUICreate("", $iWidth, $iHeight, 0, 0, $WS_POPUP, $WS_EX_LAYERED + $WS_EX_TOPMOST + $WS_EX_MDICHILD, $hGUI)
$hButton = GUICtrlCreateButton("Thoát", $iWidth * 2 / 3 + 15, $iHeight - 30, 70, 25)
GUISetBkColor(0xFFFFFF, $hGUI_child)
GUISetState(@SW_SHOW, $hGUI)
GUISetState(@SW_SHOW, $hGUI_child)
SetTransparentBitmap($hGUI, $hImage)
_WinAPI_SetLayeredWindowAttributes($hGUI_child, 0xFFFFFF, 0xff)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI_child)
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)
GUIRegisterMsg($WM_LBUTTONDOWN, "_WM_LBUTTONDOWN")
;----------------------------------------------------------------------------------------------------------------------------------------
;Show Processbar khai báo 2 cái thanh tiến trình
;ProgressOn("Võ Lâm ...", "Kiểm tra cập nhật...", "0%")
Local $processbar1 = GUICtrlCreateProgress(20, $iHeight - 30, 240, 10) ;thanh thứ 1 -> thanh này là tiến trình của 1 file
Local $processbar = GUICtrlCreateProgress(20, $iHeight - 15, 240, 10) ;thanh thứ 2 -> tiến trình của tất cả các file
Local $idLabel = GUICtrlCreateLabel("Đang kiểm tra cập nhật...", 20, $iHeight - 45, 240) ; khai báo dòng chữ ngay trên thanh tiến trình tạm gọi là status
GUICtrlSetColor($idLabel, 0xFFFFFF0)
Local $oIE = _IECreateEmbedded () ; Chỗ này là khai báo chèn trang web vào
Local $GUIActiveX = GUICtrlCreateObj($oIE, 16, 124, 230, 328) ; định vị trí với kích thước cho cái khung
_IENavigate ($oIE, "launcher.php") ; địa chỉ web sẽ load trong cái khung
_IEHeadInsertEventScript ($oIE, "document", "oncontextmenu", "return false") ; chèn nội dung web
$oIE.document.body.scroll = "no" ; bỏ qua thanh cuộn web
$oIE.document.body.style.border = "0px" ; bỏ qua viền của web
; Save the downloaded file to the temporary folder. -. chỗ này là khai báo đường dẫn thư mục sẽ download về và đọc nhưng file trên mạng để download
Local $ServerListPath = "Settings\ServerList.ini"
Local $VersionPath = "Settings\Version.ini"
Local $ServerListURL = "http://itstore.tv/Server.php"
Local $VersionURL = "http://itstore.tv/Version.php"
Local $UpdateURL = "http://itstore.tv/UpdateURL.php"
Local $UpdateDIR = "http://itstore.tv/UpdateDIR.php"
; Download the file by waiting for it to complete. The option of 'get the file from the local cache' has been selected.
Local $iBytesSize = InetGet($ServerListURL, $ServerListPath, $INET_FORCERELOAD) ; lệnh download file ServerList.ini để cập nhật ip của server
;///////////////////////////////////////////////////////////////////////////
; Read Version File -> đọc file version.ini để kiểm tra phiên bản hiện tại
Local $aInput
If not FileExists($VersionPath) then
Local $iBytesSize = InetGet($ServerListURL,$VersionPath , $INET_FORCERELOAD)
EndIf
_FileReadToArray($VersionPath, $aInput)
; Read Version Server -> đọc file version trên mạng để xem phiên bản mới nhất
Local $SV = BinaryToString(InetRead($VersionURL))
; Check new version -> kiểm tra xem 2 file đó có giống nhau ko nếu giống thì bỏ qua
if $aInput[1]<>$SV then ; Nếu khác nhau thì bắt đầu đọc những file cần cập nhật từ link đã khai báo ở trên
; Get list file to download
Local $Listupdate = BinaryToString(InetRead($UpdateURL))
Local $Savedir = BinaryToString(InetRead($UpdateDIR))
Local $aUpdate = StringSplit($Listupdate, "|")
Local $aSave = StringSplit($Savedir, "|")
Local $oneprocess = Round(99/$aUpdate[0]-1)
; Begin download file -. bắt đầu download các file mới nằm trong thư mục update trên host
For $i = 1 To UBound($aUpdate)-2
GUICtrlSetData ($idLabel,"Tải file: "&$aSave[$i]) ;Hiển thị đang tải file tên gì lên status
GUICtrlSetData($processbar, $oneprocess) ;thanh tiến trình về 0
Local $iBytesSize = InetGet($aUpdate[$i],$aSave[$i] , 1,1) ; chỗ này là lệnh download
$oneprocess = $oneprocess + $oneprocess ; phần trăm cho thanh tiến trình
Local $FileSize = InetGetSize($aUpdate[$i]) ;Get file size -> lấy dung lượng file để tính toán phần trăm đưa lên thanh tiến trình
While Not InetGetInfo($iBytesSize, 2) ;Loop until download is finished
Sleep(500) ;Sleep for half a second to avoid flicker in the progress bar
Local $BytesReceived = InetGetInfo($iBytesSize, 0) ;Get bytes received -> dung lượng đã download
Local $Pct = Int($BytesReceived / $FileSize * 100) ;Calculate percentage -> chia lấy phần trăm
;ProgressSet($Pct, $Pct & "%") ;Set progress bar
GUICtrlSetData($processbar1, $Pct) ; đặt phần trăm lên thanh tiến trình
WEnd
Next
EndIf
;///////////////////////////////////////////////////////////////////////////
; Update file version. -> sau khi download hết thì down luôn file version trên mạng về để lần sau kiểm tra sẽ là ản mới nhất -> không download lại
Local $iBytesSize = InetGet($VersionURL,$VersionPath , $INET_FORCERELOAD)
GUICtrlSetData($processbar1, 100) ;-> thanh tiến trình 100%
GUICtrlSetData($processbar, 100) ;-> như trên (2 thành mà)
GUICtrlSetData ($idLabel,"Hoàn thành. Nhấn nút bắt đầu để chơi game.") ;Status thành dòng thông báo Hoàn thành
Local $idButton = GUICtrlCreateButton("Bắt đầu", $iWidth * 2 / 3 -65, $iHeight - 30, 70, 25) ; Hiển thị nút "Bắt đầu"
; Run program Game.exe.
;Local $iPID = Run("Game.exe", "", @SW_SHOWMAXIMIZED)
;Close Processbar
Sleep(1000) ; Nghĩ 1s để kịp xem load mọi thứ
ProgressOff() ; Kết thúc thanh tiến trình
;----------------------------------------------------------------------------------------------------------------------------------------
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $hButton ; Lệnh khi nhấn nút thoát
GUIRegisterMsg($WM_LBUTTONDOWN, "")
_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
GUIDelete($hGUI)
ExitLoop
Case $GUI_EVENT_CLOSE, $idButton ; Lệnh khi nhấn nút bắt đầu
GUIRegisterMsg($WM_LBUTTONDOWN, "")
Local $iPID = Run("Game.exe", "", @SW_SHOWMAXIMIZED) ; câu lệnh này để chạy file Game.exe còn mấy dòng khác là để đóng giao diện file autoupdate
_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
GUIDelete($hGUI)
ExitLoop
EndSwitch
WEnd
; Mấy cái dòng dưới này là để chỉnh sửa giao diện ví dụ như trong suốt, canh giữa màn hình... không quan tâm đến nữa!
Func _WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
_SendMessage($hGUI, $WM_SYSCOMMAND, $SC_DRAGMOVE, 0)
EndFunc ;==>_WM_LBUTTONDOWN
Func SetTransparentBitmap($hGUI, $hImage, $iOpacity = 0xFF)
Local $hScrDC, $hMemDC, $hBitmap, $hOld, $pSize, $tSize, $pSource, $tSource, $pBlend, $tBlend
$hScrDC = _WinAPI_GetDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScrDC)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$hOld = _WinAPI_SelectObject($hMemDC, $hBitmap)
$tSize = DllStructCreate($tagSIZE)
$pSize = DllStructGetPtr($tSize)
DllStructSetData($tSize, "X", _GDIPlus_ImageGetWidth($hImage))
DllStructSetData($tSize, "Y", _GDIPlus_ImageGetHeight($hImage))
$tSource = DllStructCreate($tagPOINT)
$pSource = DllStructGetPtr($tSource)
$tBlend = DllStructCreate($tagBLENDFUNCTION)
$pBlend = DllStructGetPtr($tBlend)
DllStructSetData($tBlend, "Alpha", $iOpacity)
DllStructSetData($tBlend, "Format", 1)
_WinAPI_UpdateLayeredWindow($hGUI, $hMemDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA)
_WinAPI_ReleaseDC(0, $hScrDC)
_WinAPI_SelectObject($hMemDC, $hOld)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hMemDC)
EndFunc ;==>SetTransparentBitmap
VD :
Version.ini :
1.1
ServerList.ini :
[List]
RegionCount=2
Region_0=M¸y Chñ Vâ L©m
Region_1=TruyÒn Kú B¾c Nam
[Region_1]
Count=1
0_Title=Dîc S¬n
0_Address=192.168.1.123
PS: Thiếu 2 file PHPUpdateURL.php và UpdateDIR.php ở trên host nữa ! mình sẽ Update sau !!
Lần sửa cuối bởi thinkiem, ngày 03-09-16 lúc 05:36 PM.
Khách viếng thăm hãy cùng thinkiem xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
The Following 11 Users Say Thank You to thinkiem For This Useful Post:
cuongvh93 (02-09-16), dovietthai (03-09-16), hungnha18 (02-09-16), kenlucky2000 (03-09-16), khainqps01237 (03-09-16), longkandy (09-10-16), minhkhanh109 (02-09-16), onetheside123 (13-09-18), togashi007 (02-09-16), vinhthamthao (03-09-16), vuduymanh (02-09-16)
-
03-09-16, 05:12 AM #2
- Ngày tham gia
- Mar 2013
- Bài viết
- 217
- Thanks
- 81
- Thanked 27 Times in 14 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Ngon, up cho mau có file php nè
Khách viếng thăm hãy cùng khainqps01237 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
03-09-16, 12:22 PM #3
- Ngày tham gia
- May 2015
- Bài viết
- 197
- Thanks
- 2
- Thanked 19 Times in 10 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
bác cho em hỏi thử làm sao để lấy lưu lượng file trên host vs
em dùng hàm của bác mà get lưu lượng nó trả về 0Khách viếng thăm hãy cùng chihochoi xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến chihochoi vì bài viết này !
thinkiem (04-09-16)
-
03-09-16, 04:35 PM #4
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
mình có chú thích rồi đó !! mình chạy thấy vẫn bình thường mà ! bạn kiểm tra lại xem nhé !!
PHP Code:; Begin download file -. bắt đầu download các file mới nằm trong thư mục update trên host
For $i = 1 To UBound($aUpdate)-2
GUICtrlSetData ($idLabel,"Tải file: "&$aSave[$i]) ;Hiển thị đang tải file tên gì lên status
GUICtrlSetData($processbar, $oneprocess) ;thanh tiến trình về 0
Local $iBytesSize = InetGet($aUpdate[$i],$aSave[$i] , 1,1) ; chỗ này là lệnh download
$oneprocess = $oneprocess + $oneprocess ; phần trăm cho thanh tiến trình
Local $FileSize = InetGetSize($aUpdate[$i]) ;Get file size -> lấy dung lượng file để tính toán phần trăm đưa lên thanh tiến trình
While Not InetGetInfo($iBytesSize, 2) ;Loop until download is finished
Sleep(500) ;Sleep for half a second to avoid flicker in the progress bar
Local $BytesReceived = InetGetInfo($iBytesSize, 0) ;Get bytes received -> dung lượng đã download
Local $Pct = Int($BytesReceived / $FileSize * 100) ;Calculate percentage -> chia lấy phần trăm
;ProgressSet($Pct, $Pct & "%") ;Set progress bar
GUICtrlSetData($processbar1, $Pct) ; đặt phần trăm lên thanh tiến trình
WEnd
Khách viếng thăm hãy cùng thinkiem xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
03-09-16, 11:24 PM #5
- Ngày tham gia
- Aug 2014
- Đang ở
- Hà Nội
- Bài viết
- 944
- Thanks
- 145
- Thanked 524 Times in 335 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến vinhthamthao vì bài viết này !
thinkiem (04-09-16)
-
04-09-16, 08:04 AM #6
- Ngày tham gia
- Oct 2008
- Bài viết
- 456
- Thanks
- 58
- Thanked 114 Times in 96 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Khách viếng thăm hãy cùng vocweb xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
26-09-16, 02:39 PM #7
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Share file php đi bạn................
Khách viếng thăm hãy cùng bualolu xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
10-10-16, 08:45 PM #8
- Ngày tham gia
- Aug 2014
- Đang ở
- Hà Nội
- Bài viết
- 944
- Thanks
- 145
- Thanked 524 Times in 335 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
mình chạy được nhưng không hiện % trên thanh ai giúp mình cho nó hiện % với
Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
15-10-16, 12:58 PM #9
- Ngày tham gia
- Apr 2014
- Đang ở
- cd /tmp/
- Bài viết
- 646
- Thanks
- 205
- Thanked 628 Times in 146 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Khách viếng thăm hãy cùng Dark.Hades xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
15-10-16, 04:24 PM #10
- Ngày tham gia
- Aug 2014
- Đang ở
- Hà Nội
- Bài viết
- 944
- Thanks
- 145
- Thanked 524 Times in 335 Posts
Ðề: [SHARE] Cách làm một Autoupdate bằng Autoit
Lần sửa cuối bởi vinhthamthao, ngày 15-10-16 lúc 07:28 PM.
Khách viếng thăm hãy cùng vinhthamthao xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
Các Chủ đề tương tự
-
[JX] Share Autoupdate
Bởi bacnam7287 trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)Trả lời: 25Bài viết cuối: 28-08-20, 07:50 AM -
[JX] Share Auto Update Play Game bằng Autoit, hướng dẫn AutoIt
Bởi thachlong78 trong diễn đàn ReleasesTrả lời: 49Bài viết cuối: 18-02-16, 12:18 AM -
[JX] cần xin code auto backup của PTTk bác nào có code autoit đó share giúp thanks
Bởi Olala trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 0Bài viết cuối: 18-10-14, 12:49 AM -
Share autoupdate cùi em xài
Bởi TNMars trong diễn đàn ReleasesTrả lời: 6Bài viết cuối: 27-06-11, 10:42 AM -
share bản autoupdate
Bởi thanhhue trong diễn đàn Các Server Không Nằm Trong BoxTrả lời: 1Bài viết cuối: 30-11-08, 03:47 PM