postmessage API 函数的古怪问题_(100分)

  • 主题发起人 主题发起人 herald
  • 开始时间 开始时间
H

herald

Unregistered / Unconfirmed
GUEST, unregistred user!
postmessage API 函数的古怪问题
我有一个程序,是一个外挂,自动寻找一个包含股票帐号、交易密码、通讯密码的login窗口。
现在我的代码已经实现了自动寻找到这个包含股票帐号、交易密码、通讯密码的login窗口,
也找到了输入帐号的那个edit控件,现在我需要模拟按键输入一串帐号。发送之前需要删除
edit控件中的已有的帐号(如果有的话)。之后才是发送一个帐号字符串。
以下代码,可以实现发送帐号,但是有以下麻烦:
1。如果点击鼠标,让股票交易的login窗口获得焦点,那这个code就可
以自动删除账号edit框中的内容。并且可以自动输入帐号。
2。进行步骤1后,如果没有点击鼠标,让股票交易的login窗口获得焦点,
那这个code就只能实现输入账号,无法删除已有的内容。

我百思不得其解,请高手指教,以下这个代码,在对其他edit控件进行操作也是同样的现象。

以下是模拟输入一个账号的,senmessage代码
其中CWnd *cwnd是需要输入账号的cwnd对象。
char *str是需要输入的帐号字符串
BOOL is_combobox是一个无关紧要的参数,已经不使用了

void C_ABchina_FJ_yzt_login::sendkey_serial(CWnd *cwnd,char *str,BOOL
is_combobox)
//往一个windows对象中发送keycode
{
int i;
cwnd->SetFocus();
for(i=0;i<30;i++) //删除已有的内容
{ cwnd->SendMessage(WM_KEYDOWN,VK_DELETE);
//经常不能刷新combobox 文本
//Sleep(3);
cwnd->SendMessage(WM_KEYUP,VK_DELETE);
//Sleep(3);
}
while(*str!=0x00) //输入新的内容
{cwnd->PostMessage(WM_CHAR, *str, 0);
str++;
}
}

请相信我,我写的程序是绝对合法的程序。只是我想自己使用的一个code,绝对不是黑客之类的代码。
请相信我,我写的程序是绝对合法的程序。只是我想自己使用的一个code,绝对不是黑客之类的代码。
 
这其实是一个设置窗口焦点的问题.
并不是消息发送函数的问题.
可以这样想一下,你现在一个Edit窗口,不是焦点,你直接按键盘输入,那个Edit框里面也不会响应你的按键输入.换成消息发送函数来模拟键盘输入,实际上是一回事,不是焦点,当然不会响应输入.
我在解决此类问题的时候,是用一个DLL来做个鼠标钩子,注入到目标进程中,截取鼠标松开的消息,然后通过setwindowtext函数来设置Edit文本内容.
这样做的好处是,如果你是一个木马程序,那么在更改帐号的时候,不容易被察觉.
 
楼上的办法可行
 
后退
顶部