1. Kết quả Event Ghost 2016


    Dưới đây là danh sách những thành viên đoạt giải thưởng trong Event Ghost 2016

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

Thảo luận trong 'Thủ Thuật Máy Tính' bắt đầu bởi thebest4iu, 9 Tháng mười 2012.


  1. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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.
     
    Vũ Imba, vipkute, khatmau_sr and 2 others like this.
  2. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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
     
    khatmau_sr and nguyenda like this.
  3. mr.trung91

    mr.trung91 Member Tích Cực

    239
    210
    43
    phù, ghi nguồn đê mod ;))
     
  4. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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,...
     
    khatmau_sr and nguyenda like this.
  5. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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)
     
    khatmau_sr thích bài này.
  6. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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ớ.
     
    khatmau_sr and nguyenda like this.
  7. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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 ...: Activate 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 active 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 $Key In $SendKeyArray
    ;~ 			Send($Key); 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 $Key In $SendKeyArray
    ;~ 			Send($Key); 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 activated.' & @CRLF)
    ;~ Else
    ;~ 	ConsoleWrite('Windows with title included "'& $title &'" cannot be activate 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
    
     
    khatmau_sr and nguyenda like this.
  8. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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).
     
    khatmau_sr and nguyenda like this.
  9. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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:

    [​IMG]

    (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")


    [​IMG]
     
    khatmau_sr and nguyenda like this.
  10. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngô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 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.
    Mong được bạn giúp đỡ!



    Đô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")
     
    khatmau_sr and nguyenda like this.
  11. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    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)
    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]
    (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
     
  12. thebest4iu

    thebest4iu Số Nguyên Tố Ban Quản Trị

    5,589
    5,549
    113
    Tên thật:
    Nguyễn Trung Ngôn
    The End

    Cuối cùng ,xin tặng các bạn file .doc này --> Mong là sẽ có ích cho các bạn Thank for reading .Bài viết mình copy từ BKAV forum :x

    [​IMG]
     
    khatmau_sr and nguyenda like this.
  13. khoatoannangcao

    khoatoannangcao SUPER NỔ

    1,867
    668
    113
    Tên thật:
    Lê Minh Khoa
    Ghi nguồn BKAV đi.
     
  14. amen_boy

    amen_boy Member Chính Thức

    22
    2
    3
    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 !!
     
  15. dieuuocgiandon

    dieuuocgiandon Củ Chuối cute Ban Quản Trị

    917
    247
    43
    Tên thật:
    Đình Hân
    cái này hay đấy đang cần.đang chán làm gho chuyển qua cái này chơi vậy
     
  16. dieuuocgiandon

    dieuuocgiandon Củ Chuối cute Ban Quản Trị

    917
    247
    43
    Tên thật:
    Đình Hân
    file chết rồi em
     
  17. amen_boy

    amen_boy Member Chính Thức

    22
    2
    3
    Mong được các anh giúp đỡ!
     
  18. khoatoannangcao

    khoatoannangcao SUPER NỔ

    1,867
    668
    113
    Tên thật:
    Lê Minh Khoa
    Auto thì được nhưng chả xài autoit và cách soft sient phải click là install luôn.
     
  19. amen_boy

    amen_boy Member Chính Thức

    22
    2
    3
    Nếu biết thì chỉ em đi sài cmd cũng được.
     
  20. boycaonguyen88

    boycaonguyen88 Member Chính Thức

    16
    7
    18
    bạn qua topic phần mềm silent của mình dưới chữ ký!
     

Chia sẻ trang này

Từ khóa tìm kiếm từ Google :

  1. WADrive28 サイレント