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] Cần cao nhân chỉ giáo về các hàm read/write memory base address

Thảo luận trong 'AutoHotkey' bắt đầu bởi Long2019, 19/11/18.

Tags:
  1. Long2019

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

    Tham gia ngày:
    4/9/18
    Bài viết:
    3
    Đã được thích:
    5
    1/ Như tiêu đề mình cần các cao nhân hướng dẫn về cách sử dụng hàm read/write memory base address trong autohotkey
    2 /ví dụ dưới đây mình có 1 đoạn code c# để thực hiện chức năng dịch từ google transle giờ e muốn viết bằng autohotkey thì làm thế nào nhỉ?

    Mã (Text):

            private void button1_Click_1(object sender, EventArgs e)
            {
                WebClient webClient = new WebClient();
                try
                {
                    string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", richTextBox1.Text,
                        comboBox1.Text + "|" + comboBox2.Text);
                 
                    string result = webClient.DownloadString(url);
                    int bas = result.IndexOf("TRANSLATED_TEXT='") + "TRANSLATED_TEXT='".Length;
                    int bit = result.Substring(bas).IndexOf("';var");
                    result = result.Substring(bas, bit);
                    textBox2.Text = result.Trim();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
     
    Chỉnh sửa cuối: 19/11/18
  2. Long2019

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

    Tham gia ngày:
    4/9/18
    Bài viết:
    3
    Đã được thích:
    5
    đợi mãi không thấy cao nhân nào chỉ giáo, sau 1 thời gian tìm hiểu thì mình cũng đã tìm ra 2 hàm đọc memory rút gọn của AHK.

    Mã (Text):

    ReadMemory(MADDRESS,id)
    {
      VarSetCapacity(MVALUE,4,0)
      ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", id, "UInt")
      DllCall("ReadProcessMemory","UInt",ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)

      Loop 4
      result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)

      return, result
    }


    ReadMemoryString(MADDRESS,id)
    {
     
    ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", id, "Uint")
    teststr =
    Loop 32
    {
      Output := "x"  ; Put exactly one character in as a placeholder. used to break loop on null
      tempVar := DllCall("ReadProcessMemory", "UInt", ProcessHandle, "UInt", MADDRESS, "str", Output, "Uint", 1, "Uint *", 0)
      if (ErrorLevel or !tempVar)
      {
        DllCall("CloseHandle", "int", ProcessHandle)
        return teststr
      }
      ; if Output =
      ;  break

      teststr = %teststr%%Output%
      MADDRESS++
    }
    DllCall("CloseHandle", "int", ProcessHandle)
    return, teststr
    }
     
    ví dụ :
    2 hàm trên truyền vào 2 tham số là Base address, và pid id của ứng dụng.
    WinGet, active_pid, PID, A
    Hp:= ReadMemory(0x0BD3F868,active_pid) ; đọc memory kiểu số
    Hp:= ReadMemory(0x0BD3F868,active_pid ;đọc memory kiểu string nhưng chưa hỗ trợ utf-8
     
    Mrlongmaster, trgiang108 and ledachai like this.
  3. ledachai

    ledachai Thành viên
    • 18/23

    Tham gia ngày:
    17/5/20
    Bài viết:
    41
    Đã được thích:
    27
    Cho mình hỏi chút. Mình dùng trình giả lập andoid NOX để chơi game, khi mình thao tác như di chuyển thay đổi toạ độ, hay làm bật 1 hộp thoại nào đó, mình biết là có data nào đó đã thay đổi. Cái "read memory base address" này của bạn nó đọc được thay đổi đó không vậy?
     
  4. Em_Cu

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

    Tham gia ngày:
    2/10/20
    Bài viết:
    17
    Đã được thích:
    4
    Ko dùng cách này được đâu. Dùng cách đọc memory chỉ đọc được của cái thằng giả lập mà không phải của cái chương trình mình cần.Muốn auto trên giả lập phải dùng cách khác(cái này mình ko tìm hiểu :))), mà đơn giản nhất là dùng pixelsearch hoặc imagesearch !
     

Chia sẻ trang này

Đang tải...