怎么模拟输入TAB键?

truewarrior 2003-11-19 02:12:52
keybd_event(VK_TAB, NULL,KEYEVENTF_EXTENDEDKEY | 0,0 );

还是
::PostMessage(hWnd, WM_KEYDOWN, VK_TAB, 0);

可是不知道怎么不行呢!
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
truewarrior 2003-11-19
  • 打赏
  • 举报
回复
richie_cn(追风无影剑) :
我已经这样做了,但对于在IE中的文本框好像不是一个窗口。不能得到文本框的Handle.
如何切换IE文本框的输入焦点呢? 改变到下一个文本框中
richie_cn 2003-11-19
  • 打赏
  • 举报
回复
//实现进程的附加
DWORD FormThreadID,CWndThreadID;
FormThreadID = GetCurrentThreadId(); // 本程序的线程ID
CWndThreadID = GetWindowThreadProcessId(hWnd, NULL); // 欲加窗口的线程ID,hWnd欲加窗口的句柄
AttachThreadInput(CWndThreadID, FormThreadID, true); // 将我的线程附加在欲加线程中
hComqq = ::GetFocus(); // 得到当前键盘光标所在的窗口
AttachThreadInput(CWndThreadID, FormThreadID, false); // 取消附加
if (hComqq == NULL) return;

for(k=0; k<len; k++)
::PostMessage (hComqq, WM_CHAR, (WPARAM)ch[k], 0);
::PostMessage(hComqq,WM_KEYDOWN,VK_TAB,0);
truewarrior 2003-11-19
  • 打赏
  • 举报
回复
更正,这个程序在不同程序中也是可以的,但是在IE中的文本框就不行了
truewarrior 2003-11-19
  • 打赏
  • 举报
回复
我的程序:
HWND hEdit = ::GetFocus(); //得到第一个文本框的句柄。 成功
::PostMessage(hEdit, WM_CHAR, 'A', 0); //输入A 成功
::PostMessage(hEdit, WM_KEYDOWN, VK_TAB, 0); //失败,光标不能转到下一个文本框,光标丢失了。

以上程序在一个程序中是可以的,但跨程序的时候 模拟TAB键就失败了

//实际中我按TAB键是可以的
truewarrior 2003-11-19
  • 打赏
  • 举报
回复
我的问题是我要在自己程序向别人的程序发送一个TAB键,使得那个程序的焦点由文本框1转到文本框2 。
现在已得到别人程序的HWND,和别人程序中的当前焦点文本框1的HWND,如何使输入的焦点转移到下个文本框2中? 效果类似TAB

xqk 2003-11-19
  • 打赏
  • 举报
回复
没问题的啊,是你的窗口句柄8对吧?~~~~

代码发过来看看
zhucde 2003-11-19
  • 打赏
  • 举报
回复
用PostMessage()可以啊!
只要this->PostMessage(WM_KEYDOWN, VK_TAB, 0); 就行了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