首页
社区
课程
招聘
[求助]关于API的调用!
发表于: 2006-7-16 12:16 3353

[求助]关于API的调用!

2006-7-16 12:16
3353
call    <jmp.&USER32.GetDlgItemTextA>
这条指令是获得输入框的内容,但是获得的数据一般保存在哪里呢?
谢谢指导!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2506
活跃值: (1025)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
2
UINT GetDlgItemText(

    HWND hDlg,        // handle of dialog box
    int nIDDlgItem,        // identifier of control
    LPTSTR lpString,        // address of buffer for text
    int nMaxCount         // maximum size of string
   );
第三个参数就是获得数据的地址。汇编中如这样:
004010E3  |.  68 FF000000   PUSH 0FF                                 ; /Count = FF (255.)
004010E8  |.  68 20304000   PUSH uninstal.00403020                   ; |Buffer = uninstal.00403020
004010ED  |.  68 E9030000   PUSH 3E9                                 ; |ControlID = 3E9 (1001.)
004010F2  |.  FF75 08       PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
004010F5  |.  E8 EE000000   CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA

上面的004010E8地址处的指令PUSH uninstal.00403020中的00403020就是保存获得数据的地址。
2006-7-16 12:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,终于明白了!那么"ControlID = 3E9"和"Count = FF"是什么意义呢?为什么要将3E9和FF入栈呢?
2006-7-16 12:44
0
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ControlID = 3E9是控件ID,表示你要获取的那个控件,Count = FF就是欲取得的最大长度了
2006-7-16 13:02
0
雪    币: 2506
活跃值: (1025)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
5
ControlID 是上面函数原型中的第二个参数,就是控件 ID,用资源编辑工具看一下就明白了。我这里的编辑框的控件 ID 是 1001,16进制就是 3E9,用这个来指示到底要获得哪个控件的内容。
上面我贴的函数原型已经说的很清楚了,四个参数,汇编调用参数入栈是类似于__stdcall的方式,参数由右到左传递。还不清楚的话看看新手入门必读,有调用约定的解释。
2006-7-16 13:03
0
游客
登录 | 注册 方可回帖
返回
//