首页
社区
课程
招聘
[旧帖] 如何获取编辑控件刚收到的字符串 0.00雪花
发表于: 2010-3-6 13:26 4548

[旧帖] 如何获取编辑控件刚收到的字符串 0.00雪花

2010-3-6 13:26
4548
RT

  用RADASM感觉最不舒服的是没有自动提示。每个代码都要一个一个敲.自己做了个程序 但现在的问题是 我想在我把字符串输入编辑框的时候就信息框弹一下刚才输入的字符串。不是全部字符串 而是刚输入的字符串..不知道要处理那些消息才可以。 找了好久没找到类似的源码或者程序。求教各位了。。

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

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
精确的控件名称是什么?
2010-3-6 13:32
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
Edit还是RichEdit
2010-3-6 13:32
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
都可以的..
2010-3-6 13:49
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
这个只有自已写程序,记住输入前的字符串,然后得到当前字符串,去掉前面的那个串就行了
2010-3-6 14:08
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那会不会太累
2010-3-6 14:13
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
怕累就给自已放个假,等不累的时候再写
2010-3-7 17:34
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
8
EN_CHANGE
2010-3-7 18:28
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
EN_CHANGE 得到的还是整个字符串
2010-3-8 10:15
0
雪    币: 45
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
只能处理EN_CHANGE,然后与刚才的字符串对比,把那些字符删掉就行了。
顺便我觉得radasm不如MasmEd好用。
2010-3-8 11:52
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
11
处理EM_CHANGE消息法


.386 
.model flat,stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\user32.inc 
includelib \masm32\lib\user32.lib
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD 

IDC_EDIT EQU 2001

.DATA
ClassName db "demo",0
AppName db "demo",0 
EditClassName db "edit",0
szFormat db "%c",0
.DATA?
hInstance HINSTANCE ?
CommandLine LPSTR ? 
hEdit HWND ?
.CODE
start: 
invoke GetModuleHandle, NULL
 
mov hInstance,eax 
invoke GetCommandLine 
                   
mov CommandLine,eax 
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT 
invoke ExitProcess, eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD 
    LOCAL wc:WNDCLASSEX
    LOCAL msg:MSG 
    LOCAL hwnd:HWND 
    mov   wc.cbSize,SIZEOF WNDCLASSEX 
    mov   wc.style, CS_HREDRAW or CS_VREDRAW 
    mov   wc.lpfnWndProc, OFFSET WndProc 
    mov   wc.cbClsExtra,NULL 
    mov   wc.cbWndExtra,NULL 
    push  hInstance 
    pop   wc.hInstance 
    mov   wc.hbrBackground,COLOR_WINDOW+1 
    mov   wc.lpszMenuName,NULL 
    mov   wc.lpszClassName,OFFSET ClassName 
    invoke LoadIcon,NULL,IDI_APPLICATION 
    mov   wc.hIcon,eax 
    mov   wc.hIconSm,eax 
    invoke LoadCursor,NULL,IDC_ARROW 
    mov   wc.hCursor,eax 
    invoke RegisterClassEx, addr wc
    invoke CreateWindowEx,NULL,\ 
                ADDR ClassName,\ 
                ADDR AppName,\ 
                WS_OVERLAPPEDWINDOW,\ 
                CW_USEDEFAULT,\ 
                CW_USEDEFAULT,\ 
                300,\
               200,\
                NULL,\ 
                NULL,\ 
                hInst,\ 
                NULL 
    mov   hwnd,eax 
    invoke ShowWindow, hwnd,CmdShow 
    invoke UpdateWindow, hwnd 

    .WHILE TRUE                                                 
                invoke GetMessage, ADDR msg,NULL,0,0 
                .BREAK .IF (!eax) 
                invoke TranslateMessage, ADDR msg 
                invoke DispatchMessage, ADDR msg 
   .ENDW 
    mov     eax,msg.wParam
    ret 
WinMain endp 

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 
	  LOCAL @buf1[256]:BYTE 
	  LOCAL @Buf2[32]:BYTE
    .IF uMsg==WM_DESTROY                   
        invoke PostQuitMessage,NULL   
    .ELSEIF uMsg==WM_CREATE
    		invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\ 	;
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\ 
                        ES_AUTOHSCROLL,\ 
                        50,35,200,25,hWnd,IDC_EDIT,hInstance,NULL 
         mov hEdit,eax
    .ELSEIF uMsg==WM_COMMAND
    		mov eax,wParam
    		.[COLOR="Red"]IF ax==IDC_EDIT   
    			shr eax,16
    			.IF eax==EN_CHANGE	;处理EN_CHANGE消息
    				invoke GetDlgItemText,hWnd,IDC_EDIT,addr @buf1,256
    				invoke lstrlen,addr @buf1
    				lea esi,@buf1
    				add esi,eax
    				dec esi
    				lodsb
    				invoke wsprintf,addr @Buf2,addr szFormat,eax
    				invoke MessageBox,NULL,addr @Buf2,addr @Buf2,MB_OK
    			.ENDIF
    		.ENDIF[/COLOR]
    .ELSE 
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam  
        ret 
    .ENDIF 
    xor eax,eax 
    ret 
