1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hướng dẫn Một vài kiểu hiện GUI

Thảo luận trong 'Hướng dẫn - Bài tập căn bản' bắt đầu bởi ThienAnKID, 6/9/15.

  1. ThienAnKID

    ThienAnKID Thành viên mới
    • 3/6

    Tham gia ngày:
    6/9/15
    Bài viết:
    10
    Đã được thích:
    50
    Nơi ở:
    TP. Hồ Chí Minh
    Hiện GUI của 1 chương trình mình thấy cũng khá quan trọng...
    Nay mình xin gửi đến các thành viên bắt đầu nghiên cứu AutoIT vài kiểu hiện GUI mà mình biết. Mấy pro xem xong chém nhẹ tý nha. :D
    Đầu tiên là GUI ^^! Phải có nó thì mình mới cho nó hiện được chứ.

    Mã (AutoIt):
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1=GUICreate ("Show GUI" , 350 , 274 , -1 , -1)
    $Button1=GUICtrlCreateButton ("Exit" , 133 , 194 , 75 , 25 , 0)
    GUISetState (@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;~ Đặt kiểu hiện GUI ở đây=================
    While  1
    $nMsg=GUIGetMsg ()
    Switch  $nMsg
      Case  $GUI_EVENT_CLOSE
       Exit
      Case  $Button1
       Exit
    EndSwitch
    WEnd
     
    Về tạo GUI thì em khỏi bàn nha ^^! Còn tiếp theo là phần Hiện GUI sao cho thật "ngầu" :cool:

    Và đây là 4 kiểu...

    Mã (AutoIt):
    ;~ GUI từ nhỏ mở rộng ra
    ;~ Lưu Ý: Width và Height đều để=0
    $pos=WinGetPos ($Form1) ;Lấy thông tin về tọa độ và kích thước cửa sổ
    For  $i=1 To  275 Step  +10 ;Cho chạy từ số 1 đến 275
        WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$pos [ 2 ] ,$i) ;Thay đổi kích thước cửa sổ
        Sleep (25) ;Thời gian nghỉ
    Next
    $pos=WinGetPos ($Form1) ;Như trên
    For  $i=1 To  350 Step  +10
        WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ])
        Sleep (25)
    Next
    ;~======================================
    ;~ GUI đi từ dưới lên
    ;~ Lưu ý: thay đổi Height của GUI là @DesktopHeight
    For  $i=1 To  @DesktopHeight *(2 /3) ;Chạy từ số 1 đến Chiều Cao màn hình nhân 2/3
        $pos=WinGetPos ($Form1) ;Lấy thông tin về tọa độ và kích thước cửa sổ
        WinMove ($Form1 ,'' ,$pos [ 0 ] ,@DesktopHeight - $i) ;Cho GUI chạy từ dưới lên
        Sleep (10) ;Thời gian nghỉ
    Next
    ;~======================================
    ;~ GUI từ mờ thành rõ
    For  $i=0 To  255 Step  +15 ;Chạy từ 0 đến 255
        WinSetTrans ('Show GUI' ,'' ,$i) ;Đặt độ mờ cho cửa sổ
        Sleep (50) ;Thời gian nghỉ
    Next
    ;~======================================
    ;~ GUI Hiện Ngang
    ;~ Lưu ý: đặt Width của GUI=0
    $pos=WinGetPos ($Form1) ;Lấy thông tin tọa độ và kích thước cửa sổ
    For  $i=1 To  350 Step  +10 ;Chạy từ 1 đến 350
        WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ]) ;Đặt độ rộng cho cửa sổ theo số đag chạy
        Sleep (42) ;Thời gian nghỉ
    Next
    ;~======================================
     
     
  2. Wizard Gekko

    Wizard Gekko Thành viên mới
    • 1/6

    Tham gia ngày:
    28/9/15
    Bài viết:
    2
    Đã được thích:
    4
    Hay nhỉ =)))) 1 like cho bạn
     
    kamsamita1 and Phan Dong like this.
  3. SonNguyen

    SonNguyen Thành viên mới
    • 3/6

    Tham gia ngày:
    25/9/15
    Bài viết:
    9
    Đã được thích:
    21
    Làm thế này nó giật một cái mới có effect.
     
    kamsamita1 and Phan Dong like this.
  4. Hung ND

    Hung ND Thành viên mới
    • 3/6

    Tham gia ngày:
    5/11/15
    Bài viết:
    5
    Đã được thích:
    5
    nên đặt cái show gui trong vằng lặp for nó sẽ đẹp hơn vì nó làm mờ dần chứ show gui đầu tiên nhìn không đẹp
     
    Phan Dong thích bài này.
  5. Xuân Dũng 38

    Xuân Dũng 38 Thành viên hiểu biết
    • 83/90

    Tham gia ngày:
    9/9/15
    Bài viết:
    89
    Đã được thích:
    1,967
    Nơi ở:
    Hà Nội
    Góp ý : Để Gui Hiện lên được mượt mà và không bị
    các bạn làm như sau :
    Đơn giản chỉ cần thêm Sleep(700) trước GUISetState (@SW_SHOW) như sau
    Mã (AutoIt):

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1=GUICreate ("Show GUI" , 350 , 274 , -1 , -1)
    $Button1=GUICtrlCreateButton ("Exit" , 133 , 194 , 75 , 25 , 0)
    Sleep(700)
    GUISetState (@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;~ GUI từ nhỏ mở rộng ra
    ;~ Lưu Ý: Width và Height đều để=0
    $pos=WinGetPos ($Form1) ;Lấy thông tin về tọa độ và kích thước cửa sổ
    For  $i=1 To  275 Step  +10 ;Cho chạy từ số 1 đến 275

        WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$pos [ 2 ] ,$i) ;Thay đổi kích thước cửa sổ
        Sleep (25) ;Thời gian nghỉ
    Next

    While  1
    $nMsg=GUIGetMsg ()
    Switch  $nMsg
      Case  $GUI_EVENT_CLOSE
       Exit
      Case  $Button1
       Exit
    EndSwitch
    WEnd

     

    Enjoy ;)
     
    Phan Dong thích bài này.
  6. Tungtata

    Tungtata Tà tà mà sống ~ Thành viên BQT Administrator
    • 93/113

    Tham gia ngày:
    25/8/15
    Bài viết:
    289
    Đã được thích:
    924
    Nơi ở:
    Hà Nội
    thêm 1 cách sử dụng dll của windows
    Hiện dần GUI
    Mã (AutoIt):
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $FormMain, "int", 500, "long", 0x00080000)
    Mờ dần GUI
    Mã (AutoIt):
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $FormMain, "int", 300, "long", 0x00090000)
     
    Phan Dong and Xuân Dũng 38 like this.
  7. meocon

    meocon Thành viên mới
    • 3/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    16
    Đã được thích:
    20
    Với cách gọi trên bạn làm thế nào để hiển thị được windows? Bạn chỉ mình dùm nhé.
     
    kamsamita1 thích bài này.
  8. kakanet

    kakanet Thành viên năng động
    • 43/45

    Tham gia ngày:
    24/2/16
    Bài viết:
    203
    Đã được thích:
    211
    @meocon Tổng hợp các kiểu ẩn-hiện GUI bằng DllCall

    Mã (AutoIt):
    ; Animate Display
    ; Author Raindancer

    Global Const $hwnd = GUICreate("Animate Window", 300, 300)
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00080000) ; fade-in
    GUISetState(@SW_SHOWNORMAL)

    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00090000) ; fade-out
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040001) ; slide in from left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050002) ; slide out to left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040002) ; slide in from right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050001) ; slide out to right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040004) ; slide-in from top
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050008) ; slide-out to top
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040008) ; slide-in from bottom
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050004) ; slide-out to bottom
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040005) ; diag slide-in from Top-left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x0005000a) ; diag slide-out to Top-left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040006) ; diag slide-in from Top-Right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050009) ; diag slide-out to Top-Right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040009) ; diag slide-in from Bottom-left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050006) ; diag slide-out to Bottom-left
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x0004000a) ; diag slide-in from Bottom-right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050005) ; diag slide-out to Bottom-right
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00040010) ; explode
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", 0x00050010) ; implode
     
    dongvo2020 and kamsamita1 like this.
  9. meocon

    meocon Thành viên mới
    • 3/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    16
    Đã được thích:
    20
    Cám ơn bạn kakanet nhiều nha. Mình sắp xếp lại để cho nó có thể biểu thị tất cả các dạng window khác nhau một cách tuần tự.
    Mã (AutoIt):
    ;
    ; Animate Display
    ; Author Raindancer

    Global $aWindow_Style = ['0x00080000', _ ; fade-in
                             '0x00090000', _  ; fade-out
                             '0x00040001', _  ; slide in from left
                             '0x00050002', _  ; slide out to left
                             '0x00040002', _  ; slide in from right
                             '0x00050001', _  ; slide out to right
                             '0x00040004', _  ; slide-in from top
                             '0x00050008', _  ; slide-out to top
                             '0x00040008', _  ; slide-in from bottom
                             '0x00050004', _  ; slide-out to bottom
                             '0x00040005', _  ; slide-in from Top-left
                             '0x0005000a', _  ; slide-out to Top-left
                             '0x00040006', _  ; slide-in from Top-Right
                             '0x00050009', _  ; slide-out to Top-Right
                             '0x00040009', _  ; slide-in from Bottom-left
                             '0x00050006', _  ; slide-out to Bottom-left
                             '0x0004000a', _  ; slide-in from Bottom-right
                             '0x00050005', _  ; slide-out to Bottom-right
                             '0x00040010', _  ; explode
                             '0x00050010']     ; implode

    Global Const $hwnd = GUICreate("Animate Window", 200, 200)
    GUISetState(@SW_SHOWNORMAL)
    For $i = 0 To UBound($aWindow_Style) - 1
        DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $hwnd, "int", 1000, "long", $aWindow_Style[$i])
    Next
     
     
    kamsamita1 thích bài này.
  10. okebcs

    okebcs Thành viên mới
    • 1/6

    Tham gia ngày:
    27/12/16
    Bài viết:
    2
    Đã được thích:
    1
    làm sao để mở 1 gui khác từ gui main hả các bác
     
    kamsamita1 thích bài này.
  11. meocon

    meocon Thành viên mới
    • 3/6

    Tham gia ngày:
    5/12/16
    Bài viết:
    16
    Đã được thích:
    20
    Mã (AutoIt):
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1=GUICreate ("Cửa số thứ 1" , 120 , 230 , -1 , -1)
    $Button1=GUICtrlCreateButton ("Cửa sổ kiểu số 1" , 10 , 15 , 100 , 25 , 0)
    $Button2=GUICtrlCreateButton ("Cửa sổ kiểu số 2" , 10 , 50 , 100 , 25 , 0)
    $Button3=GUICtrlCreateButton ("Cửa sổ kiểu số 3" , 10 , 85 , 100 , 25 , 0)
    $Button4=GUICtrlCreateButton ("Cửa sổ kiểu số 4" , 10 , 120 , 100 , 25 , 0)
    $Button5=GUICtrlCreateButton ("Cửa sổ mới" , 10 , 155 , 100 , 25 , 0)
    $Button6=GUICtrlCreateButton ("Thoát" , 30 , 190 , 55 , 25 , 0)
    GUISetState (@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    HotKeySet('{esc}', '_Exit')
    Global $Form2
    ;~ Đặt kiểu hiện GUI ở đây=================
    While  1
        $nMsg=GUIGetMsg()
        Switch  $nMsg
            Case  $GUI_EVENT_CLOSE
                Exit
            Case  $Button1
                Style1()
            Case  $Button2
                Style2()
            Case  $Button3
                Style3()
            Case  $Button4
                Style4()
            Case  $Button5
                Window2()
            Case  $Button6
                Exit
        EndSwitch
    WEnd

    Func _Exit()
        Exit
    EndFunc

    Func Style1()
        ;~ GUI từ nhỏ mở rộng ra
        ;~ Lưu Ý: Width và Height đều để=0
        $pos=WinGetPos ($Form1) ;Lấy thông tin về tọa độ và kích thước cửa sổ
        For  $i=1 To  275 Step  +10 ;Cho chạy từ số 1 đến 275
             WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$pos [ 2 ] ,$i) ;Thay đổi kích thước cửa sổ
             Sleep (25) ;Thời gian nghỉ
        Next
        $pos=WinGetPos ($Form1) ;Như trên
        For  $i=1 To  134 Step  +10
             WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ])
             Sleep (25)
        Next
    EndFunc

    Func Style2()
        For  $i=1 To  @DesktopHeight *(2 /3) ;Chạy từ số 1 đến Chiều Cao màn hình nhân 2/3
        $pos=WinGetPos ($Form1) ;Lấy thông tin về tọa độ và kích thước cửa sổ
        WinMove ($Form1 ,'' ,$pos [ 0 ] ,@DesktopHeight - $i) ;Cho GUI chạy từ dưới lên
        Sleep (0.9) ;Thời gian nghỉ
        Next
    EndFunc

    Func Style3()
        ;~ GUI từ rõ thành mờ
        For  $i=255 To  0 Step -5 ;Chạy từ 255 đến 0
             WinSetTrans ($Form1 ,'' ,$i) ;Đặt độ mờ cho cửa sổ
             Sleep (30) ;Thời gian nghỉ
        Next
        ;~ GUI từ mờ thành rõ
        For  $i=0 To  255 Step  +5 ;Chạy từ 0 đến 255
             WinSetTrans ($Form1 ,'' ,$i) ;Đặt độ mờ cho cửa sổ
             Sleep (30) ;Thời gian nghỉ
        Next
    EndFunc

    Func Style4()
        ;~ GUI Hiện Ngang
        ;~ Lưu ý: đặt Width của GUI=0
        $pos=WinGetPos ($Form1) ;Lấy thông tin tọa độ và kích thước cửa sổ
        For  $i=1 To  400 Step  +10 ;Chạy từ 1 đến 400
             WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ]) ;Đặt độ rộng cho cửa sổ theo số đag chạy
             Sleep (42) ;Thời gian nghỉ
        Next
        $pos=WinGetPos ($Form1) ;Lấy thông tin tọa độ và kích thước cửa sổ
        For  $i=400 To  130 Step  -10 ;Chạy từ 1 đến 350
             WinMove ($Form1 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ]) ;Đặt độ rộng cho cửa sổ theo số đag chạy
             Sleep (42) ;Thời gian nghỉ
        Next
    EndFunc

    Func Window2()
        $Form2=GUICreate ("Cửa số thứ 2" , 120 , 230 , @DesktopWidth-@DesktopWidth/3 , -1)
        $Button1b=GUICtrlCreateButton ("Cửa sổ kiểu số 1" , 10 , 15 , 100 , 25 , 0)
        $Button2b=GUICtrlCreateButton ("Cửa sổ kiểu số 2" , 10 , 50 , 100 , 25 , 0)
        $Button3b=GUICtrlCreateButton ("Cửa sổ kiểu số 3" , 10 , 85 , 100 , 25 , 0)
        $Button4b=GUICtrlCreateButton ("Cửa sổ kiểu số 4" , 10 , 120 , 100 , 25 , 0)
        $Button5b=GUICtrlCreateButton ("Thoát" , 30 , 155 , 55 , 25 , 0)
        GUISetState (@SW_SHOW, $Form2)

        While  1
            $nMsg=GUIGetMsg()
            Switch  $nMsg
                Case  $GUI_EVENT_CLOSE
                    Exit
                Case  $Button1b
                    Style1b()
                Case  $Button2b
                    Style2b()
                Case  $Button3b
                    Style3b()
                Case  $Button4b
                    Style4b()
                Case  $Button5b
                    Exit
            EndSwitch
        WEnd

    EndFunc

    Func Style1b()
        ;~ GUI từ nhỏ mở rộng ra
        $pos=WinGetPos ($Form2) ;Lấy thông tin về tọa độ và kích thước cửa sổ
        For  $i=1 To  275 Step  +10 ;Cho chạy từ số 1 đến 275
             WinMove ($Form2 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$pos [ 2 ] ,$i) ;Thay đổi kích thước cửa sổ
             Sleep (25) ;Thời gian nghỉ
        Next
        $pos=WinGetPos ($Form2) ;Như trên
        For  $i=1 To  134 Step  +10
             WinMove ($Form2 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ])
             Sleep (25)
        Next
    EndFunc

    Func Style2b()
        For  $i=1 To  @DesktopHeight *(2 /3) ;Chạy từ số 1 đến Chiều Cao màn hình nhân 2/3
        $pos=WinGetPos ($Form2) ;Lấy thông tin về tọa độ và kích thước cửa sổ
        WinMove ($Form2 ,'' ,$pos [ 0 ] ,@DesktopHeight - $i) ;Cho GUI chạy từ dưới lên
        Sleep (0.9) ;Thời gian nghỉ
        Next
    EndFunc

    Func Style3b()
        ;~ GUI từ rõ thành mờ
        For  $i=255 To  0 Step -5 ;Chạy từ 255 đến 0
             WinSetTrans ($Form2 ,'' ,$i) ;Đặt độ mờ cho cửa sổ
             Sleep (30) ;Thời gian nghỉ
        Next
        ;~ GUI từ mờ thành rõ
        For  $i=0 To  255 Step  +5 ;Chạy từ 0 đến 255
             WinSetTrans ($Form2 ,'' ,$i) ;Đặt độ mờ cho cửa sổ
             Sleep (30) ;Thời gian nghỉ
        Next
    EndFunc

    Func Style4b()
        ;~ GUI Hiện Ngang
        ;~ Lưu ý: đặt Width của GUI=0
        $pos=WinGetPos ($Form2) ;Lấy thông tin tọa độ và kích thước cửa sổ
        For  $i=1 To  400 Step  +10 ;Chạy từ 1 đến 400
             WinMove ($Form2 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ]) ;Đặt độ rộng cho cửa sổ theo số đag chạy
             Sleep (42) ;Thời gian nghỉ
        Next
        $pos=WinGetPos ($Form2) ;Lấy thông tin tọa độ và kích thước cửa sổ
        For  $i=400 To  130 Step  -10 ;Chạy từ 1 đến 350
             WinMove ($Form2 ,'' ,$pos [ 0 ] ,$pos [ 1 ] ,$i ,$pos [ 3 ]) ;Đặt độ rộng cho cửa sổ theo số đag chạy
             Sleep (42) ;Thời gian nghỉ
        Next
    EndFunc
     
     
    kamsamita1 thích bài này.

Chia sẻ trang này

Đang tải...