用这个写的程序填写一个对话框:类 #32770 (对话框)得到类 #32770 (对话框)
   主窗体句柄 Hwndw                        ________
得到text句柄  wHWndPas      (比如输入卡号:)[________]后面的test空壳
 
得到botton句柄wHWndBot现在发送消息    SendMessage wHWndLog, WM_SETTEXT, 0, ByVal Text1.Text 到text中填写了卡号 "12345678"
然而点botton   提示,请输入卡号。
好像我的卡号没填写进去一样,可实际已经填写好。
是不是没有刷新什么的?我该怎么做迷茫。

解决方案 »

  1.   

    可能它在text的keydown之类的事件中有判断处理。
      

  2.   

    LZ是想不通过刷卡而是用程序将卡填进去然后能自动登陆吧?
    问题可能出在这儿,即那个TEXT可能只是个带立体边框的标签,也可能是一个文本框,你可以先使用GetClassName确定一下。此外,依我的经验,刷卡程序是先读串口数据到缓冲区,然后由标签或文本框负责显示数据,你即使修改了文本框中的数据,但串口缓冲区还是为空,所以会提示你刷卡。
    要完全达到目的,必须找到缓冲区的内存地址,然后修改这个地址的内容,可以通过静态反汇编来实现,直接发送字符到文本框中是实现不了的。
    你还可以使用一些工具来找到这个地址,比如完成一次刷卡,然后搜索内容中存储卡号的内存地址(可能不止一个),记录下来逐一试验就可以了。
    注:由于WIN32程序的地址是进程独立的,因此全局堆变量的地址是由编译时决定的,只要找到这个缓冲区的地址,则每次运行时地址不会改变。
      

  3.   

    那请问如何做能解决这个问题呢?
    有人已经解决了这个问题,不过我不行,呵呵。
    我现在已经在研究 读卡的整个过程。
    直接填写数据目前没能解决这个问题。
    keydown之类的事件中有判断处理,能否再次去触发。。本人很菜,不过正在加倍努力哦,呵呵。
    谢谢帮忙,你们永远是我最好的朋友。