czxv000 发表于 2024-9-14 16:19:31

SetWindowLongPtrA 崩溃问题

SetWindowLongPtrA (全局.窗口句柄, -4, 取静态方法地址 (NewLong))64位程序 用此方法 程序直接崩溃 我写的不对吗


易语言 用 SetWindowLongA (g_窗口句柄, -4, 到整数 (&NewLong))一切正常







雪很冷 发表于 2024-9-14 16:21:15

听说火山都是用W的。你试试W的崩溃不

czxv000 发表于 2024-9-14 16:23:16

雪很冷 发表于 2024-9-14 16:21
听说火山都是用W的。你试试W的崩溃不

崩溃了......

雪很冷 发表于 2024-9-14 16:47:43

那就不清楚了。还是请大佬来帮帮你

czxv000 发表于 2024-9-14 16:49:44

<火山程序 类型 = "通常" 版本 = 1 />

方法 启动方法 <公开 类型 = 整数>
{
    主窗口对象.创建主窗口 ()
    全局.进程ID = 进程_取自进程ID_GetCurrentProcessId ()
    调试输出 ("进程ID", 全局.进程ID)
    全局.窗口句柄 = 窗口操作类.进程_ID取窗口句柄 (全局.进程ID, , , , )
    调试输出 ("全局.窗口句柄", 全局.窗口句柄)
    全局.hook句柄 = SetWindowLongPtrW (全局.窗口句柄, -4, 取静态方法地址 (NewLong))


    调试输出 ("全局.hook句柄", 全局.hook句柄)
    变量 要转换的字节集 <类型 = 字节集类>
    变量 结果指针 <类型 = 变整数>
    要转换的字节集 = 文本到字节集 ("______TLKJGJFDZB")
    调试输出 ("要转换的字节集", 要转换的字节集)
    结果指针 = 要转换的字节集.取字节集指针 ()
    调试输出 ("结果指针", 结果指针)
    全局.通信句柄 = RegisterWindowMessageA (结果指针)
    调试输出 ("全局.通信句柄", 全局.通信句柄)
    // SendMessageA (全局.窗口句柄, 全局.通信句柄, -1, 0)


    返回 (1)
}

方法 NewLong <静态 类型 = 整数>
参数 窗口句柄 <类型 = 变整数>
参数 消息值 <类型 = 整数>
参数 参数一 <类型 = 整数>
参数 参数二 <类型 = 整数>
{
    如果真 (消息值 == 257)
    {
      调试输出 ("按键A", 参数一)
      如果真 (参数一 == 36 || 参数一 == 33)
      {
            调试输出 ("按键", 参数一)
            全局.分控窗口.可视 = 取反 (全局.分控窗口.可视)

      }

    }
    如果真 (消息值 == 全局.通信句柄)
    {
      如果真 (参数一 == -1)
      {
            调试输出 ("创建窗口")

      }

    }

    返回 ((整数)CallWindowProcW (全局.hook句柄, 窗口句柄, 消息值, 参数一, 参数二))


}


uuyyhhjj 发表于 2024-9-14 17:09:37

大概是你参数3写错了

czxv000 发表于 2024-9-14 17:52:02

uuyyhhjj 发表于 2024-9-14 17:09
大概是你参数3写错了

是的,确实是参数1和参数2的问题,,,,, 但是get出来的数据 有点不对...不知道为啥我在研究研究 ,,感谢大哥

czxv000 发表于 2024-9-14 18:07:59

2625756, 274, 61536, 32900657
2625756, 16, 0, 0
2625756, 144, 0, 0
2625756, 70, 0, 885196310336
2625756, 71, 0, 885196310336
2625756, 134, 0, 0
2625756, 127, 2, 0
2625756, 6, 0, 0
2625756, 878, 0, 885196306504
2625756, 28, 0, 6948
2625756, 273, 33554533, 332208
2625756, 2, 0, 0


目前能获取到很多消息,,,唯独没看见按键消息
//按下一个键
WM_KEYUP = 257;
//释放一个键
WM_CHAR = 258;
//按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息
WM_DEADCHAR = 259;

czxv000 发表于 2024-9-15 01:58:42

已解决 ,不知道什么原因 注入后 get到按键消息
不注入 直接调试运行,get不到按键消息 很奇怪
页: [1]
查看完整版本: SetWindowLongPtrA 崩溃问题