• Hãy ủng hộ PhienBanMoi.Com bằng cách LIKE trang FANPAGE , GOOGLE+ dưới mỗi bài viết hoặc chia sẻ website nếu thấy hữu ích. Trân trọng cảm ơn!
  • [Thông Báo] Tuyển thành viên viết bài KIẾM TIỀN trên PhienBanMoi.Com


    Nhằm mục đích phát triển Phienbanmoi.com hơn nữa, có thêm các bài viết thông tin thực sự hữu ích từ những thành viên tích cực. BQT đã quyến định tạo ra cơ hội kiếm tiền từ các bài viết được đăng tải và chia sẻ trên diễn đàn

Sử dụng AutoIt để tự động hóa cài đặt và sử dụng phần mềm trên Windows (full)

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#1
Danh sách bài viết
  • Bài 1 - Cài đặt AutoIt và các setting của nó với một cú click chuột
  • Bài 2 - Thiết lập tự động một số thuộc tính của chuột, phím, autoplay,... qua các công cụ của Control Panel
  • Bài 3 - Tự động dò tìm, download bản mới nhất và cài đặt phần mềm Gom Player
  • Bài 4 - Script tự động lấy link từ mediafire từ một website / forums topic, download file từ link này
  • Bài 4b - Script tự động download link từ mediafire được copy vào clipboard
  • Bài 5 - Quản lý Traybar (thanh tác vụ chứa những chương trình chạy ẩn như Yahoo, Skype, Antivirus) - mở chọn menu chuột phải,...
  • Bài 6 - Font tiếng Việt trong soạn thảo và hiển thị giao diện
  • Bài 7 - Giải pháp chạy ẩn một tiến trình cài đặt mà vẫn điều khiển được
  • Bài 8 - Tự động chạy file registry, sửa file text trong 1 quá trình cài đặt phần mềm
  • ... (còn nữa)
  • Thư viện người dùng PPCC.au3 (sử dụng trong các bài)


Bài 1 - Cài đặt AutoIt và các setting của nó với một cú click chuột

Mở đầu
Quá trình cài đặt phần mềm thường ngốn khá nhiều thời gian với những người thường xuyên và có sở thích thử nghiệm cài, sử dụng phần mềm (như tớ chẳng hạn :">), cũng nhân tiện đang lúc hí hoáy với AutoIt để làm vài việc khác nữa.

AutoIt thì nhiều người đã biết (có khi để chống lại chương trình AntiVirus cũng nên, hihi). Topic này tớ chỉ bàn về việc dùng nó để thao tác thay cho click chuột và gõ gõ phím khi cài đặt, sử dụng một phần mềm hay công cụ thường dùng. Điều này đặc biệt có lợi cho những phần mềm cài tốn thời gian và nhiều thao tác. Chỉ một thao tác bấm chuột hoặc ENTER và đợi, bạn sẽ có một phần mềm được cài sẵn sàng vào hệ thống hoặc một thiết lập mà bạn phải mất hàng nhiều giây, hàng phút để hoàn thành.

Một đoạn script thí dụ
Tớ mở đầu với đoạn code về cài đặt chính phần mềm AutoIt (cho những lần sau, lần đầu mở script này lên bạn hãy tham khảo và convert thành exe để chạy cho những lần sau). Điều kiện để thử những đoạn mã này là máy bạn phải cài AutoIt (dễ dàng tìm được bằng google, dễ dàng tra Help để biết cái gì nó là cái gì).

Liên kết để lấy bộ cài đặt từ trang chủ AutoItScript.com <<<<<<
File cần thiết:
autoit-v3-setup.exe để cài chương trình chính

SciTE4AutoIt3.exe để cài chương trình editor chuyên nghiệp (thêm nhiều tools và settings kèm theo).

Tiến trình cài có hiển thị các bước - Viewable installation

Mã:
;~ #include <PPCC.au3>

Func _AU3RecordSetup()
    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
EndFunc

Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc

_AU3RecordSetup()

; Setup
If Not FileExists($AutoIt_file) Then
    RunWait("D:\Applied Tips\AutoIt\Setup AIO\InstallScript_Silent.exe")
EndIf ;~ If Not FileExists(@ProgramFilesDir & '\AutoIt3\AutoIt3.exe') Then Run('D:\Applied Tips\AutoIt\Setup AIO\InstallScript_Silent.exe')

; Settings
ShellExecute(@ProgramFilesDir & '\AutoIt3\SciTE\SciTEConfig\SciteConfig.exe')
_WinWaitActivate("SciTE Config for AutoIt3. ver:","")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}")
Send("D:\Applied Tip{CTRLDOWN}{CTRLUP}s\AutoIt\My Mo{CTRLDOWN}{CTRLUP}st U{CTRLDOWN}{CTRLUP}sed Function{CTRLDOWN}{CTRLUP}s")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{SPACE}")
_WinWaitActivate("SciTE config","")
Send("{ENTER}")
_WinWaitActivate("SciTE Config for AutoIt3. ver:","")
Send("{TAB}{SPACE}")
File InstallScript_Silent.exe được convert từ file InstallScript_Silent.au3 có nội dung như dưới đây, các file exe được download từ trang chủ của AutoIt và được đặt trong cùng thư mục với file InstallScript_Silent.exe hoặc InstallScript_Silent.au3:

Mã:
RunWait("autoit-v3-setup.exe /S")
RunWait("SciTE4AutoIt3.exe /S")
Tiến trình cài ẩn (không hiển thị các bước) - Silent installation

Mã:
... sẽ bổ sung sau
Chú thích
- Đoạn ; Settings là để chỉnh thêm đường dẫn cho thư viện file tự định nghĩa.
- Đường dẫn đến các file nên được thay đổi cho phù hợp trên máy bạn.
- Tổ hợp {CTRLDOWN}{CTRLUP} dùng để tránh xung đột với bộ gõ tiếng Việt Unikey.
- Để ghi lại các thao tác chuột, phím vào file script, trong SciTE bạn chọn Tools rồi AU3Recorder và làm theo hướng dẫn.
- Hướng dẫn khá ngắn gọn dễ hiểu (bằng tiếng Anh kèm thao tác) có tại kênh 403 Forbidden's YouTube

Bài tiếp theo tớ sẽ giới thiệu đoạn code tự động chỉnh vài setting về Mouse, Keyboard,... trong Control Panel.
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#2
Bài 2 - Thiết lập tự động một số thuộc tính của chuột, phím, autoplay,... qua các công cụ của Contro

Còn vài soft khác nữa là Almeza Multiset, Python cũng làm được tuy nhiên về mức độ tùy biến thì không thể bằng đồng chí AutoIt và người anh em ruột với nó là AutoHotkey được.

Bài tiếp theo...

Bài 2 - Thiết lập tự động một số thuộc tính của chuột, phím, autoplay,... qua các công cụ của Control Panel

Ở script này mình thực hiện trên Win7, với WinXP, hoặc với các công cụ khác của Control Panel, các bạn có thể thay các lệnh mở công cụ khác đi một chút, tham khảo bài này...

Những thiết lập này là theo ý muốn của mình, các bạn chỉ nên tham khảo và điều chỉnh hoặc tự ghi lại các thiết lập của chính mình nhờ AutoIt nhé.

Tắt AutoPlay trong Win7

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.AutoPlay')
_WinWaitActivate("AutoPlay","Address: Control Pan")
Sleep(500)
Send("{-}")
Sleep(500)
Send("{ALTDOWN}s{ALTUP}")

Điều chỉnh độ nhanh nhạy của chuột và phím
Các bạn có thể chỉnh lại tùy theo mức độ mà bạn quen dùng, về thời gian của các lệnh Sleep cũng nên tăng lên để cảm nhận rõ ràng mỗi thay đổi được đặt.

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.Keyboard')
_WinWaitActivate("Keyboard Properties","")
Send("{RIGHT 50}{TAB}{RIGHT 50}{TAB}{RIGHT 50}{TAB}{RIGHT 30}{ALTDOWN}a{ALTUP}{ALTDOWN}{F4}{ALTUP}")

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.Mouse')
_WinWaitActivate("Mouse Properties","Button configuration")
Send("{CTRLDOWN}{TAB}{CTRLUP}")
_WinWaitActivate("Mouse Properties","&Enable pointer shad")
Send("{CTRLDOWN}{TAB}{CTRLUP}")
_WinWaitActivate("Mouse Properties","Sele&ct a pointer sp")
Send("{RIGHT 50}{LEFT 2}{CTRLDOWN}{TAB}{CTRLUP}")
_WinWaitActivate("Mouse Properties","Roll the wheel one n")
Send("{TAB}5{TAB}{CTRLDOWN}{TAB}{CTRLUP}")
_WinWaitActivate("Mouse Properties","Device Properties")
Send("{CTRLDOWN}{TAB}{CTRLUP}")
_WinWaitActivate("Mouse Properties","Synaptics Pointing D")
Send("{ALTDOWN}a{ALTUP}{ALTDOWN}{F4}{ALTUP}")
Sleep(2000)


