想模拟如下功能
当我安下键盘任何一个键值的时候 例如 '1' 
则程序自动模拟键盘'1' 一直按,如果我按别的 就模拟别的按键..多谢大家

解决方案 »

  1.   

    你可以使用keybd_event来模拟。
      

  2.   

    做一个键盘钩子,用于捕捉按键信息;再用keybd_event模拟.
    类似的帖子有很多,搜一下先
      

  3.   

    模枋这个做吧:http://vckbase.com/document/viewdoc/?id=271
      

  4.   

    这个我知道。问题出在这里我现在获取键盘的按键没问题,,也知道用keybd_event这个模拟键盘。
    目前问题如下:
    我是把按键信息从dll中返回后,然后模拟keybord_event还是直接在dll中模拟。
    如果返回的。好像dll不支持全局变量。
      

  5.   

    dll中不能模拟,无数次的输入需要循环调用模拟函数,直到你设置的循环条件不成立才结束.所以你必需在应用程序中模拟.你可以在钩子得到键盘的按键后向你的应用程序发送消息来实现,在你的应用程序中响应该消息即可,只要一个响应函数就能搞定.这是我的思路,应该没问题,自定义消息怎么实现我想你应该会的(既然你会做钩子),我就不多说了.思路也清晰,具体问题再具体调试吧.
      

  6.   

    受到 谢gaopl_8278(老婆脾气爆)
      

  7.   

    用while加SendMessage应该也可以的.
      

  8.   

    现在问题又来了.
    当我程序运行的时候,我如何向当前活动的启动窗体Post一个键盘键值消息,并且当前活动的窗体上出现我post的结果
      

  9.   

    使用 BOOL PostMessage(     
            HWND hWnd,
            UINT Msg,
            WPARAM wParam,
            LPARAM lParam
    );
    发送消息即可,各参数请参照MSDN等相关资料。
      

  10.   

    这个函数我懂。可是我用如下代码不能达到我想的结果
    CWnd *hd = GetActiveWindow();
    HWND aa = hd->m_hWnd;
    ::PostMessage(aa, WM_KEYDOWN, 1, 0);
    发送一个'1' 我用的是记事本,可是里面不打印出一个'1' ...
      

  11.   

    也可能是你的keybd_event的实现有问题:
    keybd_event( nKey, MapVirtualKey(nKey,0), 0, 0);
    keybd_event( nKey, MapVirtualKey(nKey,0), KEYEVENTF_KEYUP, 0);
      

  12.   

    to angelcool(快乐需要创造)
    我测试了下,如果用 
    keybd_event( nKey, MapVirtualKey(nKey,0), 0, 0);
    keybd_event( nKey, MapVirtualKey(nKey,0), KEYEVENTF_KEYUP, 0);
    键盘进入死循环。一直触发钩子
      

  13.   

    这个函数我懂。可是我用如下代码不能达到我想的结果
    CWnd *hd = GetActiveWindow();
    HWND aa = hd->m_hWnd;
    ::PostMessage(aa, WM_KEYDOWN, 1, 0);
    发送一个'1' 应该是
    ::PostMessage(aa, WM_KEYDOWN, '1', 0);
    并且最好不用GetActiveWindow,而用GetForegroundWindow