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 [Hỏi đáp] Vấn đề không chiếm chuột của AHK là gì?

Thảo luận trong 'AutoHotkey' bắt đầu bởi PhatNguyen, 10/6/19.

  1. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Mình vừa mới học AHK được hơn 1 tuần qua Recoder bạn ơi. Hiện đang cần bái sư trả phí, ai thành thạo AHK pm mình qua ID face: HongPhat83 nha, thanks!
     
  2. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Lập trình không phải là chuyện nay mai là có thể rành, nên mình nghĩ bạn nên bỏ ra chút ít thời gian để nghiên cứu.
    Bạn có thể click vào đây để học cơ bản về ahk
    Còn vấn đề của bạn thì mình để code dưới đây, mình dùng FindText thay cho ImageSearch do nó tìm hình okê hơn với lại không cần lưu ảnh vào đĩa.
    Cách dùng FindText ở đây. Tải nó ở đây, bạn copy code sau đó chạy, rồi làm theo hướng dẫn, xong rồi bạn chỉ copy cái dòng có biến Text trong FindText rồi thay vào code của mình là được.
    Lưu ý: Click bằng cách tìm hình thấy khá là hên xui do phụ thuộc vào nhiều yếu tố, ví dụ như độ phân giải màng hình. Nên đôi khi chạy máy mình được sang máy khác thì không.
    Bạn test code của mình như sau: đăng xuất sau đó vào trang chủ http://autoitvn.com rồi nhấn F4
    Mã (Autohotkey):
    #SingleInstance Force
    #NoEnv
    SetBatchLines -1
    SetTitleMatchMode,2

    ; Tiêu đề cửa sổ
    WinTitle=ahk_class Chrome_WidgetWin_1
    ; Chỉ cần copy biến Text trong FindText
    Text:="|<>*159$31.zXUnyTtkNzgAsAky7Q6MD3C3ADzbzbyzXznyM1kNUA0sAk60Q6M30C3A1U71a0U"
    return
    ;--------------------------------------------------------------------------------
    ; Thoát
    Esc::ExitApp
    ;--------------------------------------------------------------------------------
    F4::
    WinGetPos,xw,yw,ww,hw,% WinTitle
    ControlClick,x5 y50,% WinTitle,,,,Na
    Loop
    {
        if Pos:=FindText(xw, yw, ww, hw, 0, 0, Text)
        {
            X:=Pos.1.1, Y:=Pos.1.2, W:=Pos.1.3, H:=Pos.1.4, Comment:=Pos.1.5, X+=W//2, Y+=H//2
            break
        }
        ; Cái này là cuộn chuột xuống dưới
        ControlClick,,% WinTitle,,WD,2,Na
        ; Sleep càng cao càng chính xác
        Sleep,200
    }
    WinGetPos,xw,yw,,,% WinTitle
    ; Chuyển tọa độ màng hình sang tọa độ cửa sổ do findtex chỉ tìm đc tọa độ màng hình
    Pos:=Screen2Win(x,y,xw,yw)
    ControlClick,% "x" Pos[1] " y" Pos[2],% WinTitle,,,,Na
    return


    Screen2Win(x,y,xw,yw)
    {
        return [x-xw,y-yw]
    }

    FindText( x, y, w, h, err1, err0, text, ScreenShot=1
      , FindAll=1, JoinText=0, offsetX=20, offsetY=10 )
    {
      xywh2xywh(x,y,w,h,x,y,w,h)
      if (w<1 or h<1)
        return, 0
      bch:=A_BatchLines
      SetBatchLines, -1
      ;-------------------------------
      GetBitsFromScreen(x,y,w,h,Scan0,Stride,ScreenShot,zx,zy)
      ;-------------------------------
      sx:=x-zx, sy:=y-zy, sw:=w, sh:=h
      , arr:=[], info:=[], allv:=""
      Loop, Parse, text, |
      {
        v:=A_LoopField
        IfNotInString, v, $, Continue
        comment:="", e1:=err1, e0:=err0
        ; You Can Add Comment Text within The <>
        if RegExMatch(v,"<([^>]*)>",r)
          v:=StrReplace(v,r), comment:=Trim(r1)
        ; You can Add two fault-tolerant in the [], separated by commas
        if RegExMatch(v,"\[([^\]]*)]",r)
        {
          v:=StrReplace(v,r), r1.=","
          StringSplit, r, r1, `,
          e1:=r1, e0:=r2
        }
        StringSplit, r, v, $
        color:=r1, v:=r2
        StringSplit, r, v, .
        w1:=r1, v:=base64tobit(r2), h1:=StrLen(v)//w1
        if (r0<2 or h1<1 or w1>sw or h1>sh or StrLen(v)!=w1*h1)
          Continue
        mode:=InStr(color,"-") ? 4 : InStr(color,"#") ? 3
          : InStr(color,"**") ? 2 : InStr(color,"*") ? 1 : 0
        if (mode=4)
        {
          color:=StrReplace(color,"0x")
          StringSplit, r, color, -
          color:="0x" . r1, n:="0x" . r2
        }
        else
        {
          color:=RegExReplace(color,"[*#]") . "@"
          StringSplit, r, color, @
          color:=mode=3 ? ((r1-1)//w1)*Stride+Mod(r1-1,w1)*4 : r1
          n:=Round(r2,2)+(!r2), n:=Floor(9*255*255*(1-n)*(1-n))
        }
        StrReplace(v,"1","",len1), len0:=StrLen(v)-len1
        e1:=Round(len1*e1), e0:=Round(len0*e0)
        info.Push( [StrLen(allv),w1,h1,len1,len0,e1,e0
          ,mode,color,n,comment] ), allv.=v
      }
      if (allv="")
      {
        SetBatchLines, %bch%
        return, 0
      }
      num:=info.MaxIndex(), VarSetCapacity(input, num*7*4)
      , VarSetCapacity(gs, sw*sh)
      , VarSetCapacity(ss, sw*sh), k:=StrLen(allv)*4
      , VarSetCapacity(s1, k), VarSetCapacity(s0, k)
      , allpos_max:=FindAll ? 1024 : 1
      , VarSetCapacity(allpos, allpos_max*4)
      ;-------------------------------------
      Loop, 2 {
      if (JoinText)
      {
        mode:=info.1.8, color:=info.1.9, n:=info.1.10
        , w1:=-1, h1:=info.1.3, comment:="", k:=0
        Loop, % num {
          i:=A_Index, w1+=info[i].2+1, comment.=info[i].11
          Loop, 7
            NumPut(info[i][A_Index], input, 4*(k++), "int")
        }
        ok:=PicFind( mode,color,n,offsetX,offsetY
          ,Scan0,Stride,sx,sy,sw,sh,gs,ss,allv,s1,s0
          ,input,num*7,allpos,allpos_max )
        Loop, % ok
          pos:=NumGet(allpos, 4*(A_Index-1), "uint")
          , rx:=(pos&0xFFFF)+zx, ry:=(pos>>16)+zy
          , arr.Push( [rx,ry,w1,h1,comment] )
      }
      else
      {
        For i,j in info
        {
          mode:=j.8, color:=j.9, n:=j.10, comment:=j.11
          , w1:=j.2, h1:=j.3, v:=SubStr(allv, j.1+1, w1*h1)
          Loop, 7
            NumPut(j[A_Index], input, 4*(A_Index-1), "int")
          NumPut(0, input, "int")
          ok:=PicFind( mode,color,n,offsetX,offsetY
            ,Scan0,Stride,sx,sy,sw,sh,gs,ss,v,s1,s0
            ,input,7,allpos,allpos_max )
          Loop, % ok
            pos:=NumGet(allpos, 4*(A_Index-1), "uint")
            , rx:=(pos&0xFFFF)+zx, ry:=(pos>>16)+zy
            , arr.Push( [rx,ry,w1,h1,comment] )
        }
      }
      if (err1=0 and err0=0 and !arr.MaxIndex())
      {
        err1:=err0:=0.1
        For i,j in info
          if (j.6=0 and j.7=0)
            j.6:=Round(j.4*err1), j.7:=Round(j.5*err0)
      }
      else Break
      }
      SetBatchLines, %bch%
      return, arr.MaxIndex() ? arr:0
    }

    PicFind(mode, color, n, offsetX, offsetY
      , Scan0, Stride, sx, sy, sw, sh
      , ByRef gs, ByRef ss, ByRef text, ByRef s1, ByRef s0
      , ByRef input, num, ByRef allpos, allpos_max)
    {
      static MyFunc, Ptr:=A_PtrSize ? "UPtr" : "UInt"
      if !MyFunc
      {
        x32:="5557565383EC788B8424CC0000008BBC24CC000000C7442"
        . "424000000008B40048B7F148944243C8B8424CC000000897C2"
        . "42C8BBC24CC0000008B40088B7F18894424348B8424CC00000"
        . "0897C24308B400C89C6894424288B8424CC0000008B401039C"
        . "6894424200F4DC68944241C8B8424D000000085C00F8E15010"
        . "0008BB424CC0000008B44242489F78B0C868B7486048B44870"
        . "88974241085C0894424180F8ED700000089CD894C2414C7442"
        . "40C00000000C744240800000000C744240400000000890C248"
        . "D76008DBC27000000008B5C24108B7424088B4C24148B54240"
        . "C89DF89F029F101F78BB424C000000001CE85DB7E5E8B0C248"
        . "9EB893C2489D7EB198BAC24C800000083C70483C00189548D0"
        . "083C101390424742C83BC248C0000000389FA0F45D0803C063"
        . "175D48BAC24C400000083C70483C00189549D0083C30139042"
        . "475D48B7424100174241489DD890C2483442404018BB424B00"
        . "000008B442404017424088BBC24A4000000017C240C3944241"
        . "80F8554FFFFFF83442424078B442424398424D00000000F8FE"
        . "BFEFFFF83BC248C000000030F84A00600008B8424A40000008"
        . "BB424A80000000FAF8424AC0000008BBC248C0000008D2CB08"
        . "B8424B00000008BB424A4000000F7D885FF8D0486894424100"
        . "F84F702000083BC248C000000010F845F08000083BC248C000"
        . "000020F84130900008B8424900000008B9C24940000000FB6B"
        . "C24940000000FB6B42490000000C744241800000000C744242"
        . "400000000C1E8100FB6DF0FB6D08B84249000000089D10FB6C"
        . "4894424088B842494000000C1E8100FB6C029C101D08904248"
        . "B442408894C24408B4C240801D829D9894424088D043E894C2"
        . "40489F129F9894424148BBC24B40000008B8424B0000000894"
        . "C240C89E98B6C2440C1E00285FF894424380F8EBA0000008BB"
        . "424B000000085F60F8E910000008B8424A00000008B5424240"
        . "39424BC00000001C8034C243889CF894C244003BC24A000000"
        . "0EB3D8D76008DBC2700000000391C247C3D394C24047F37394"
        . "C24087C3189F30FB6F33974240C0F9EC3397424140F9DC183C"
        . "00483C20121D9884AFF39F8741E0FB658020FB648010FB6303"
        . "9DD7EBE31C983C00483C201884AFF39F875E28BBC24B000000"
        . "0017C24248B4C24408344241801034C24108B442418398424B"
        . "40000000F8546FFFFFF8B8424B00000002B44243C8944240C8"
        . "B8424B40000002B442434894424600F884D0900008B4424288"
        . "BBC24C40000008B74243CC744241000000000C744243800000"
        . "000C7442434000000008D3C8789C583EE01897C246C8974247"
        . "48B44240C85C00F88E70000008B7C24388B8424AC000000BE0"
        . "0000000C704240000000001F8C1E0108944246889F82B84249"
        . "C0000000F49F08B84249C000000897424640FAFB424B000000"
        . "001F8894424708974245C8DB6000000008B04240344241089C"
        . "1894424088B442430394424200F84AA0100008B5C241C89C60"
        . "38C24BC00000031C08B54242C85DB0F8EC8010000897424048"
        . "B7C2420EB2D39C77E1C8BB424C80000008B1C8601CB803B007"
        . "40B836C240401782B8D74260083C0013944241C0F849101000"
        . "039C57ECF8BB424C40000008B1C8601CB803B0174BE83EA017"
        . "9B9830424018B04243944240C0F8D68FFFFFF83442438018BB"
        . "424B00000008B44243801742410394424600F8DEFFEFFFF8B4"
        . "C243483C47889C85B5E5F5DC250008B8424900000008BB424B"
        . "4000000C744240C00000000C744241400000000C1E8100FB6C"
        . "08904248B8424900000000FB6C4894424040FB684249000000"
        . "0894424088B8424B0000000C1E00285F68944242489E88BAC2"
        . "4940000000F8E24FEFFFF8B9C24B000000085DB7E758B9C24A"
        . "00000008B7424148BBC24A000000003B424BC00000001C3034"
        . "424248944241801C78D76008DBC27000000000FB643020FB64"
        . "B012B04242B4C24040FB6132B5424080FAFC00FAFC98D04400"
        . "FAFD28D04888D045039C50F930683C30483C60139DF75C98BB"
        . "C24B0000000017C24148B4424188344240C01034424108B742"
        . "40C39B424B40000000F8566FFFFFFE985FDFFFF85ED7E358B7"
        . "424088BBC24BC00000031C08B54242C8D1C378BB424C400000"
        . "08B0C8601D9803901740983EA010F8890FEFFFF83C00139C57"
        . "5E683BC24D0000000070F8EAA0100008B442474030424C7442"
        . "44007000000896C2444894424288B8424CC00000083C020894"
        . "4243C8B44243C8B9424B00000008B7C24288B0029C28944245"
        . "08B84249800000001F839C20F4EC289C68944244C39FE0F8C0"
        . "90100008B44243C8B700C8B78148B6808897424148B7010897"
        . "C245489C7897424248BB424B40000002B700489F08B7424703"
        . "9C60F4EC68BB424C4000000894424188B47FC89442404C1E00"
        . "201C6038424C8000000894424588B4424648B7C2428037C245"
        . "C3B442418894424040F8F8700000085ED7E268B8C24BC00000"
        . "08B54242431C08D1C398B0C8601D9803901740583EA01784A8"
        . "3C00139C575EA8B4424148B4C245439C8747E85C07E7A8B9C2"
        . "4BC000000896C244831C08B6C245801FBEB0983C0013944241"
        . "4745C8B54850001DA803A0074EC83E90179E78B6C244890834"
        . "424040103BC24B00000008B442404394424180F8D79FFFFFF8"
        . "3442428018B4424283944244C0F8D4CFFFFFF830424018B6C2"
        . "4448B04243944240C0F8D7EFCFFFFE911FDFFFF8B4424288B7"
        . "4245083442440078344243C1C8D4430FF894424288B4424403"
        . "98424D00000000F8F7FFEFFFF8B6C24448B7C24348B0424038"
        . "424A80000008BB424D40000000B4424688D4F01398C24D8000"
        . "0008904BE0F8ED8FCFFFF85ED7E278B7424088BBC24BC00000"
        . "08B8424C40000008D1C378B74246C8B1083C00401DA39F0C60"
        . "20075F283042401894C24348B04243944240C0F8DDEFBFFFFE"
        . "971FCFFFF89F68DBC27000000008B8424B0000000038424A80"
        . "000002B44243C894424248B8424AC000000038424B40000002"
        . "B442434398424AC000000894424380F8F520400008B8424A40"
        . "000008BB424A80000000FAF8424AC000000C74424180000000"
        . "08D04B0038424900000008BB424A0000000894424348B44242"
        . "4398424A80000000F8F2B0100008B8424AC000000C1E010894"
        . "4243C8B442434894424148B8424A8000000894424088B44241"
        . "40FB67C060289C52BAC2490000000893C240FB67C0601897C2"
        . "4040FB63C068B44241C85C00F8E140100008B4424308944241"
        . "08B44242C8944240C31C0EB5D394424207E4A8B9C24C800000"
        . "08B0C8301E90FB6540E020FB65C0E012B14242B5C24040FB60"
        . "C0E0FAFD20FAFDB29F98D14520FAFC98D149A8D144A3994249"
        . "4000000720C836C2410017865908D74260083C0013944241C0"
        . "F84A3000000394424287E9D8B9C24C40000008B0C8301E90FB"
        . "6540E020FB65C0E012B14242B5C24040FB60C0E0FAFD20FAFD"
        . "B29F98D14520FAFC98D149A8D144A3B9424940000000F865BF"
        . "FFFFF836C240C010F8950FFFFFF834424080183442414048B4"
        . "42408394424240F8DF6FEFFFF838424AC000000018BBC24A40"
        . "000008B442438017C24343B8424AC0000000F8DA0FEFFFF8B4"
        . "C241883C4785B5E89C85F5DC250008D7426008B7C24188B442"
        . "43C0B4424088B9C24D40000008D4F013B8C24D80000008904B"
        . "B0F8D84FAFFFF894C2418EB848B8424900000008B8C24B4000"
        . "000C7042400000000C74424040000000083C001C1E00789C78"
        . "B8424B0000000C1E00285C98944240889E889FD0F8ECFF8FFF"
        . "F8B9424B000000085D27E5F8B8C24A00000008B5C2404039C2"
        . "4BC00000001C1034424088944240C038424A000000089C70FB"
        . "651020FB641010FB6316BC04B6BD22601C289F0C1E00429F00"
        . "1D039C50F970383C10483C30139F975D58BBC24B0000000017"
        . "C24048B44240C83042401034424108B342439B424B40000007"
        . "582E94CF8FFFF8B8424B0000000C7042400000000C74424040"
        . "0000000C1E002894424088B8424B400000085C00F8E9200000"
        . "08B8424B000000085C07E6F8B8C24A00000008B5C24048BB42"
        . "4B800000001E9036C240801DE039C24BC000000896C240C03A"
        . "C24A00000000FB651020FB6410183C1040FB679FC83C60183C"
        . "3016BC04B6BD22601C289F8C1E00429F801D0C1F8078846FFC"
        . "643FF0039CD75CC8BB424B0000000017424048B6C240C83042"
        . "401036C24108B0424398424B40000000F856EFFFFFF83BC24B"
        . "4000000020F8E80F7FFFF8B8424BC000000038424B00000008"
        . "BAC24B800000003AC24B0000000C7442404010000008944240"
        . "88B8424B400000083E8018944240C8B8424B000000083C0018"
        . "944241083BC24B0000000027E798B44241089E92B8C24B0000"
        . "0008B5C240889EA8D34288D45FE8904240FB642010FB63A038"
        . "4249000000039F87C360FB67A0239F87C2E0FB6790139F87C2"
        . "60FB63E39F87C1F0FB63939F87C180FB6790239F87C100FB67"
        . "EFF39F87C080FB67E0139F87D04C643010183C20183C30183C"
        . "10183C6013B0C2475A3834424040103AC24B00000008B44240"
        . "48BB424B0000000017424083944240C0F8558FFFFFFE98FF6F"
        . "FFF83C47831C95B89C85E5F5DC2500090909090909090"
        x64:="4157415641554154555756534881EC88000000488B84245"
        . "0010000488BB42450010000448B94245801000089542428448"
        . "944240844898C24E80000008B40048B76144C8BBC244001000"
        . "04C8BB42448010000C74424180000000089442430488B84245"
        . "00100008974241C488BB424500100008B40088B76188944243"
        . "C488B842450010000897424388B400C89C789442440488B842"
        . "4500100008B401039C7894424100F4DC74585D289442454488"
        . "B84245001000048894424200F8ECB000000488B442420448B0"
        . "8448B68048B400885C0894424040F8E940000004489CE44890"
        . "C244531E431FF31ED0F1F8400000000004585ED7E614863142"
        . "4418D5C3D0089F848039424380100004589E0EB1D0F1F0083C"
        . "0014D63D94183C0044183C1014883C20139C34789149E74288"
        . "3F9034589C2440F45D0803A3175D783C0014C63DE4183C0048"
        . "3C6014883C20139C34789149F75D844012C2483C50103BC241"
        . "80100004403A42400010000396C24047582834424180748834"
        . "424201C8B442418398424580100000F8F35FFFFFF83F9030F8"
        . "43D0600008B8424000100008BBC24080100000FAF842410010"
        . "0008BB424000100008D3CB88B842418010000F7D885C9448D2"
        . "C860F841101000083F9010F842008000083F9020F84BF08000"
        . "08B742428C744240400000000C74424180000000089F0440FB"
        . "6CEC1E8104589CC0FB6D84889F08B7424080FB6D44189DB89F"
        . "0440FB6C64889F1C1E8100FB6CD89D60FB6C08D2C0A8B94242"
        . "00100004129C301C3438D040129CE4529C48904248B8424180"
        . "10000C1E00285D2894424080F8E660100004C89BC244001000"
        . "0448BBC24180100004585FF0F8E91040000488B8C24F800000"
        . "04863C74C6354241831D24C03942430010000488D440102EB3"
        . "A0F1F80000000004439C37C4039CE7F3C39CD7C384539CC410"
        . "F9EC044390C240F9DC14421C141880C124883C2014883C0044"
        . "139D70F8E2D040000440FB6000FB648FF440FB648FE4539C37"
        . "EBB31C9EBD58B5C2428448B8C242001000031ED4531E44889D"
        . "84189DB0FB6DB0FB6F48B84241801000041C1EB10450FB6DBC"
        . "1E0024585C98904240F8EA10000004C89BC24400100004C89B"
        . "42448010000448B7C2408448BB424180100004585F67E60488"
        . "B8C24F80000004D63D44C039424300100004863C74531C94C8"
        . "D440102410FB600410FB648FF410FB650FE4429D829F10FAFC"
        . "029DA0FAFC98D04400FAFD28D04888D04504139C7430F93040"
        . "A4983C1014983C0044539CE7FC4033C244501F483C5014401E"
        . "F39AC2420010000758C4C8BBC24400100004C8BB4244801000"
        . "08B8424180100002B4424308904248B8424200100002B44243"
        . "C894424680F88540800008B7C24404D89F5488BAC243001000"
        . "0448B7424104C89FEC74424040000000048C74424280000000"
        . "0C74424200000000089F883E801498D4487044189FF4889442"
        . "4088B44243083E801894424788B042485C00F88D9000000488"
        . "B5C24288B8424100100004D89EC448B6C245401D8C1E010894"
        . "4247089D82B8424F000000089C7B8000000000F49C731FF894"
        . "4246C0FAF842418010000894424648B8424F000000001D8894"
        . "42474908B442404897C24188D1C388B4424384139C60F84AB0"
        . "000004189C131C04585ED448B44241C7F36E9C30000000F1F4"
        . "0004139CE7E1B418B148401DA4863D2807C150000740B4183E"
        . "901782E0F1F4400004883C0014139C50F8E920000004139C78"
        . "9C17ECC8B148601DA4863D2807C15000174BD4183E80179B74"
        . "883C701393C240F8D7AFFFFFF4D89E54883442428018B9C241"
        . "8010000488B442428015C2404394424680F8DFCFEFFFF8B4C2"
        . "42089C84881C4880000005B5E5F5D415C415D415E415FC3458"
        . "5FF7E278B4C241C4C8B4424084889F28B0201D84898807C050"
        . "001740583E90178934883C2044939D075E583BC24580100000"
        . "70F8EE60100008B442478488B8C24500100000344241844896"
        . "C2450448BAC241801000044897C24404883C1204889742410C"
        . "744243C07000000448974244448897C24484989CF895C247C8"
        . "9C64C89642430418B074489EA29C28944245C8B8424E800000"
        . "001F039C20F4EC239F0894424580F8CD0000000418B47148BB"
        . "C2420010000412B7F0449635FFC458B4F08458B670C8944246"
        . "08B442474458B771039C70F4FF8488B44241048C1E3024C8D1"
        . "41848035C24308B442464448D04068B44246C39F84189C37F7"
        . "2904585C97E234489F131D2418B04924401C04898807C05000"
        . "1740583E90178464883C2014139D17FE28B4424604139C40F8"
        . "4AA0000004585E40F8EA100000089C131D2EB0D4883C201413"
        . "9D40F8E8E0000008B04934401C04898807C05000074E483E90"
        . "179DF4183C3014501E84439DF7D8F83C601397424580F8D6EF"
        . "FFFFF488B7C2448448B7C2440448B742444448B6C2450488B7"
        . "424104C8B6424304883C701393C240F8D97FDFFFFE918FEFFF"
        . "F6690037C240844017C241883442404014401EF8B442404398"
        . "424200100000F854DFBFFFF4C8BBC2440010000E996FCFFFF8"
        . "B44245C8344243C074983C71C8D7406FF8B44243C398424580"
        . "100000F8F87FEFFFF448B7C2440448B742444448B6C2450488"
        . "B7C24488B5C247C488B7424104C8B64243048634424208B542"
        . "418039424080100004C8B9C24600100000B5424708D4801398"
        . "C2468010000418914830F8E9AFDFFFF4585FF7E1D4C8B44240"
        . "84889F08B104883C00401DA4C39C04863D2C64415000075EB4"
        . "883C701393C24894C24200F8DBAFCFFFFE93BFDFFFF0F1F440"
        . "0008B842418010000038424080100002B442430894424308B8"
        . "42410010000038424200100002B44243C39842410010000894"
        . "424440F8F230400008B8424000100008BBC24080100000FAF8"
        . "42410010000448B642440448B6C24544C8B8C24F8000000C74"
        . "42420000000008D04B8034424288944243C8B4424303984240"
        . "80100000F8F2F0100008B8424100100008B6C243CC1E010894"
        . "424408B8424080100008904248D450289EF2B7C24284585ED4"
        . "898450FB61C018D45014898410FB61C014863C5410FB634010"
        . "F8E140100008B442438894424188B44241C8944240431C0EB6"
        . "244395424107E4E418B0C8601F98D5102448D41014863C9410"
        . "FB60C094863D24D63C0410FB61411470FB6040129F10FAFC94"
        . "429DA4129D80FAFD2450FAFC08D1452428D14828D144A39542"
        . "4087207836C241801786B4883C0014139C50F8E9E000000413"
        . "9C44189C27E96418B0C8701F98D5102448D41014863C9410FB"
        . "60C094863D24D63C0410FB61411470FB6040129F10FAFC9442"
        . "9DA4129D80FAFD2450FAFC08D1452428D14828D144A3B54240"
        . "80F864BFFFFFF836C2404010F8940FFFFFF8304240183C5048"
        . "B0424394424300F8DEDFEFFFF83842410010000018BBC24000"
        . "100008B442444017C243C3B8424100100000F8D9CFEFFFFE97"
        . "CFBFFFF0F1F0048634424208B5424400B1424488BBC2460010"
        . "0008D48013B8C24680100008914870F8D56FBFFFF830424018"
        . "3C504894C24208B0424394424300F8D82FEFFFFEB93448B5C2"
        . "428448B84242001000031DB8B84241801000031F6448B94241"
        . "80100004183C30141C1E3074585C08D2C85000000000F8E8CF"
        . "9FFFF4585D27E57488B8C24F80000004C63CE4C038C2430010"
        . "0004863C74531C0488D4C01020FB6110FB641FF440FB661FE6"
        . "BC04B6BD22601C24489E0C1E0044429E001D04139C3430F970"
        . "4014983C0014883C1044539C27FCC01EF4401D683C3014401E"
        . "F399C24200100007595E91CF9FFFF8B8C24200100008B84241"
        . "801000031DB31F6448B8C241801000085C98D2C85000000007"
        . "E7D4585C97E694C63C6488B8C24F80000004863C74D89C24C0"
        . "38424300100004C0394242801000031D2488D4C0102440FB61"
        . "90FB641FF4883C104440FB661FA6BC04B456BDB264101C3448"
        . "9E0C1E0044429E04401D8C1F8074188041241C60410004883C"
        . "2014139D17FC401EF4401CE83C3014401EF399C24200100007"
        . "58383BC2420010000020F8E6CF8FFFF4863B424180100008B9"
        . "C24180100008BBC2420010000488D5601448D67FFBF0100000"
        . "04889D0480394243001000048038424280100004889D58D53F"
        . "D4C8D6A0183BC241801000002488D1C067E7E4989C04D8D5C0"
        . "5004989D94929F04889E90FB610440FB650FF035424284439D"
        . "27C44440FB650014439D27C3A450FB6104439D27C31450FB61"
        . "14439D27C28450FB650FF4439D27C1E450FB650014439D27C1"
        . "4450FB651FF4439D27C0A450FB651014439D27D03C60101488"
        . "3C0014983C1014883C1014983C0014C39D8759383C7014801F"
        . "54889D84139FC0F8562FFFFFFE989F7FFFF31C9E9FAF8FFFF9"
        . "0909090909090909090909090"
        MCode(MyFunc, A_PtrSize=8 ? x64:x32)
      }
      return, DllCall(&MyFunc, "int",mode, "uint",color
        , "uint",n, "int",offsetX, "int",offsetY, Ptr,Scan0
        , "int",Stride, "int",sx, "int",sy, "int",sw, "int",sh
        , Ptr,&gs, Ptr,&ss, "AStr",text, Ptr,&s1, Ptr,&s0
        , Ptr,&input, "int",num, Ptr,&allpos, "int",allpos_max)
    }

    xywh2xywh(x1,y1,w1,h1,ByRef x,ByRef y,ByRef w,ByRef h)
    {
      SysGet, zx, 76
      SysGet, zy, 77
      SysGet, zw, 78
      SysGet, zh, 79
      left:=x1, right:=x1+w1-1, up:=y1, down:=y1+h1-1
      left:=left<zx ? zx:left, right:=right>zx+zw-1 ? zx+zw-1:right
      up:=up<zy ? zy:up, down:=down>zy+zh-1 ? zy+zh-1:down
      x:=left, y:=up, w:=right-left+1, h:=down-up+1
    }

    GetBitsFromScreen(x, y, w, h, ByRef Scan0, ByRef Stride
      , ScreenShot=1, ByRef zx="", ByRef zy="", bpp=32)
    {
      static bits, oldx, oldy, oldw, oldh
      static Ptr:=A_PtrSize ? "UPtr" : "UInt", PtrP:=Ptr "*"
      if (ScreenShot or x<oldx or y<oldy
        or x+w>oldx+oldw or y+h>oldy+oldh)
      {
        oldx:=x, oldy:=y, oldw:=w, oldh:=h, ScreenShot:=1
        VarSetCapacity(bits, w*h*4)
      }
      Scan0:=&bits, Stride:=((oldw*bpp+31)//32)*4, zx:=oldx, zy:=oldy
      if (!ScreenShot or w<1 or h<1)
        return
      win:=DllCall("GetDesktopWindow", Ptr)
      hDC:=DllCall("GetWindowDC", Ptr,win, Ptr)
      mDC:=DllCall("CreateCompatibleDC", Ptr,hDC, Ptr)
      ;-------------------------
      VarSetCapacity(bi, 40, 0), NumPut(40, bi, 0, "int")
      NumPut(w, bi, 4, "int"), NumPut(-h, bi, 8, "int")
      NumPut(1, bi, 12, "short"), NumPut(bpp, bi, 14, "short")
      ;-------------------------
      if hBM:=DllCall("CreateDIBSection", Ptr,mDC, Ptr,&bi
        , "int",0, PtrP,ppvBits, Ptr,0, "int",0, Ptr)
      {
        oBM:=DllCall("SelectObject", Ptr,mDC, Ptr,hBM, Ptr)
        DllCall("BitBlt", Ptr,mDC, "int",0, "int",0, "int",w, "int",h
          , Ptr,hDC, "int",x, "int",y, "uint",0x00CC0020|0x40000000)
        DllCall("RtlMoveMemory", Ptr,Scan0, Ptr,ppvBits, Ptr,Stride*h)
        DllCall("SelectObject", Ptr,mDC, Ptr,oBM)
        DllCall("DeleteObject", Ptr,hBM)
      }
      DllCall("DeleteDC", Ptr,mDC)
      DllCall("ReleaseDC", Ptr,win, Ptr,hDC)
    }

    MCode(ByRef code, hex)
    {
      bch:=A_BatchLines
      SetBatchLines, -1
      VarSetCapacity(code, len:=StrLen(hex)//2)
      lls:=A_ListLines=0 ? "Off" : "On"
      ListLines, Off
      Loop, % len
        NumPut("0x" SubStr(hex,2*A_Index-1,2),code,A_Index-1,"uchar")
      ListLines, %lls%
      Ptr:=A_PtrSize ? "UPtr" : "UInt", PtrP:=Ptr . "*"
      DllCall("VirtualProtect",Ptr,&code, Ptr,len,"uint",0x40,PtrP,0)
      SetBatchLines, %bch%
    }

    base64tobit(s)
    {
      Chars:="0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        . "abcdefghijklmnopqrstuvwxyz"
      SetFormat, IntegerFast, d
      StringCaseSense, On
      lls:=A_ListLines=0 ? "Off" : "On"
      ListLines, Off
      Loop, Parse, Chars
      {
        i:=A_Index-1, v:=(i>>5&1) . (i>>4&1)
          . (i>>3&1) . (i>>2&1) . (i>>1&1) . (i&1)
        s:=StrReplace(s,A_LoopField,v)
      }
      ListLines, %lls%
      StringCaseSense, Off
      s:=SubStr(s,1,InStr(s,"1",0,0)-1)
      s:=RegExReplace(s,"[^01]+")
      return, s
    }

    bit2base64(s)
    {
      s:=RegExReplace(s,"[^01]+")
      s.=SubStr("100000",1,6-Mod(StrLen(s),6))
      s:=RegExReplace(s,".{6}","|$0")
      Chars:="0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        . "abcdefghijklmnopqrstuvwxyz"
      SetFormat, IntegerFast, d
      lls:=A_ListLines=0 ? "Off" : "On"
      ListLines, Off
      Loop, Parse, Chars
      {
        i:=A_Index-1, v:="|" . (i>>5&1) . (i>>4&1)
          . (i>>3&1) . (i>>2&1) . (i>>1&1) . (i&1)
        s:=StrReplace(s,v,A_LoopField)
      }
      ListLines, %lls%
      return, s
    }

    ASCII(s)
    {
      if RegExMatch(s,"\$(\d+)\.([\w+/]+)",r)
      {
        s:=RegExReplace(base64tobit(r2),".{" r1 "}","$0`n")
        s:=StrReplace(StrReplace(s,"0","_"),"1","0")
      }
      else s=
      return, s
    }[/i][/i][/i]
     
    PhatNguyen thích bài này.
  3. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    À mà còn cái nữa là FindText nó tìm vấn chiếm màng hình, nếu để cửa sổ bị che thì nó không tìm đc, để thay thế thì bạn dùng Gdip_ImageSearch mà nó chạy không được ở một số cửa sổ, như chrome chẳng hạn.
    Bạn tải nó ở đây
    Giờ thì mình bận lắm, còn lại thì bạn tự tìm hiểu đi nhá.
     
  4. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Ok, cảm ơn người anh em thiện lành nhiều, mình sẽ nghiên cứu thử xem sao. Chúc sức khỏe nhiều nha!
     
  5. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Tối qua mình ngồi đến 2h sáng, code của bạn Only AHK rất tốt nhưng có 1 vấn đề là sau mỗi vòng lặp nó click lại vào điểm đã chọn khiến cửa sổ game nhảy vào mục khác, vì vậy mình không thể biết được findtext nó tìm có ok không? Sau đó mình buộc phải dùng Move chuột đến cửa sổ và sreachimage, nó chạy tốt nhưng có vấn đề là khi move chuột và click vào hình tìm được thì nó bị chiếm chuột. Giúp mình không bị chiếm chuột 2 phần này nhé bạn ơi, mình xin cảm ơn và hậu tạ!
    Code của mình đây:

    #NoEnv
    SetWorkingDir %A_ScriptDir%
    CoordMode, Mouse, Window
    SendMode Input
    #SingleInstance Force
    SetTitleMatchMode 2
    #WinActivateForce
    SetControlDelay 1
    SetWinDelay 0
    SetKeyDelay -1
    SetMouseDelay -1
    SetBatchLines -1


    Macro3:
    WinActivate, Võ Đang1 ahk_class LDPlayerMainFrame ahk_id 0x90828
    Sleep, 333
    Click, 1, 290, 0
    Sleep, 10
    Sleep, 500
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 125
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 125
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 100
    Click, WheelDown
    Sleep, 125
    Sleep, 1000
    {
    ImageSearch, FoundX, FoundY, 10, 3, 292, 540, *50 C:\Users\Admin\AppData\Roaming\MacroCreator\Screenshots\Screen_20190608232241.png
    If ErrorLevel = 0
    Click, %FoundX%, %FoundY% Left, 1
    ImageSearch, FoundX, FoundY, 10, 3, 292, 540, 539, *50 C:\Users\Admin\AppData\Roaming\MacroCreator\Screenshots\Screen_20190608232241.png
    If ErrorLevel = 0
    Click, %FoundX%, %FoundY% Left, 1
    ImageSearch, FoundX, FoundY, 10, 3, 292, 540, *50 C:\Users\Admin\AppData\Roaming\MacroCreator\Screenshots\Screen_20190608232241.png
    If ErrorLevel = 0
    Click, %FoundX%, %FoundY% Left, 1
    ImageSearch, FoundX, FoundY, 10, 3, 292, 540, *50 C:\Users\Admin\AppData\Roaming\MacroCreator\Screenshots\Screen_20190608232241.png
    If ErrorLevel = 0
    Click, %FoundX%, %FoundY% Left, 1
    }
    Sleep, 800



    Reload


    Escape::ExitApp

    F12::Pause
     
  6. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Haizz, bạn nên tìm hiểu kĩ code của mình xíu đi. Nếu không muốn nó click thì bỏ dòng
    Mã (Autohotkey):

    WinGetPos,xw,yw,,,% WinTitle
    ; Chuyển tọa độ màng hình sang tọa độ cửa sổ do findtex chỉ tìm đc tọa độ màng hình
    Pos:=Screen2Win(x,y,xw,yw)
    ControlClick,% "x" Pos[1]" y" Pos[2],% WinTitle,,,,Na
     
    Rồi bạn thay code của bạn trong vùng vừa bỏ đi thôi
     
    PhatNguyen thích bài này.
  7. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Bạn có nhầm không? code của bạn là click vào 1 điểm trên màn hình rồi bắt đầu cuộn chuột (không chiếm chuột) còn của mình là chọn 1 điểm trên màn hình rồi cuộn chuột (nhưng bị chiếm chuột mà mình đang cần là không chiếm chuột vì còn mở cửa sổ game thứ 2).
    Mình đã nghiên cứu, thử các cách về code của bạn nhưng không được, nó cứ phải click 1 điểm rồi mới cuộn chuột, khiến nó nhảy vào 1 số mục không mong muốn,
     
  8. Trầm Cảm

    Trầm Cảm Thành viên
    • 8/11

    Tham gia ngày:
    10/5/19
    Bài viết:
    45
    Đã được thích:
    9
    Nói chung là bạn nên bỏ thời gian ra học cơ bản đi , người khác truyền đạt cho bạn bạn ko hiểu .. . Còn chưa nói đến việc nghiên cứu.
     
    PhatNguyen thích bài này.
  9. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Ow, vậy thì bạn chỉ cần xóa nó đi thôi. Mình cho nó click là do khi mình test trên chrome thì đôi khi nó không chịu cuộn nên phải click vào chỗ nào đó.
    Nếu bạn gặp trường hợp giống mình thì thay tọa độ xy là 1 hay vị trí nào không ảnh hưởng xem.
     
    PhatNguyen thích bài này.
  10. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Mình biết và mình cũng đang cố gắng trao đổi học tập, bạn biết đó mấy môn này không có thầy hoặc bạn bè chỉ dạy thì chỉ có bó tay, vì vậy học online rất mất thời gian và mình cũng đang cố gắng trao đổi để học hỏi, thanks
     
  11. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Only AHK ơi, màn hình game của mình click vào bất cứ chỗ nào cũng có mục mới, vì vậy mình chỉ có thể move chuột đến vị trí đó và cuộn dòng. Thôi thì cho mình hỏi thăm vấn đề này: Để thực hiện các thao tác về chuột và không bị chiếm chuột thì cú pháp code nó như thế nào bạn ơi!?
     
  12. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoàng Vũ IT Moderator
    • 43/45

    Tham gia ngày:
    21/11/16
    Bài viết:
    404
    Đã được thích:
    122
    Mấy cái cuộn chuột kéo chuột này. Tư duy tốt, Qua Auotit học cx mất 3 ngày là xong. :v
     
  13. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Cũng đang tính nếu bế tắc quá mình sẽ chuyển qua Autoit thôi, hic
     
  14. #Rainy# Hoàng Vũ IT

    #Rainy# Hoàng Vũ IT Hoàng Vũ IT Moderator
    • 43/45

    Tham gia ngày:
    21/11/16
    Bài viết:
    404
    Đã được thích:
    122
    Học C# hoặc học thẳng python cho sướng. học Autoit làm gì.
     
  15. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Thì đây nha click không chiếm chuột thì bạn dùng lệnh ControlClick
    Có video hướng dẫn rất kĩ ở đây, bạn dùng cái Activate Window Info có sẵn thay cho cái Simple Spy trong video cũng đc.
     
  16. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Autohotkey hay Autoit mình thấy hai thằng cũng na ná nhau về độ khó. Mình nghiên cứu ahk cũng 3 tuần mới quen, còn bạn không bỏ thời gian học cơ bản hay nghiên cứu cũng tèo.
     
  17. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Mình có coi video của 1 số bạn trên này hướng dẫn về Autoit thấy cũng rất dễ hiểu, nhưng vì ban đầu nghe nói AHK nó mới và mạnh mẽ hơn nên mình theo AHK bữa giờ, lại ít tài liệu và hướng dẫn tiếng việt quá nên gặp khó khăn thường xuyên.
     
  18. Only AHK

    Only AHK Team AutoHotkey
    • 3/6

    Tham gia ngày:
    13/6/18
    Bài viết:
    24
    Đã được thích:
    15
    Theo cá nhân mình, người mới như bạn theo ahk là chính xác do nó dễ học hơn, cái tên ahk đã nói lên tất cả nó thao tác mấy phần về phím đặc biệt là phím nóng thì cực ez nhanh và mạnh hơn autoit rất nhiều. Mà quyền lựa chọn là do bạn, chúc bạn thành công.
     
    PhatNguyen thích bài này.
  19. PhatNguyen

    PhatNguyen Thành viên
    • 8/11

    Tham gia ngày:
    1/6/19
    Bài viết:
    32
    Đã được thích:
    1
    Sau 1 đêm nghiên cứu mình phát hiện ra AHK ko chiếm chuột chỉ thực hiện được với nhấp chuột-cuộn lên-xuống và mỗi thao tác controlclick như vậy nó đều click vào cửa sổ chỉ định rồi mới thực hiện các lệnh tiếp theo, thật ko may là điều này ảnh hưởng đến ý đồ của mình. Theo nó cũng hơn 10 ngày nay giờ bỏ nó thì nãn quá, ai có ý tưởng nào đó giúp mình đc ko ạ!?
     
  20. Trầm Cảm

    Trầm Cảm Thành viên
    • 8/11

    Tham gia ngày:
    10/5/19
    Bài viết:
    45
    Đã được thích:
    9
    Có gì mà phải nản bạn ơi ,lập trình vốn dĩ là thế . Ai cũng phải trải qua giai đoạn tìm hiểu như vậy cả bạn bỏ ra thời gian dài thì bạn càng hiểu sâu hơn về nó . Còn vấn đề của bạn là ko chiếm luôn cả màn hình, ko chiếm chuột .... Bạn tìm Được cách ko chiếm luôn màn hình nữa là giống ý đồ của bạn... Có thể chơi dc game khác.
     
    PhatNguyen thích bài này.

Chia sẻ trang này

Đang tải...