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

AutoHotKey [Thắc mắc] Làm sao để lấy giá trị từ Edit đưa vào trong func để xử lý!

Thảo luận trong 'AutoHotkey' bắt đầu bởi DuyMinh, 23/7/17.

  1. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Mình muốn lấy giá trị từ sURL để đưa vào trong Func xử lý mà có vẻ không được... Tại mình mới nhảy qua bên AHK nên hơi bỡ ngỡ, thím @kakanet xem giúp mình được không? Cảm ơn thím trước.

    Mã (AutoIt):

    ; Generated by AutoGUI 1.4.7a
    #NoEnv
    #SingleInstance Force
    SetWorkingDir %A_ScriptDir%

    Gui Font, s12, Arial
    Gui, Add, Edit, vsURL x16 y16 w300 h25 Left, http://facebook.com
    Gui Font, s12, Arial
    Gui, Add, Button, x328 y16 w50 h25 gGET, &GET
    Gui Show, w392 h56, Simple Leech Text
    Return

    GET:
    {
        Gui, Submit, Nohide
        If _IsValidURL(sURL)
        {
            ;MsgBox, % sURL
            MsgBox, "This is true URL"
        }
        else
        {
            ;MsgBox, % sURL
            MsgBox, "This is fake URL"
        }
        Return
    }

    GuiEscape:
    GuiClose:
    ExitApp

    _IsValidURL(sURL) ; Check if URL is valid
    {
        Local sURL := ControlGetText(sURL)
        msgbox, % sURL
        Local aRes := DllCall("urlmon.dll", "long", "IsValidURL", "ptr", 0, "wstr", sURL, "dword", 0)
        ;Msgbox, % sURL
        If ErrorLevel
            Return, False
        Return aRes[0] := 0
    }
     
     
  2. 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
    Nhìn nội dung hàm _IsValidURL thì có vẻ cậu lấy hàm bên AutoIt đem qua ^^ Bên AHK cách DllCall của nó có khác tí nha ^^ . Có điều mình chuyển cái DllCall urlmon.dll trên sang AHK không chạy được, mình sửa không được nên dùng hàm bên dưới này chuyển sang AHK và đã chạy được ^^
    https://www.autoitscript.com/wiki/Snippets_(_Internet_)#IsValidURL

    Mã (AutoIt):
    _IsValidURL(sURL) ; Check if URL is valid
    {
        aRes := DllCall("Shlwapi.dll\PathIsURL", "str", sURL)
        return (aRes <> 0)
    }
    Code của cậu cũng thừa dòng Local sURL :=ControlGetText(sURL) nữa vì dòng Gui, Submit, Nohide nó đã tự cập nhật sURL khi cậu đổi text trên Edit rồi, AHK tiện chỗ này, chỉ cần 1 dòng Gui, Submit thôi là khi các control có cập nhật Trạng thái hay Data là nó lưu lại hết á.

    Code mình đã sửa lại đây, cậu chạy thử nghen:

    Mã (AutoIt):
    #NoEnv
    #SingleInstance Force
    SetWorkingDir %A_ScriptDir%

    Gui Font, s12, Arial
    Gui, Add, Edit, vsURL x16 y16 w300 h25 Left, http://facebook.com
    Gui Font, s12, Arial
    Gui, Add, Button, x328 y16 w50 h25 gGET, &GET
    Gui Show, w392 h56, Simple Leech Text
    Return

    GET:
    {
        Gui, Submit, Nohide
        If _IsValidURL(sURL)
            MsgBox, "This is true URL"
        else
            MsgBox, "This is fake URL"
        Return
    }

    GuiEscape:
    GuiClose:
    ExitApp


    _IsValidURL(sURL) ; Check if URL is valid
    {
        aRes := DllCall("Shlwapi.dll\PathIsURL", "str", sURL)
        return (aRes <> 0)
    }
     
    DuyMinh thích bài này.
  3. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Thanks cậu nhá, chỗ controlgettext là mình test thử vụ Local vs Global xem thử mà quên xóa mất... Tại mới sang nên lấn cấn nhiều thứ quá.
     
  4. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Cho mình hỏi chỗ Return (aRes <> 0) nghĩa là gì nhỉ? Mình thấy bên AutoIT nó sẽ trả về mảng 1 phần tử aRes[0], còn bên này mình chưa hiểu lắm, cậu giải thích cho mình với được không? Cảm ơn cậu trước.
    EDIT: Mình vừa bỏ MsgBox để xem nó trả về gì? Có vẻ hàm này bên AHK sẽ trả về giá trị luôn chứ không phải là mảng như bên AU3, để Return aRes là được... Thanks cậu nhá.
     

Chia sẻ trang này

Đang tải...