WndProc endp 

end start 



窗口子类化法,在自己的处理函数中处理WM_CHAR消息

.386 
.model flat,stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\user32.inc 
include \masm32\include\kernel32.inc 
include \masm32\include\comctl32.inc 
includelib \masm32\lib\comctl32.lib 
includelib \masm32\lib\user32.lib 
includelib \masm32\lib\kernel32.lib 
WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD 
EditWndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD 

.data 
ClassName  db "demo",0 
AppName    db "demo",0 
EditClass  db "EDIT",0 
szFormat db "%c",0
.data? 
hInstance  HINSTANCE ? 
hwndEdit dd ? 
OldWndProc dd ? 

.code 
start: 
    invoke GetModuleHandle, NULL 
    mov    hInstance,eax 
    invoke WinMain, hInstance,NULL,NULL, SW_SHOWDEFAULT 
    invoke ExitProcess,eax 

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD 
    LOCAL wc:WNDCLASSEX 
    LOCAL msg:MSG 
    LOCAL hwnd:HWND 
    mov   wc.cbSize,SIZEOF WNDCLASSEX 
    mov   wc.style, CS_HREDRAW or CS_VREDRAW 
    mov   wc.lpfnWndProc, OFFSET WndProc 
    mov   wc.cbClsExtra,NULL 
    mov   wc.cbWndExtra,NULL 
    push  hInst 
    pop   wc.hInstance 
    mov   wc.hbrBackground,COLOR_APPWORKSPACE 
    mov   wc.lpszMenuName,NULL 
    mov   wc.lpszClassName,OFFSET ClassName 
    invoke LoadIcon,NULL,IDI_APPLICATION 
    mov   wc.hIcon,eax 
    mov   wc.hIconSm,eax 
    invoke LoadCursor,NULL,IDC_ARROW 
    mov   wc.hCursor,eax 
    invoke RegisterClassEx, addr wc 
    invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\ 
 WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_VISIBLE,CW_USEDEFAULT,\ 
           CW_USEDEFAULT,350,200,NULL,NULL,\ 
           hInst,NULL 
    mov   hwnd,eax 
    .while TRUE 
        invoke GetMessage, ADDR msg,NULL,0,0 
        .BREAK .IF (!eax) 
        invoke TranslateMessage, ADDR msg 
        invoke DispatchMessage, ADDR msg 
    .endw 
    mov eax,msg.wParam 
    ret 
WinMain endp 

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM 
    .if uMsg==WM_CREATE 
        invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR EditClass,NULL,\ 
            WS_CHILD+WS_VISIBLE+WS_BORDER,20,\ 
            20,300,25,hWnd,NULL,\ 
            hInstance,NULL 
        mov hwndEdit,eax 
        invoke SetFocus,eax 
        invoke SetWindowLong,hwndEdit,GWL_WNDPROC,addr EditWndProc 
        mov OldWndProc,eax 
    .elseif uMsg==WM_DESTROY 
        invoke PostQuitMessage,NULL 
    .else 
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam 
        ret 
    .endif 
    xor eax,eax 
    ret 
WndProc endp 

EditWndProc PROC hEdit:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD 
	 LOCAL @buf[256]:BYTE
    [COLOR="Red"].if uMsg==WM_CHAR 
        mov eax,wParam 
        push eax
        invoke wsprintf,addr @buf,addr szFormat,eax
        invoke MessageBox,NULL,addr @buf,addr @buf,0
        pop eax
        invoke CallWindowProc,OldWndProc,hEdit,uMsg,eax,lParam 
        ret [/COLOR]
    .else 
        invoke CallWindowProc,OldWndProc,hEdit,uMsg,wParam,lParam 
        ret 
    .endif 
    xor eax,eax 
    ret 
EditWndProc endp 
end start 



仅供参考
2010-3-8 12:14
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
上面的是什么语言写的
2010-3-8 13:58
0
雪    币: 45
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
11L的握个手……居然能找到跟咱一样喜欢用汇编的……
2010-3-8 23:49
0
雪    币: 309
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个老兄想必是想写KeyLoger。。。。
你们没听说过有这个API么?
GetKeyNameText

GetKeyNameText
The GetKeyNameText function retrieves a string that represents the name of a key.

int GetKeyNameText(

    LONG lParam,        // second parameter of keyboard message
    LPTSTR lpString,        // address of buffer for key name
    int nSize         // maximum length of key-name string length
   );

但用的时候记得加上个A
GetKeyNameTextA

楼主,若不嫌弃,就给分吧。
我要分买邀请码转正啊。。。
2010-3-9 10:51
0
游客
登录 | 注册 方可回帖
返回
//