Tắt Auto Update của Windows 7 và chạy chức năng này thêm 1 lần sau khi tắt

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

; Disable autoupdate
Run('control /name Microsoft.WindowsUpdate')
_WinWaitActivate("Windows Update","Address: Control Pan")
; MouseClick("left",91,144,1)
ControlClick("Windows Update","Address: Control Pan","[CLASS:DirectUIHWND; INSTANCE:3]","primary",1,67,86)
ControlSend("Windows Update","Address: Control Pan","[CLASS:DirectUIHWND; INSTANCE:3]","{ENTER}");~ Send("{ENTER}")
_WinWaitActivate("Change settings","Address: Control Pan")
Send("{ALTDOWN}i{ALTUP}n{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
_WinWaitActivate("Windows Update","Address: Control Pan")
Send("{ALTDOWN}{F4}{ALTUP}")

; Run update now
Run('control /name Microsoft.WindowsUpdate')
_WinWaitActivate("Windows Update","Address: Control Pan")
ControlClick("Windows Update","Address: Control Pan","[CLASS:DirectUIHWND; INSTANCE:3]","primary",1,57,59)
ControlSend("Windows Update","Address: Control Pan","[CLASS:DirectUIHWND; INSTANCE:3]","{ENTER}");~ Send("{ENTER}")
If WinActive("Windows Update","cannot currently") Then
	Send("{ENTER}")
EndIf
While 1
	_WinWaitActivate("Windows Update","Address: Control Pan")
	If WinActive("Windows Update","&Install now") Then
		ControlClick("Windows Update","Address: Control Pan","[CLASS:Button; INSTANCE:1]","primary",1)
		ExitLoop
	EndIf
	Sleep(30000)
WEnd
While 1
	_WinWaitActivate("Windows Update","Address: Control Pan")
	If WinActive("Windows Update","&Restart now") Then
		Send("{ALTDOWN}{F4}{ALTUP}")
		ExitLoop
	EndIf
	Sleep(30000)
WEnd


Kích hoạt hoặc hủy kích hoạt chức năng ngủ đông (Hibernation)

Mã:
Run('powercfg -h on')
hoặc
Run('powercfg -h off')


Vài thiết lập cho Task Bar và Start Menu

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.TaskbarAndStartMenu')

Run('control /name Microsoft.TaskbarAndStartMenu')
_WinWaitActivate("Taskbar and Start Menu Properties","")
Send("{+}{TAB}{-}{TAB}{+}{TAB}b{TAB}n")
_WinWaitActivate("Taskbar and Start Menu Properties","")
Send("{CTRLDOWN}{TAB}{CTRLUP}{ALTDOWN}c{ALTUP}")
_WinWaitActivate("Customize Start Menu","")
Send("{TAB 3}{SPACE}{TAB 3}{DOWN 16}{SPACE}{DOWN 5}{SPACE}{DOWN 6}{SPACE}{DOWN 10}{SPACE}{DOWN}{SPACE}{DOWN 5}{SPACE}{DOWN 11}{SPACE}{DOWN 4}{TAB}15{TAB}5{TAB 2}{ENTER}")
_WinWaitActivate("Taskbar and Start Menu Properties","")
Send("{ALTDOWN}a{ALTUP}{TAB}s{CTRLDOWN}{CTRLUP}s{TAB}{-}{TAB}{-}{ALTDOWN}a{ALTUP}")
Sleep(200)
Send("{ALTDOWN}b{ALTUP}{ALTDOWN}m{ALTUP}{+}{ALTDOWN}p{ALTUP}{+}{ALTDOWN}{ALTUP}")
Sleep(2000)
Send("{ALTDOWN}a{ALTUP}{CTRLDOWN}{TAB}{CTRLUP}{CTRLDOWN}{TAB}{CTRLUP}")
Sleep(200)
Send("{ALTDOWN}{F4}{ALTUP}")

Thiết lập cho Folder Options

Mã:
;~ #include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.FolderOptions')
_WinWaitActivate("Folder Options","Open each folder in ")
Send("{ALTDOWN}r{ALTUP}{ALTDOWN}s{ALTUP}{ALTDOWN}p{ALTUP}{ALTDOWN}a{ALTUP}{ALTDOWN}{F4}{ALTUP}")
Run('control /name Microsoft.FolderOptions')
_WinWaitActivate("Folder Options","Open each folder in ")
Send("{CTRLDOWN}{TAB}{CTRLUP}{ALTDOWN}d{ALTUP}{TAB}{DOWN 8}{SPACE}{DOWN}{SPACE}{DOWN}{SPACE}{DOWN 3}{SPACE}{DOWN 2}{SPACE}{DOWN 2}{SPACE}")
Sleep(2000)
Send("{ALTDOWN}a{ALTUP}{CTRLDOWN}{TAB}{CTRLUP}{CTRLDOWN}{TAB}{CTRLUP}")
Sleep(200)
Send("{ALTDOWN}{F4}{ALTUP}")

Thiết lập cho Power Options

Mã:
#include <PPCC.au3>

_AU3RecordSetup()

Run('control /name Microsoft.PowerOptions')
_WinWaitActivate("Power Options","Address: Control Pan")
ControlClick("Power Options","Address: Control Pan","[CLASS:Button; INSTANCE:2]","primary",1)
Send("{ALTDOWN}{F4}{ALTUP}")
Run('control /name Microsoft.PowerOptions')
_WinWaitActivate("Power Options","Address: Control Pan")
Send("{TAB}{TAB}{ENTER}")
_WinWaitActivate("System Settings","Address: Control Pan")
Send("{TAB}{TAB}{TAB}ss{TAB}ss{TAB}d{TAB}d{TAB}d{TAB}d{TAB}{TAB}{ENTER}")
_WinWaitActivate("Power Options","Address: Control Pan")
Send("{TAB}{TAB}{TAB}{ENTER}")
_WinWaitActivate("System Settings","Address: Control Pan")
Send("{BACKSPACE}")
_WinWaitActivate("Power Options","Address: Control Pan")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
_WinWaitActivate("Edit Plan Settings","Address: Control Pan")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{F4}{LEFT}{TAB}{TAB}{ALTDOWN}r{ALTUP}")
_WinWaitActivate("Power Options","&Yes")
Send("{ALTDOWN}y{ALTUP}")
_WinWaitActivate("Edit Plan Settings","Address: Control Pan")
Send("{TAB 5}n{TAB 2}n{TAB 2}n{TAB 5}{ENTER}");~ Send("{TAB}{TAB}{TAB}{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{UP}{TAB}{TAB}{UP}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
_WinWaitActivate("Power Options","Address: Control Pan")
Send("{ALTDOWN}{F4}{ALTUP}")

Run('control /name Microsoft.PowerOptions')
_WinWaitActivate("Power Options","Address: Control Pan")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
_WinWaitActivate("Edit Plan Settings","Address: Control Pan")
Send("{ALTDOWN}c{ALTUP}")
_WinWaitActivate("Power Options","Select the power pla")
Send("{TAB}{RIGHT}n{LEFT}{DOWN}{RIGHT}n{ALTDOWN}a{ALTUP}{ALTDOWN}{F4}{ALTUP}")
_WinWaitActivate("Edit Plan Settings","Address: Control Pan")
Send("{ALTDOWN}{F4}{ALTUP}")

Run('control /name Microsoft.PowerOptions')
_WinWaitActivate("Power Options","")
Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
Sleep(500)
_WinWaitActivate("Edit Plan Settings","")
Send("{ENTER}")
_WinWaitActivate("Power Options","")
Send("{TAB}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{RIGHT}{LEFT}{DOWN}{DOWN}{RIGHT}{DOWN}{RIGHT}{DOWN}{RIGHT}{DOWN}{DOWN}{DOWN}{UP}{UP}{UP}{UP}{UP}d{LEFT}{DOWN}{RIGHT}d{LEFT}{DOWN}{RIGHT}{DOWN}{RIGHT}{UP}{UP}{UP}{UP}{UP}{UP}{DOWN}{DOWN}{DOWN}{LEFT}{DOWN}{RIGHT}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{UP}{DOWN}{DOWN}{DOWN}{LEFT}{DOWN}{RIGHT}{LEFT}{DOWN}{DOWN}{RIGHT}{LEFT}{DOWN}{RIGHT}{DOWN}{RIGHT}{LEFT}{RIGHT}{LEFT}{DOWN}{RIGHT}{LEFT}{DOWN}{RIGHT}{LEFT}{DOWN}{RIGHT}{LEFT}{DOWN}{RIGHT}{DOWN}{DOWN}{RIGHT}{DOWN}{RIGHT}{DOWN}{DOWN}{DOWN}{UP}{UP}{UP}{LEFT}{LEFT}{LEFT}{DOWN}{RIGHT}{DOWN}{UP}{LEFT}{ALTDOWN}a{ALTUP}{ALTDOWN}{F4}{ALTUP}")
_WinWaitActivate("Edit Plan Settings","")
Send("{ALTDOWN}{F4}{ALTUP}")
... (tương tự với các thiết lập khác)

Bài tiếp theo: Tự động tìm, download bản mới nhất và cài đặt một phần mềm
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#4
Bài 3 - Tự động dò tìm, download bản mới nhất và cài đặt phần mềm Gom Player

Bài 3 - Tự động dò tìm, download bản mới nhất và cài đặt phần mềm Gom Player[/COLOR]

Mã:
#include <PPCC.au3>

_AU3RecordSetup()

;~ WinMinimizeAll()

$msgb=MsgBoxDJS(4+32+256,'GOM Media Player Setup','Would you like to download newest version?' & @LF & 'Automatic choose No after',5)
;~ ConsoleWrite($msgb)
;~ Exit
$SavedPath="D:\setup\multimedia tools\gom player"

If $msgb=7 Or $msgb=-1 Then
	$Found=_GetFileName($SavedPath,".exe",'SETUP.EXE')
	Run($SavedPath & '\' & $Found)
	Sleep(3000)
	_WinWaitActivate("GOM Player Setup","Welcome to the GOM P")
	Send("{ALTDOWN}n{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Please review the li")
	Send("{ALTDOWN}a{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Choose which feature")
	Send("{ALTDOWN}n{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Choose Install Locat")
	Send("{CTRLDOWN}c{CTRLUP}{CTRLDOWN}{CTRLUP}{CTRLDOWN}{CTRLUP}{HOME}{SHIFTDOWN}{RIGHT}d{SHIFTUP}{HOME}{SHIFTDOWN}{END}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{ALTDOWN}i{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Completing the GOM P")
	Send("{ALTDOWN}f{ALTUP}")
	_WinWaitActivate("GOM VIDEO CONVERTER","Download and install")
	ControlClick("GOM VIDEO CONVERTER","Download and install","[CLASS:Button; INSTANCE:2]")
	Exit
Else
	$URL0='http://player.gomlab.com/eng/download/'
	$TempFile = "_Test.html"
	If FileExists(@TempDir & '\' & $TempFile) Then
		FileDelete(@TempDir & '\' & $TempFile)
		Sleep(2000)
	EndIf
	_DownloadFile($URL0, @TempDir, $TempFile);~ ShellExecute($URL)
	$file=FileOpen(@TempDir & '\' & $TempFile)
	If $file = -1 Then ; Check if file opened for reading OK
		MsgBox(0, "Error", "Unable to open file.", 5)
		Exit
	EndIf

	$BeginTag='<a href="/eng/download/'
	$EndTag='" onclick="javascript: pageTracker._trackPageview(' & "'/CNET')"
	$TempStr=_GetLinkDownload($file,$BeginTag,$EndTag) ;~ ConsoleWrite($TempStr & @CRLF)
	FileClose($file)
	$URL=$URL0 & $TempStr
	ConsoleWrite($URL & @CRLF)

	$TempFile = "_Test.html"
	If FileExists(@TempDir & '\' & $TempFile) Then
		FileDelete(@TempDir & '\' & $TempFile)
		Sleep(2000)
	EndIf
	_DownloadFile($URL, @TempDir, $TempFile);~ ShellExecute($URL)
	$file=FileOpen(@TempDir & '\' & $TempFile)
	If $file = -1 Then ; Check if file opened for reading OK
		MsgBox(0, "Error", "Unable to open file.", 5)
		Exit
	EndIf

	$BeginTag='<div class="dlLinkWrapper"> <a href="'
	$EndTag='"'
	$TempStr=_GetLinkDownload($file,$BeginTag,$EndTag) ;~ ConsoleWrite($TempStr & @CRLF)
	FileClose($file)
	$URL='' & $TempStr
	ConsoleWrite($URL & @CRLF)

	$TempFile = "_Test.html"
	If FileExists(@TempDir & '\' & $TempFile) Then
		FileDelete(@TempDir & '\' & $TempFile)
		Sleep(2000)
	EndIf
	_DownloadFile($URL, @TempDir, $TempFile);~ ShellExecute($URL)
	$file=FileOpen(@TempDir & '\' & $TempFile)
	If $file = -1 Then ; Check if file opened for reading OK
		MsgBox(0, "Error", "Unable to open file.")
		Exit
	EndIf
	$BeginTag='URL=http://software'
	$EndTag='.EXE"/>'
	$TempStr=_GetLinkDownload($file,$BeginTag,$EndTag) ;~ ConsoleWrite($TempStr & @CRLF)
	FileClose($file)
	$URL='http://software' & $TempStr & '.EXE'
	ConsoleWrite($URL & @CRLF)
	$URLSplit=StringSplit($URL,'=')
	$FileName=$URLSplit[UBound($URLSplit)-1] ;~
	ConsoleWrite($FileName & @CRLF)
	If Not FileExists($SavedPath & '\' & $FileName) Then _DownloadFile($URL,$SavedPath,$FileName)

	Run($SavedPath & '\' & $FileName)
	Sleep(3000)
	_WinWaitActivate("GOM Player Setup","Welcome to the GOM P")
	Send("{ALTDOWN}n{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Please review the li")
	Send("{ALTDOWN}a{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Choose which feature")
	Send("{ALTDOWN}n{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Choose Install Locat")
	Send("{CTRLDOWN}c{CTRLUP}{CTRLDOWN}{CTRLUP}{CTRLDOWN}{CTRLUP}{HOME}{SHIFTDOWN}{RIGHT}d{SHIFTUP}{HOME}{SHIFTDOWN}{END}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{ALTDOWN}i{ALTUP}")
	_WinWaitActivate("GOM Player Setup ","Completing the GOM P")
	Send("{ALTDOWN}f{ALTUP}")
	_WinWaitActivate("GOM VIDEO CONVERTER","Download and install")
	ControlClick("GOM VIDEO CONVERTER","Download and install","[CLASS:Button; INSTANCE:2]")
EndIf

FileDelete(@DesktopCommonDir & '\GOM Player.lnk')


Các hàm cần dùng trong topic này tớ đặt trong file PPCC.au3 có nội dung liên quan

Bài tiếp theo: Quản lý traybar (thanh tác vụ chứa những chương trình chạy ẩn như Yahoo, Skype, Antivirus) - mở chọn menu chuột phải,...
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#5
Bài 4 - Script tự động lấy link từ mediafire từ một website / forums topic, download file từ link nà

Bài 4 - Script tự động lấy link từ mediafire từ một website / forums topic, download file từ link này
[/COLOR]
(tớ viết bằng AutoIt. Các bạn có thể "diễn" lại bằng các programming hay script kiểu khác)

Các thao tác chính:
- Save htm file từ website, tìm trong đó link mediafire. Đọc và tìm trong file này link mediafire đầu tiên.
- Save htm file từ link mediafire, dò tìm tiếp link download mediafire cần thiết, ra lệnh download file đó.
Có thể thêm thao tác:
- Mở file vừa download hoặc thư mục chứa file download ở trên để kiểm tra.

Vài dòng chú thích:
Các bạn có thể thêm các lệnh Sleep($miliseconds) để quá trình diễn ra chậm hơn, dễ theo dõi.
Vài đường dẫn có thể cần thay đổi theo máy bạn.
Nếu làm hoàn chỉnh, các bạn có thể convert thành exe để dùng sau này mỗi khi cần.
Điều kiện áp dụng là phải có link mediafire trong website / forums topic.
Nếu trang mediafire thay đổi cách download file thì chắc phải sửa một chút chỗ lấy link.
Chương trình lấy link mediafire đầu tiên, nếu cần lấy thêm, các bạn hãy cho thêm vòng lặp khi đọc file htm.
Nếu đã có sẵn link mediafire được copy vào clipboard, hãy dùng ClipGet() để gọi vào chương trình trước khi thực hiện lệnh _GetLinkMediaFire và _DownloadFile
Script chỉ lấy download từ file đơn nhé, còn cả folder thì các bạn cần thêm một bước dò tìm các file mediafire trong 1 folder nữa (cũng save htm rồi mở lên và tìm các cụm liên quan www.mediafire.com).
Chỗ nào cần kiểm tra kết quả $String trung gian hãy sử dụng thêm cụm
Mã:
ConsoleWrite($String)
Exit

Mã:
#include <PPCC.au3>

; Download files
$URL="http://forum.bkis.com/showthread.php?41234-MUTI-DriverPack-Solution-12-0-R237-19-12-2011-Link-Mediafire-nhe-Khoi-so-thieu-Driver-All-Computer-&highlight=mediafire"
$BeginTag='http://www.mediafire.com' ; tag để nhận dạng link mediafire
$EndTag='"'
$Get_URL='http://www.mediafire.com' & _GetFirstInfoBetweenTags($URL,$BeginTag,$EndTag)
$SavedPath="D:\Downloads" ; nơi lưu file

$TempFile="_Test.html" ; file download tạm thời để lấy thông tin
If FileExists(@TempDir & '\' & $TempFile) Then FileDelete(@TempDir & '\' & $TempFile)
_DownloadFile($Get_URL,@TempDir,$TempFile)

$file=FileOpen(@TempDir & '\' & $TempFile,128)
If $file = -1 Then ; Check if file opened for reading OK
    MsgBox(0, "Error", "Unable to open file.", 5)
    Exit
EndIf
$BeginTag='"> <a href="http:' ; tag để nhận dạng link download từ mediafire
$EndTag='" onclick='
$FileTitleTag='download_file_title'
$URLToDownload=_GetLinkMediaFire($file,$BeginTag,$EndTag,$FileTitleTag)
ConsoleWrite($URLToDownload & @CRLF)
$URLSplit=StringSplit($URLToDownload,'/')
$FileName=$URLSplit[UBound($URLSplit)-1] ; ConsoleWrite($FileName & @CRLF)
If Not FileExists($SavedPath & '\' & $FileName) Then _DownloadFile($URLToDownload,$SavedPath,$FileName)
FileClose($file)

; Check results
ShellExecute($SavedPath)
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#6
Bài 4b - Script tự động download link từ mediafire được copy vào clipboard

Bài 4b - Script tự động download link từ mediafire được copy vào clipboard


Các thao tác chính:
- Save htm file từ link mediafire, dò tìm tiếp link download mediafire cần thiết, ra lệnh download file đó.
Có thể thêm thao tác:
- Mở file vừa download hoặc thư mục chứa file download ở trên để kiểm tra.

Vài dòng chú thích:
Xem bài 4...

Mã:
#include <PPCC.au3>

; Get link from clipboard
$Get_URL=ClipGet()
$SavedPath="D:\Downloads" ; nơi lưu file

$TempFile="_Test.html" ; file download tạm thời để lấy thông tin
If FileExists(@TempDir & '\' & $TempFile) Then FileDelete(@TempDir & '\' & $TempFile)
_DownloadFile($Get_URL,@TempDir,$TempFile)

$file=FileOpen(@TempDir & '\' & $TempFile,128)
If $file = -1 Then ; Check if file opened for reading OK
    MsgBox(0, "Error", "Unable to open file.", 5)
    Exit
EndIf
$BeginTag='"> <a href="http:' ; tag để nhận dạng link download thực sự từ mediafire
$EndTag='" onclick='
$FileTitleTag='download_file_title'
$URLToDownload=_GetLinkMediaFire($file,$BeginTag,$EndTag,$FileTitleTag)
ConsoleWrite($URLToDownload & @CRLF)
$URLSplit=StringSplit($URLToDownload,'/')
$FileName=$URLSplit[UBound($URLSplit)-1] ; ConsoleWrite($FileName & @CRLF)
If Not FileExists($SavedPath & '\' & $FileName) Then _DownloadFile($URLToDownload,$SavedPath,$FileName)
FileClose($file)

; Check results
ShellExecute($SavedPath)


Thí dụ: Tớ copy 1 link mediafire vào clipboard, chẳng hạn http://www.mediafire.com/download.php?nisoq8y34s9b3k4 rồi tớ chạy script ở bài 4b thì file CheckMD5.txt ở link này sẽ được download về D:\Downloads trên máy tớ.
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#7
Hihi, có thêm kinh nghiệm cho người dùng AutoIt trong Win x64. Có thể suy luận đơn giản, vì file Help được soạn (bởi ai đó) sử dụng Win x86, đường dẫn cho nút "Open the Script" là không thay đổi C:\Program Files\...





Thư viện người dùng PPCC.au3

(ngày cập nhật: xem chỗ "Lần sửa cuối bởi PPCC......" của post này.)

Mã:
#include-once
#include <String.au3>
#include <Array.au3>
#include <Inet.au3>
#include <File.au3>
#include <WindowsConstants.au3>
#include <GUIToolbar.au3>
#include <WinAPI.au3>
#include <GuiMenu.au3>


HotKeySet("{ESC}", "Script_Close")
Func Script_Close()
	Exit
EndFunc


Func _WinCloseAll($WinClass,$text="")
	Local $hWC=1
	While $hWC=1
		$hWC=WinClose($WinClass,$text) ; such as, "[CLASS:OperaWindowClass]";~ 		ConsoleWrite($hWC & @LF)
	WEnd
EndFunc


; #FUNCTION# ====================================================================================================================
; Name...........: _AU3RecordSetup
; Description ...: Au3 File Record Setup.
; Syntax.........: _AU3RecordSetup()
; ===============================================================================================================================
Func _AU3RecordSetup()
	Opt('WinWaitDelay',100)
	Opt('WinDetectHiddenText',1)
	Opt('MouseCoordMode',0)
EndFunc   ;==>_AU3RecordSetup


; #FUNCTION# ====================================================================================================================
; Name...........: _WinWaitActivate
; Description ...: @ctivate a opening windows.
; Syntax.........: _WinWaitActivate($title,$text,$timeout=0)
; Parameters ....: $title   - The title of the window to check. See Title special definition.
;                  $text   - The text of the window to check.
;                  $timeout - Timeout in seconds
; Return values .: Success - Returns handle to the requested window.
;                  Failure - Returns 0 if timeout occurred.
; Author ........: AutoIt
; ===============================================================================================================================
Func _WinWaitActivate($title,$text="",$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc   ;==>_WinWaitActivate


Func _DownloadFile($URLToDownload,$SavedPath,$FileName)
	Local $hDownload=InetGet($URLToDownload, $SavedPath & '\' & $FileName, 1, 1)
	Do
		Sleep(250)
	Until InetGetInfo($hDownload, 2) ; Check if the download is complete.
	InetClose($hDownload) ; Close the handle to release resources.
EndFunc   ;==>_DownloadFile


Func _GetFirstInfoBetweenTags($URL,$BeginTag,$EndTag)
	$array=_StringBetween(_INetGetSource($URL),$BeginTag,$EndTag);~ 	_ArrayDisplay($array, '')
	Return $array[0]
EndFunc   ;==>


Func _GetLinkDownload($file,$BeginTag,$EndTag)
	While 1 ; Read in lines of text until the EOF is reached
		Local $line=FileReadLine($file)
		If @error=-1 Then
			Return 0
			ExitLoop
		EndIf
		If StringInStr($line,$BeginTag) And StringInStr($line,$EndTag) Then
			$array0=_StringBetween($line,$BeginTag,$EndTag) ;~			ConsoleWrite($line & @CRLF); ConsoleWrite('http:' & $array0[0] & @CRLF)
			Return $array0[0]
		EndIf
	WEnd
EndFunc   ;==>


Func _GetLinkMediaFire($file,$BeginTag,$EndTag,$FileTitleTag)
	While 1 ; Read in lines of text until the EOF is reached
		Local $line=FileReadLine($file)
		If @error=-1 Then
			Return 0
			ExitLoop
		EndIf
		If StringInStr($line,"http") And StringInStr($line,$BeginTag) And StringInStr($line,$EndTag) And StringInStr($line,$FileTitleTag) Then
			$array0=_StringBetween($line,$BeginTag,$EndTag) ; ConsoleWrite($line & @CRLF); ConsoleWrite('http:' & $array0[0] & @CRLF)
			Return 'http:' & $array0[0]
		EndIf
	WEnd
EndFunc


Func _GetFileName($Path,$FileExt,$Character)
	Local $FileList=_FileListToArray($Path)
	If @error=1 Then
		MsgBox(0,"","No folders found.",10)
		Exit
	EndIf
	If @error=4 Then
		MsgBox(0,"","No files found.",10)
		Exit
	EndIf
	Local $sFlag=True
	Local $iStart=0;~ ConsoleWrite(UBound($FileList))
	$n=UBound($FileList)
	Global $SeekFile[$n+1]
	$i=0
	$SeekFile[$i]=0
	$sExt=$FileExt ;".exe"
	While $sFlag=True
		Local $iIndex=_ArraySearch($FileList,$sExt,$iStart,0,0,1)
		If @error Then
			$sFlag=False
		Else
			$SeekFile[$i]=$FileList[$iIndex]
			If StringInStr($SeekFile[$i],$Character,1) Then ; 'SETUP.EXE';~ 				MsgBox(0,"Found needed exe file",'The exe file #' & $i & ': ' & $SeekFile[$i],1)
				$Found=$SeekFile[$i]
			EndIf
			$i=$i+1
		EndIf
		$iStart=$iIndex+1
	WEnd
	Return $Found
EndFunc


; Manipulate system tray program (right click, choose option).au3
Func Get_Systray_Index($sToolTipTitle)
    ; Find systray handle
    $hSysTray_Handle=ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]')
    If @error Then
        MsgBox(16, "Error", "System tray not found")
        Exit
    EndIf
    ; Get systray item count
    Local $iSystray_ButCount=_GUICtrlToolbar_ButtonCount($hSysTray_Handle)
    If $iSystray_ButCount=0 Then
        MsgBox(16, "Error", "No items found in system tray")
        Exit
    EndIf
    ; Look for wanted tooltip
    For $iSystray_ButtonNumber=0 To $iSystray_ButCount - 1
        If StringInStr(_GUICtrlToolbar_GetButtonText($hSysTray_Handle, $iSystray_ButtonNumber), $sToolTipTitle) <> 0 Then ExitLoop
    Next
    If $iSystray_ButtonNumber=$iSystray_ButCount Then
        Return 0 ; Not found
    Else
        Return $iSystray_ButtonNumber ; Found
    EndIf
EndFunc


Func GetPopUpSelText()
    Local $aPopUp_List=_WinAPI_EnumWindowsPopup()
    Local $hWnd=$aPopUp_List[1][0]
    Local $sClass=$aPopUp_List[1][1]
    If $sClass="#32768" Then ; This is a "standard" Windows API popup menu
        $hMenu=_SendMessage($hWnd, $MN_GETHMENU, 0, 0)
        If _GUICtrlMenu_IsMenu($hMenu) Then
            $iCount=_GUICtrlMenu_GetItemCount($hMenu)
            For $j=0 To $iCount - 1
                If _GUICtrlMenu_GetItemHighlighted($hMenu, $j) Then
                    Return _GUICtrlMenu_GetItemText($hMenu, $j)
                EndIf
            Next
        EndIf
    EndIf
    Return ""
EndFunc



; #FUNCTION# ====================================================================================================================
; Name...........: _Get_MonitorsInformation
; Description....: Gets details of all the Displays.
; Syntax.........: _Get_MonitorsInformation()
; Parameters.....: None
; Return values..: The array returned is 8 dimensional and is made up as follows:
;      Success  ====>
;      $array[0][0]=The number of displays on the computer
;      $array[0][1]=The Error code returned by MIService Object
;
;      $array[1][0]=Name
;      $array[1][1]=Monitor Type
;      $array[1][2]=Manfucturer
;      $array[1][3]=DPI X
;      $array[1][4]=DPI Y
;      $array[1][5]=Screen Width
;      $array[1][6]=Screen Height
;      $array[1][7]=Display Type
;                 Failure  ====>
;      $array[0][0]=0
;      $array[0][1]=The Error code returned by MIService Object
; Author.........: Antonio Do Rosario (Aipion)
; Remarks........: Works with Windows 2000, 2003, XP, Vista and 7
; Example........: No
;~ #include <Array.au3>
;~ $DisplaysArray=_Get_MonitorsInformation()
;~ _ArrayDisplay($DisplaysArray)
;~ ConsoleWrite($DisplaysArray[1][5])
;~ ConsoleWrite($DisplaysArray[1][6])
; ===============================================================================================================================
Func _Get_MonitorsInformation() ; Get resolution of 2nd or 3rd monitor
   Local $objWMIService ; As Object
   Local $colItems  ; As Object
   Local $objItem  ; As Object
   Local $DisplaysArray[1][8]
   Local $objWMIService=ObjGet("winmgmts:\\.\root\cimv2")
   $DisplaysArray[0][1]=Hex(@error, 8)
   If @error Then
   ;Error Getting an @ctive WMIService Object.
   $DisplaysArray[0][0]=0
   Return $DisplaysArray
   EndIf
   $colItems=$objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
   For $objItem In $colItems
   $DisplaysArray[0][0] += 1
   ReDim $DisplaysArray[$DisplaysArray[0][0]+1][8]
   $DisplaysArray[$DisplaysArray[0][0]][0]=$objItem.Name      ;Name
   $DisplaysArray[$DisplaysArray[0][0]][1]=$objItem.MonitorType     ;Monitor Type
   $DisplaysArray[$DisplaysArray[0][0]][2]=$objItem.MonitorManufacturer   ;Manufacturer
   $DisplaysArray[$DisplaysArray[0][0]][3]=$objItem.PixelsPerXLogicalInch ;DPI X
   $DisplaysArray[$DisplaysArray[0][0]][4]=$objItem.PixelsPerYLogicalInch ;DPI Y
   $DisplaysArray[$DisplaysArray[0][0]][5]=$objItem.ScreenWidth     ;Screen Width
   $DisplaysArray[$DisplaysArray[0][0]][6]=$objItem.ScreenHeight    ;Screen Height
   ;Display Type
   Switch $objItem.DisplayType
   Case 0
   $DisplaysArray[$DisplaysArray[0][0]][7]="Unknown"
   Case 1
   $DisplaysArray[$DisplaysArray[0][0]][7]="Other"
   Case 2
   $DisplaysArray[$DisplaysArray[0][0]][7]="MultiScan Color"
   Case 3
   $DisplaysArray[$DisplaysArray[0][0]][7]="MultiScan Monochrome"
   Case 4
   $DisplaysArray[$DisplaysArray[0][0]][7]="Fixed Frequency Color"
   Case 5
   $DisplaysArray[$DisplaysArray[0][0]][7]="Fixed Frequency Monochrome"
   Case Else
   $DisplaysArray[$DisplaysArray[0][0]][7]="Unknown"
   EndSwitch
   Next
   Return $DisplaysArray
EndFunc


; #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
; #FUNCTION# ====================================================================================================================
; Name ..........: _DesktopDimensions
; Description ...: Returns an array containing information about the primary and virtual monitors.
; Syntax ........: _DesktopDimensions()
; Return values .: Success - Returns a 6-element array containing the following information:
;                  $aArray[0]=Number of elements.
;                  $aArray[1]=Total number of monitors.
;                  $aArray[2]=Width of the primary monitor.
;                  $aArray[3]=Height of the primary monitor.
;                  $aArray[4]=Total width of the desktop including the width of multiple monitors. Note: If no secondary monitor this will be the same as $aArray[2].
;                  $aArray[5]=Total height of the desktop including the height of multiple monitors. Note: If no secondary monitor this will be the same as $aArray[3].
; Author ........: guinness
; Remarks .......: WinAPI.au3 must be included i.e. #include <winapi.au3>
; Related .......: @DesktopWidth, @DesktopHeight, _WinAPI_GetSystemMetrics
; Example .......: Yes
;~ #include <WinAPI.au3>
;~ #include <WindowsConstants.au3>
;~ Global $aScreenResolution
;~ $aScreenResolution=_DesktopDimensions()
;~ ConsoleWrite("Example of _DesktopDimensions():" & @CRLF & _
;~         "Number of monitors=" & $aScreenResolution[1] & @CRLF & _
;~         "Primary Width=" & $aScreenResolution[2] & @CRLF & _
;~         "Primary Height=" & $aScreenResolution[3] & @CRLF & _
;~         "Secondary Width=" & $aScreenResolution[4] & @CRLF & _
;~         "Secondary Height=" & $aScreenResolution[5] & @CRLF)
; ===============================================================================================================================
Func _DesktopDimensions() ; _DesktopDimensions() - Details about the primary and secondary monitors.
    Local $aReturn[6]=[5, _
            _WinAPI_GetSystemMetrics($SM_CMONITORS), _ ; Number of monitors.
            _WinAPI_GetSystemMetrics($SM_CXSCREEN), _ ; Width or Primary monitor.
            _WinAPI_GetSystemMetrics($SM_CYSCREEN), _ ; Height or Primary monitor.
            _WinAPI_GetSystemMetrics($SM_CXVIRTUALSCREEN), _ ; Width of the Virtual screen.
            _WinAPI_GetSystemMetrics($SM_CYVIRTUALSCREEN)] ; Height of the Virtual screen.
    Return $aReturn
EndFunc   ;==>_DesktopDimensions


;~ Func Show_About()
;~ 	MsgBox(64, "About " & $shortscrname, $fullscrname & @LF & @LF & $version & @LF & "Coded by PPCC") ;Hotkey:...
;~ EndFunc


Func _ProcessGetLocation($iPID)
	Local $aProc=DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
	If $aProc[0]=0 Then Return SetError(1, 0, '')
	Local $vStruct=DllStructCreate('int[1024]')
	DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
	Local $aReturn=DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
	If StringLen($aReturn[3])=0 Then Return SetError(2, 0, '')
	Return $aReturn[3]
EndFunc


; For ä ö ü ß Ä Ö Ü € ´ (Special German keyboard)
HotKeySet("+{F1}","a_umlaut")
Func a_umlaut()
	Send("ä")
EndFunc
HotKeySet("^+{F1}","ca_umlaut")
Func ca_umlaut()
	Send("Ä")
EndFunc
HotKeySet("+{F2}","o_umlaut")
Func o_umlaut()
	Send("ö")
EndFunc
HotKeySet("^+{F2}","co_umlaut")
Func co_umlaut()
	Send("Ö")
EndFunc
HotKeySet("+{F3}","u_umlaut")
Func u_umlaut()
	Send("ü")
EndFunc
HotKeySet("^+{F3}","cu_umlaut")
Func cu_umlaut()
	Send("Ü")
EndFunc
HotKeySet("+{F4}","eszett")
Func eszett()
	Send("ß")
EndFunc
HotKeySet("^+{F4}","euro")
Func euro()
	Send("€")
EndFunc
HotKeySet("+{F5}","acute_accent")
Func acute_accent()
	Send("´")
EndFunc


; Copy and edit from http://www.autoitscript.com/forum/topic/133222-manipulate-system-tray-program-right-click-choose-option/
Func _ActiveContextMenuSysTrayIcon($SendKey,$sToolTipTitle)
	Run('control /name Microsoft.NotificationAreaIcons')
	While 1
		If WinActive("Notification Area Icons") Then ExitLoop
	WEnd
	_WinWaitActivate("Notification Area Icons","")
	ControlSend("Notification Area Icons","","Button3","{ALTDOWN}a{ALTUP}{+}");~ 	ControlCommand("Notification Area Icons","","Button3","Check", "");~ 	Send("{ALTDOWN}a{ALTUP}{+}")
	Sleep(1500)
	Global $hSysTray_Handle, $iSystray_ButtonNumber
	Opt("WinTitleMatchMode", 2)
	$iSystray_ButtonNumber=Get_Systray_Index($sToolTipTitle)
	Opt("WinTitleMatchMode", 1)
	If $iSystray_ButtonNumber=0 Then
		MsgBox(16, "Error", "The '" & $sToolTipTitle & "' application seems to be not running!",5);~     Exit
	Else
		Sleep(500)
		_GUICtrlToolbar_ClickButton($hSysTray_Handle, $iSystray_ButtonNumber, "right")
		Sleep(500)
;~ 		$SendKeyArray=StringSplit($SendKey,"")
;~ 		For $Mã In $SendKeyArray
;~ 			Send($Mã); Move your cursor around on the menu here <<<<<<<<<<<<<<<<<<<<<<<<<<<;~     ConsoleWrite(GetPopUpSelText() & @CRLF) ; This will read the currently selected item <<<<<<<<<<<<<<<<<<<<<<<<<<<<
;~ 		Next
		Send($SendKey)
		Sleep(1500)
	EndIf
	WinActivate("Notification Area Icons","")
	ControlSend("Notification Area Icons","","Button3","{ALTDOWN}a{ALTUP}{-}")
	Sleep(500)
	WinClose("Notification Area Icons")
EndFunc

Func _ActiveContextMenuSysTrayIcon_SafelyRemove($SendKey,$sToolTipTitle)
	Run('control /name Microsoft.NotificationAreaIcons')
	While 1
		If WinActive("Notification Area Icons") Then ExitLoop
	WEnd
	_WinWaitActivate("Notification Area Icons","")
	ControlSend("Notification Area Icons","","Button3","{ALTDOWN}a{ALTUP}{+}");~ 	ControlCommand("Notification Area Icons","","Button3","Check", "");~ 	Send("{ALTDOWN}a{ALTUP}{+}")
	Sleep(1500)
	Global $hSysTray_Handle, $iSystray_ButtonNumber
	Opt("WinTitleMatchMode", 2)
	$iSystray_ButtonNumber=Get_Systray_Index($sToolTipTitle)
	Opt("WinTitleMatchMode", 1)
	If $iSystray_ButtonNumber=0 Then
		MsgBox(16, "Error", "Probably no USB device connecting!",2);~     Exit
	Else
		Sleep(100)
		_GUICtrlToolbar_ClickButton($hSysTray_Handle, $iSystray_ButtonNumber, "left")
		Sleep(2000)
;~ 		$SendKeyArray=StringSplit($SendKey,"")
;~ 		For $Mã In $SendKeyArray
;~ 			Send($Mã); Move your cursor around on the menu here <<<<<<<<<<<<<<<<<<<<<<<<<<<;~     ConsoleWrite(GetPopUpSelText() & @CRLF) ; This will read the currently selected item <<<<<<<<<<<<<<<<<<<<<<<<<<<<
;~ 		Next
		Send($SendKey)
		Sleep(1500)
	EndIf
	WinActivate("Notification Area Icons","")
	ControlSend("Notification Area Icons","","Button3","{ALTDOWN}a{ALTUP}{-}")
	Sleep(500)
	WinClose("Notification Area Icons")
EndFunc




; Copy and edit from http://www.autoitscript.com/forum/topic/102160-msgbox-with-downtime-count/page__view__findpost__p__751116
Func MsgBoxDJS($flag, $title, $text, $timeout=10, $Cflag=1, $hwnd='')
	Global $vStringFormat='%01s'
    Global $Timer=DllCallbackRegister('Timer', 'int', 'hwnd;uint;uint;dword')
    If $timeout='' Or $timeout=-1 Then $timeout=10
    Global $_title=$title, $_text=$text, $_Cflag=$Cflag, $_ibj=1, $_ttc=$timeout, $bttxtbj=0
    Global $TimerDLL=DllCall('user32.dll', 'uint', 'SetTimer', 'hwnd', 0, 'uint', 0, 'int', 1000, 'ptr', DllCallbackGetPtr($Timer))
    Local $Mkmsg
    If $Cflag=0 Then
        If StringRegExp($title, '%s')=0 Then
            $title='%s' & $title
            $_title=$title
        EndIf
        $title=StringRegExpReplace($title, "%s", StringFormat($vStringFormat, $_ttc), 1)
    EndIf
    If $Cflag=1 Then
        If StringRegExp($text, '%s')=0 Then
            $text=$text & ' %s seconds.' ;'%s' & $text
            $_text=$text
        EndIf
        $text=StringRegExpReplace($text, "%s", StringFormat($vStringFormat, $_ttc), 1)
    EndIf
    $Mkmsg=MsgBox($flag, $title, $text)
    DllClose($TimerDLL)
    DllCallbackFree($Timer)
    Return $Mkmsg
EndFunc   ;==>MsgBoxDJS
Func Timer($hwnd, $uiMsg, $idEvent, $dwTime)
    Global $TimerDLL, $bttxtbj, $_Cflag, $_title, $_ttc, $_text, $_ibj, $Timer
    If $idEvent=$TimerDLL[0] Then
        Global $bttxt, $CtrlF, $Static
        If $bttxtbj=0 Then
            If $_Cflag=0 Then $CtrlF=ControlGetFocus(StringRegExpReplace($_title, "%s", StringFormat($vStringFormat, $_ttc), 1))
            If $_Cflag=1 Or $_Cflag=2 Then $CtrlF=ControlGetFocus($_title)
            $bttxt=ControlGetText($_title, $_text, $CtrlF)
            If $_Cflag=1 Then
                $Static='Static1'
                ControlGetText($_title, StringRegExpReplace($_text, "%s", StringFormat($vStringFormat, $_ttc), 1), 'Static1')
                If @error Then $Static='Static2'
            EndIf
            $bttxtbj=1
        EndIf
        If $_Cflag=0 Then
            $_title1=StringRegExpReplace($_title, "%s", StringFormat($vStringFormat, $_ttc - $_ibj + 1), 1)
            $_title2=StringRegExpReplace($_title, "%s", StringFormat($vStringFormat, $_ttc - $_ibj), 1)
            WinSetTitle($_title1, $_text, $_title2)
        ElseIf $_Cflag=1 Then
            $_text1=StringRegExpReplace($_text, "%s", StringFormat($vStringFormat, $_ttc - $_ibj + 1), 1)
            $_text2=StringRegExpReplace($_text, "%s", StringFormat($vStringFormat, $_ttc - $_ibj), 1)
            ControlSetText($_title, $_text1, $Static, $_text2)
        ElseIf $_Cflag=2 Then
            ControlSetText($_title, $_text, $CtrlF, $bttxt & StringFormat(' %03s', $_ttc - $_ibj))
        EndIf
        If $_ibj=$_ttc Then
            If $_Cflag=0 Then $_title=$_title2
            If $_Cflag=1 Then $_text=$_text2
            DllClose($TimerDLL)
            DllCallbackFree($Timer)
            ControlClick($_title, $_text, $CtrlF, '', 2)
        EndIf
        $_ibj += 1
    EndIf
EndFunc   ;==>Timer


; http://www.autoitscript.com/forum/topic/112868-getting-progressbar-to-work-with-inetget/
; $FileURL1="http://download.macromedia.com/pub/flashplayer/current/uninstall_flash_player.exe"
; $FileName1="uninstall_flash_player.exe"
; $Program1="Flash uninstall"
; _DownloadProgress($FileURL1, $FileName1, $Program1)
Func _DownloadFileProgress($FileURL, $FileName, $ProgramName, $SavedDir=@TempDir)
	$FileSaveLocation=$SavedDir & "\" & $FileName
    $FileSize=InetGetSize($FileURL)
    $FileDownload=InetGet($FileURL, $FileSaveLocation, 0, 1)
    ProgressOn("", "", "", -1, 5, 18)
    Do
        $Percentage=InetGetInfo($FileDownload, 0) * 100 / $FileSize
        ProgressSet($Percentage, Round($Percentage, 0) & "% Downloaded " & Round(InetGetInfo($FileDownload, 0) / 1048576, 2) & " of " & Round($FileSize / 1048576, 2) & " MB", "Downloading " & $ProgramName)
        Sleep(250)
    Until InetGetInfo($FileDownload, 2)
EndFunc   ;==>_DownloadFileProgress


Func _GetNewestFile($sExt,$sPath)
	Local $FileList=_FileListToArray($sPath)
	Local $sFlag=True
	Local $iStart=0
	$n=UBound($FileList)
	Local $SeekFile[$n+1]
	$i=0
	$SeekFile[$i]=0
	While $sFlag=True
		Local $iIndex=_ArraySearch($FileList,$sExt,$iStart,0,0,1)
		If @error Then
			$sFlag=False
		Else
			$SeekFile[$i]=$FileList[$iIndex]
			$i=$i+1
		EndIf
		$iStart=$iIndex+1
	WEnd
	$NewestFile=$SeekFile[1]
	$t1=Int(FileGetTime($sPath & "\" & $SeekFile[1],0,1))
	For $j=0 To $i
		Local $t=Int(FileGetTime($sPath & "\" & $SeekFile[$j],0,1))
		If $t>$t1 Then
			$NewestFile=$SeekFile[$j]
			$t1=$t
		EndIf
	Next
	Return $NewestFile
EndFunc


Func _GetFileListOfExtType($sExt,$sPath)
	$FileList=_FileListToArray($sPath)
	$n=UBound($FileList)
	Local $SeekFile[$n+1]
	$iSeek=0
	$SeekFile[$iSeek]=0
	$sFlag=True
	$iStart=0
	While $sFlag=True
		Local $iIndex=_ArraySearch($FileList,$sExt,$iStart,0,0,1)
		If @error Then
			$sFlag=False
		Else
			$SeekFile[$iSeek]=$FileList[$iIndex]
			$iSeek=$iSeek+1
		EndIf
		$iStart=$iIndex+1
	WEnd
	Return $SeekFile
EndFunc


Func _ClickButtonAfterWait($title,$text="",$button="Button1",$timeout=1,$WinTitleMatchMode=2)
	$t=0
	While 1
		Opt("WinTitleMatchMode",$WinTitleMatchMode)
		WinActivate($title)
		If WinActive($title) Then
			ControlClick($title,$text,$button)
			ExitLoop
		EndIf
		Opt("WinTitleMatchMode",1)
		Sleep(1000)
		$t=$t+1
		If $t=$timeout Then ExitLoop
	WEnd
EndFunc


Func _WinCloseAfterWait($title,$text="",$timeout=5,$WinTitleMatchMode=2,$step=1)
	$t=0
	While 1
		Opt("WinTitleMatchMode",$WinTitleMatchMode)
		WinActivate($title,$text)
		If WinActive($title,$text) Then
			WinClose($title,$text)
			ExitLoop
		EndIf
		Opt("WinTitleMatchMode",1)
		If $t>$timeout*1000 Then ExitLoop
		$t=$t+$step
		Sleep($step)
	WEnd
EndFunc


Func _WaitNotFileExists($path)
	While 1
		If Not FileExists($path) Then ExitLoop
	WEnd
EndFunc


Func _WaitFileExists($path)
	While 1
		If FileExists($path) Then ExitLoop
	WEnd
EndFunc


Func _OpenFolder($path)
	If FileExists($path) Then
		ShellExecute($path)
	Else
		MsgBox(16,"Error",$path & " is not found!",2)
	EndIf
EndFunc


Func _WaitUntilAWindowsActivate($title,$text="",$timeout=5,$WinTitleMatchMode=2)
	$t=0
	$WinTitle=""
	$WAv=0
	While 1
		Opt("WinTitleMatchMode",$WinTitleMatchMode)
		$WAv=WinActivate($title,$text)
		Opt("WinTitleMatchMode",1)
		If $WAv<>0 Then
			Sleep(100)
			$WinTitle=WinGetTitle("")
			ExitLoop
		EndIf
		Sleep(1000)
		$t=$t+1
		If $t=$timeout Then ExitLoop
	WEnd
	Return $WinTitle
EndFunc
;~ ; Test
;~ $timeout=60
;~ $title="Used Functions"
;~ $text=""
;~ $WinTitleMatchMode=1
;~ $WinTitle=_WaitUntilAWindowsActivate($title,$text,$timeout,$WinTitleMatchMode)
;~ If $WinTitle<>"" Then
;~ 	ConsoleWrite('Windows with title "'& $WinTitle &'" has just @ctivated.' & @CRLF)
;~ Else
;~ 	ConsoleWrite('Windows with title included "'& $title &'" cannot be @ctivate within ' & $timeout & ' seconds.' & @CRLF)
;~ EndIf


Func _WaitUntilAWindowsNotActivate($title,$text="",$timeout=5,$WinTitleMatchMode=2)
	$t=0
	$WinTitle=""
	While 1
		Opt("WinTitleMatchMode",$WinTitleMatchMode)
		$WAv=WinActivate($title,$text)
		Opt("WinTitleMatchMode",1)
		If $WAv=0 Then
			Sleep(100)
			$WinTitle=WinGetTitle("")
			ExitLoop
		EndIf
		Sleep(1000)
		$t=$t+1
		If $t=$timeout Then ExitLoop
	WEnd
	Return $WinTitle
EndFunc


; http://www.autoitscript.com/forum/topic/83348-check-internet-connection/
Func _GetNetworkConnect()
    Local Const $NETWORK_ALIVE_LAN = 0x1  ;net card connection
    Local Const $NETWORK_ALIVE_WAN = 0x2  ;RAS (internet) connection
    Local Const $NETWORK_ALIVE_AOL = 0x4  ;AOL

    Local $aRet, $iResult

    $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0)

    If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "LAN connected" & @LF
    If BitAND($aRet[1], $NETWORK_ALIVE_WAN) Then $iResult &= "WAN connected" & @LF
    If BitAND($aRet[1], $NETWORK_ALIVE_AOL) Then $iResult &= "AOL connected" & @LF

    Return $iResult
EndFunc
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#8
Bài 5 - Quản lý Traybar (...) mở chọn menu chuột phải,...

Bài 5 - Quản lý Traybar (thanh tác vụ chứa những chương trình chạy ẩn như Yahoo, Skype, Antivirus) - mở chọn menu chuột phải,...

Lấy một thí dụ thông qua mở menu chuột phải của chương trình Skype chạy ẩn dưới thanh tác vụ và chọn "Change online status" rồi chọn tiếp "Online" hoặc "Away" hoặc một lựa chọn khác.
Chương trình chạy trong Windows 7.

Mã:
#include <PPCC.au3>

_AU3RecordSetup()

#NoTrayIcon

$sToolTipTitle = "Skype"  ; Add the text of your tray icon here <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$SendKey="c{DOWN 4}{ENTER}" 	; Change online status to...
								; 	"co" = "Online"
								;	"ci" = "Invisible"
								;	"ca" = "Away"
								;	"cd" = "Do not disturb"
								;	"c{DOWN 4}{ENTER}" = "Offline"
_ActiveContextMenuSysTrayIcon($SendKey,$sToolTipTitle)
If $SendKey="q" Then
	_WinWaitActivate("Quit Skype?","",1)
	If WinActive("Quit Skype?","") Then
		_WinWaitActivate("Quit Skype?","")
		Send("{TAB}{SPACE}{TAB}{SPACE}")
	EndIf
EndIf


Bài tiếp theo có lẽ là: Tìm và kích hoạt đối tượng (nút bấm) trên màn hình khi không dễ dàng lấy được Control Info của nó
(chẳng hạn các nút bấm trên cửa sổ giao diện với flash hoặc trên website).
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#9
Bài 6 - Font tiếng Việt trong soạn thảo và hiển thị giao diện

Bài 6 - Font tiếng Việt trong soạn thảo và hiển thị giao diện

Để sử dụng font tiếng Việt trong AutoIt3 cũng như tạo ra giao diện với đầy đủ font tiếng Việt hãy làm các bước sau:

- Mở SciTE Script Editor (mặc định là "C:\Program Files\AutoIt3\SciTE\SciTE.exe").
- Tạo một file au3 mới hoặc mở một file au3 cũ.
- Vào File menu chọn Encoding... như hình sau:



(Các dạng ngôn ngữ khác cũng có thể được cài đặt theo cách này).
- Tiếp đó soạn tiếng Việt trong các câu lệnh bình thường và hiển thị kết quả, thí dụ:

Mã:
MsgBox(0,"Thí dụ","Sử dụng font tiếng Việt trong AutoIt3 cũng như tạo ra giao diện với đầy đủ font tiếng Việt")


 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#10
Bài 7 - Giải pháp chạy ẩn một tiến trình cài đặt mà vẫn điều khiển được

Bài 7 - Giải pháp chạy ẩn một tiến trình cài đặt mà vẫn điều khiển được [/COLOR]

Dựa theo hỏi đáp giữa bạn damthoai18 và tớ, tớ viết lại đoạn sau để chạy ẩn một quá trình cài đặt và vẫn tùy biến được các nút ấn (kể cả các thông số cần nhập thêm vào, các bạn dùng ControlSend, ControlSetText,...). Đoạn dưới đây thực hiện hai lần kích hoạt hai nút bấm ở hai cửa sổ tương ứng được chạy ẩn dưới TaskBar (xem chi tiết bên dưới). Khi xem các bạn có thể xem hết lượt bài viết này, khi tiến hành thì các bạn nên theo từ đoạn PS thôi. Đoạn trước PS được viết khi tớ chưa tìm được cách chạy ẩn.

Lúc trước khi trao đổi với anhdv, tớ đã chưa làm được việc chạy ẩn và kích hoạt ẩn này.

Cảm ơn các bạn về những đoạn trao đổi này, nó giúp mình hiểu thêm vài lệnh.
damthoai18
Chào bạn, mình thấy bạn có hướng dẫn mọi nguời dùng Autoit để tự động hoá trong Windows, vậy bạn có thể giúp mình cái này không,
Mình có một PM rất khó tính muốn đưa vào WinPE mình dùng code autoit sau để tự động cài
http://www.mediafire.com/?djb2u2upousy4b4
Vấn đề là nó hiện lên các thao tác nên mình không thích, bạn có thể hướng dẫn hoặc cho mình cái code để việc cài đặt hoàn toàn ẩn luôn không
Link tải PM
http://www.winarchiver.com/WADrive28.exe
Mong được bạn giúp đỡ!

Sửa Report
Không phải file exe nào cũng có thể cài hoàn toàn ẩn được, nó tuỳ thuộc vào người tạo ra đã tích hợp chức năng đó và câu lệnh như thế nào. Thường thì tham số cho cài ẩn là file.exe -s hoặc /s hoặc /q,... nhưng tớ vừa thử với file đó thì không được. Bạn phải dùng cách cho hiển thị giao diện cài đặt thôi. Có thể thay các lệnh Send, Click bằng ControlSend, ControlClick (tra Help của AutoIt nhé) để các thao tác đó "có vẻ ẩn", nhưng vẫn phải dùng WinActive và WinActivate để gọi đúng cửa sổ cần kích hoạt.
damthoai18
Report
Vậy bạn có thể chỉ cho mình khi chạy thì ẩn của sổ xuống taskbar được không, mình mò mãi không ra, với mấy cái tham số của bạn gợi ý mình thử rồi nó chạy nhưng lại không cài chuong trình cứ dúng đó mãi

Chân thành cảm ơn!


Đôi khi tớ cũng cần chức năng này nhưng đến giờ vẫn chưa có giải pháp toàn diện. Tạm thời tớ làm như sau:

Để ẩn cửa sổ thì có thể dùng lệnh WinMinimizeAll() hoặc kết hợp sử dụng function sau để lưu lại tên một cửa sổ trước khi thực hiện một số lệnh khác, thực hiện lệnh đó xong lại kích hoạt cửa sổ cũ đã lưu:

Mã:
$WinTitle=WinGetTitle("")

... ; một số lệnh khác

WinActivate($WinTitle)


Muốn dùng một số lệnh như ControlClick,... thì bạn cần tra cứu Help thật kỹ, muốn lấy đối tượng để điều khiển bạn hãy dùng tool "C:\Program Files\AutoIt3\Au3Info.exe", giữ chuột vào cái Finder Tool rồi kéo vào nút, ô,... (đối tượng) muốn biết thông tin điều khiển. Bạn chạy lại đoạn sau đây thì sẽ hiểu hơn:

Đoạn này thực hiện 2 lần bấm nút (một lần Cancel ở cửa sổ thứ nhất, một lần OK ở cửa sổ thứ hai, ngay mỗi khi chúng vừa hiện lên). Đường dẫn cho WADrive28.exe cần sửa cho phù hợp trong máy của bạn. Các ControlID của các button được lấy bằng Au3Info.exe, mấy lệnh _WinWaitActivate dựa theo chức năng Au3Recorder của SciTE.

Mã:
;~ #include <PPCC.au3>

;~ WinMinimizeAll()
$WinTitle=WinGetTitle("")
Run("WADrive28.exe")
_WinWaitActivate("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys")
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys","Button3")
WinActivate($WinTitle)
$WinTitle=WinGetTitle("")
_WinWaitActivate("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan")
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan","Button1")
WinActivate($WinTitle)
;~ WinMinimizeAllUndo()

Func _WinWaitActivate($title,$text="",$timeout=0)
	WinWait($title,$text,$timeout)
	If Not WinActive($title,$text) Then WinActivate($title,$text)
	WinWaitActive($title,$text,$timeout)
EndFunc   ;==>_WinWaitActivate










PS: Tớ làm được rồi, có vẻ gần giống ẩn hoàn toàn :D, bạn thử đoạn sau nhé. @SW_MINIMIZE dùng để minimize cửa sổ lệnh khi Run, $WinTitle chứa title của cửa sổ trước khi chạy đoạn lệnh này.

Mã:
$WinTitle=WinGetTitle("")
Run("WADrive28.exe","",@SW_MINIMIZE)
WinWait("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys")
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys","Button3")
WinWait("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan")
WinActivate($WinTitle)
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan","Button1")

hoặc đơn giản hơn một chút:

Mã:
Run("WADrive28.exe","",@SW_MINIMIZE)
WinWait("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys",@SW_MINIMIZE)
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Nullsoft Install Sys","Button3")
WinWait("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan",@SW_MINIMIZE)
ControlClick("WinArchiver Virtual Drive 2.8 Setup","Are you sure you wan","Button1")
 

thebest4iu

Số Nguyên Tố
Thành viên BQT
Tham gia
2/7/12
Bài viết
5,587
Thích
5,394
Nơi ở
21.255942,105.384979
#11
Mình đã gắn bó với autoit 5 năm rồi, AutoIT tương đối dễ học, và dễ dùng, cũng rất thích hợp với những ai chưa biết lập trình nhưng yêu thích lập trình, học xong pascal thì dư sức học từ từ autoit, đây là những sản phẩm mà mình làm đc từ nó :D (chỉ là cái soft cùi, show lên cho những ai đang có ý định học tập biết được autoit có thể làm gì ;) , soft này lên báo echip ngày 30/5/2011)







(làm nhưng chẳng sử dụng lần nào ==!)
và cả cái này :D http://www.youtube.com/watch?feature=player_embedded&v=SedxPcG5_gU

Các bạn nào yêu thích lập trình bằng autoit có thể tham khảo bài viết này
 

amen_boy

Member Chính Thức
Tham gia
25/6/12
Bài viết
22
Thích
2
#14
Xin chào cả nhà!
Em có sưu tầm được vài soft silent. và em muốn tạo 1 file setup.exe khi click vào đó thì nó sẽ tự động cài đặt lần lượt từ phần mềm này đến phần mềm kia. Em có thử dùng cmd như hướng dẫn của các anh nhưng nó không được tối ưu và đôi khi bị lỗi khi cài đặt. Các anh có thể hướng dẫn em sử dụng là Soft Auto Install bằng Auto IT với. Em muốn làm 1cái như của anh Khatmau_sr trong bản Ghost AutumnFinal. Nếu có thể thì các anh hướng dẫn giúp em !!
 
Tham gia
29/2/12
Bài viết
1,867
Thích
643
#18
Xin chào cả nhà!
Em có sưu tầm được vài soft silent. và em muốn tạo 1 file setup.exe khi click vào đó thì nó sẽ tự động cài đặt lần lượt từ phần mềm này đến phần mềm kia. Em có thử dùng cmd như hướng dẫn của các anh nhưng nó không được tối ưu và đôi khi bị lỗi khi cài đặt. Các anh có thể hướng dẫn em sử dụng là Soft Auto Install bằng Auto IT với. Em muốn làm 1cái như của anh Khatmau_sr trong bản Ghost AutumnFinal. Nếu có thể thì các anh hướng dẫn giúp em !!
Auto thì được nhưng chả xài autoit và cách soft sient phải click là install luôn.
 

amen_boy

Member Chính Thức
Tham gia
25/6/12
Bài viết
22
Thích
2
#19
Nếu biết thì chỉ em đi sài cmd cũng được.
 

boycaonguyen88

Member Chính Thức
Tham gia
22/8/12
Bài viết
16
Thích
0
#20
Xin chào cả nhà!
Em có sưu tầm được vài soft silent. và em muốn tạo 1 file setup.exe khi click vào đó thì nó sẽ tự động cài đặt lần lượt từ phần mềm này đến phần mềm kia. Em có thử dùng cmd như hướng dẫn của các anh nhưng nó không được tối ưu và đôi khi bị lỗi khi cài đặt. Các anh có thể hướng dẫn em sử dụng là Soft Auto Install bằng Auto IT với. Em muốn làm 1cái như của anh Khatmau_sr trong bản Ghost AutumnFinal. Nếu có thể thì các anh hướng dẫn giúp em !!
bạn qua topic phần mềm silent của mình dưới chữ ký!
 

Bài xem nhiều

Chia sẻ kiến thức - Download phần mềm