精华内容
下载资源
问答
  • Java模拟发送键盘消息 shift组合

    千次阅读 2012-05-16 22:31:46
    Java中可通过java.awt.Robot来模拟发送消息:键盘消息,鼠标消息之类的。 先来试试 Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_ALT); robot.keyPress(KeyEvent...

    Java中可通过java.awt.Robot来模拟发送消息:键盘消息,鼠标消息之类的。

    先来试试

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_ALT);
    robot.keyPress(KeyEvent.VK_RIGHT);
    
    robot.keyRelease(KeyEvent.VK_RIGHT);
    robot.keyRelease(KeyEvent.VK_ALT);
    robot.keyRelease(KeyEvent.VK_CONTROL);

    成功的执行了QQMusic的下一首:Ctrl+Alt+Right

    再来试试Kuwo的下一首:Ctrl+Shift+Right

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_SHIFT);
    robot.keyPress(KeyEvent.VK_RIGHT);
    
    robot.keyRelease(KeyEvent.VK_RIGHT);
    robot.keyRelease(KeyEvent.VK_SHIFT);
    robot.keyRelease(KeyEvent.VK_CONTROL);

    狂点。。。没反应,难道不支持Shift键,google之

    http://www.webdeveloper.com/forum/showthread.php?t=221722

    这位仁兄遇到了相同的问题,不过是在四五年前了,他没有给出解决方案,只是给了一个记录键盘消息的代码,通过这段代码发现:按下SHIFT后,再按Right,会触发SHIFT的release事件和Right的press事件,难道是Java的bug,继续google之

    https://forums.oracle.com/forums/thread.jspa?threadID=2230592

    另一位仁兄也遇到了这个问题,看来吾道不孤也,而且还是前几个月发生的事情。在他那里,有人指出了问题之所在,这还真是Java的Bug

    Bug 4908075
    Bug 6463168

    让人费解的是bug已经提交N年了,还是没有修复。

    还好,有方法可以绕过这个bug:turn off the numlock keys

    Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);

    这样,就解决了发送组合键消息时,Shift不能和其他键同时按下的问题。

    http://weblogs.java.net/blog/joshy/archive/2003/08/swinghack_keybo.html

    后来发现,方法原来是有一位仁兄提供的,忽略了,不过网址没登上去。

    就此停笔了。。。


    展开全文
  • 关于向Windows窗口发送Alt组合的问题,这个真是经典问题啊,在网上找了一下,问的人N多,方法差不多, 但就是没有很好解决问题。之前找到一个能正确发送的code:(Alt+A)PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0);Post...

    关于向Windows窗口发送Alt组合键的问题,这个真是经典问题啊,在网上找了一下,问的人N多,方法差不多,

    但就是没有很好解决问题。

    之前找到一个能正确发送的code:(Alt+A)

    PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0);

    PostMessage(hWnd,WM_SYSKEYDOWN,0x41,0);

    Sleep(50);

    PostMessage(hWnd,WM_SYSKEYUP,0x41,0);

    PostMessage(hWnd,WM_SYSKEYUP,VK_MENU,0);

    有人解释说,按下组合键的时候系统是发两条消息的

    但是看到Win32 SDK,感觉上就发一次就可以了……

    偶然间又看到最后一个参数的说明,有所发现!先看WM_SYSKEYDOWN的help

    The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lKeyData parameter. 

    WM_SYSKEYDOWN  
    nVirtKey = (int) wParam; // virtual-key code 
    lKeyData = lParam;       // key data 


    Parameters

    nVirtKey

    Value of wParam. Specifies the virtual-key code of the key being pressed. 

    lKeyData

    Value of lParam. Specifies the repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table: 

    Value Description
    0-15 Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.
    16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
    24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
    25-28 Reserved; do not use.
    29 Specifies the context code. The value is 1 if the ALT key is down while the key is pressed; it is 0 if the WM_SYSKEYDOWN message is posted to the active window because no window has the keyboard focus.
    30 Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.
    31 Specifies the transition state. The value is always 0 for a WM_SYSKEYDOWN message.


    之前曾经修改过keyData的16-23位为VK_MENU,第30位参数为1,但没效果

    请看位29的说明!!

    The value is 1 if the ALT key is down while the key is pressed; 

    当值为1时表示ALT键被按下!这不正是我需要的吗?于是把29位设置为1,函数调用变成

    PostMessage(hWnd,WM_SYSKEYDOWN,0x41,1<<29);

    经过测试,发现这个就是Alt+A的效果!!原来这么简单,但为什么很多人弄得那么复杂,我当时查找的时候也是迷惘啊,浪费了N多小时。

    类似有个WM_SYSKEYUP,WM_SYSCHAR(这个不知道干什么用)

     

    记录一下免得 又便成了 找不到资料的傻子了

    postmessage(edit1.handle,wm_keydown,vk_down,$20000000)

    Ctrl : $10000000;   
    Shift: $08000000;   
    Alt:20000000

     

    Delphi键盘按键伪码

    if key = chr(VK_RETURN) then...

    常数名称 十六进制值 十进制值 对应按键
    VK_LBUTTON 01 1 鼠标的左键
    VK_RBUTTON 02 2 鼠标的右键
    VK-CANCEL 03 3 Contol-break 执行
    VK_MBUTTON 04 4 鼠标的中键(三按键鼠标)
    VK_BACK 08 8 Backspace键
    VK_TAB 09 9 Tab键
    VK_CLEAR 0C 12 Clear键
    VK_RETURN 0D 13 Enter键
    VK_SHIFT 10 16 Shift键
    VK_CONTROL 11 17 Ctrl键
    VK_MENU 12 18 Alt键
    VK_PAUSE 13 19 Pause键
    VK_CAPITAL 14 20 Caps Lock键
    VK_ESCAPE 1B 27 Ese键
    VK_SPACE 20 32 Spacebar键
    VK_PRIOR 21 33 Page Up键
    VK_NEXT 22 34 Page Domw键
    VK_END 23 35 End键
    VK_HOME 24 36 Home键
    VK_LEFT 25 37 LEFT ARROW 键(←)
    VK_UP 26 38 UP ARROW键(↑)
    VK_RIGHT 27 39 RIGHT ARROW键(→)
    VK_DOWN 28 40 DOWN ARROW键(↓)
    VK_SELECT 29 41 SELECT键
    VK_EXECUTE 2B 43 EXECUTE键
    VK_SNAPSHOT 2C 44 Print Screen键 
    VK_INSERT 2D 45 Ins键
    VK_DELETE 2E 46 Del键
    VK_HELP 2F 47 Help键
    VK_0 30 48 0键
    VK_1 31 49 1键
    VK_2 32 50 2键
    VK_3 33 51 3键
    VK_4 34 52 4键
    VK_5 35 53 5键
    VK_6 36 54 6键
    VK_7 37 55 7键
    VK_8 38 56 8键
    VK_9 39 57 9键
    VK_A 41 65 A键
    VK_B 42 66 B键
    VK_C 43 67 C键
    VK_D 44 68 D键
    VK_E 45 69 E键
    VK_F 46 70 F键
    VK_G 47 71 G键
    VK_H 48 72 H键
    VK_I 49 73 I键
    VK_J 4A 74 J键
    VK_K 4B 75 K键
    VK_L 4C 76 L键
    VK_M 4D 77 M键
    VK_N 4E 78 N键
    VK_O 4F 79 O键
    VK_P 50 80 P键
    VK_Q 51 81 Q键
    VK_R 52 82 R键
    VK_S 53 83 S键
    VK_T 54 84 T键
    VK_U 55 85 U键
    VK_V 56 86 V键
    VK_W 57 87 W键
    VK_X 58 88 X键
    VK_Y 59 89 Y键
    VK_BZ 5A 90 Z键
    VK_NUMPAD0 60 96 数字键0键
    VK_NUMPAD1 61 97 数字键1键
    VK_NUMPAD2 62 98 数字键2键
    VK_NUMPAD3 63 99 数字键3键
    VK_NUMPAD4 64 100 数字键4键
    VK_NUMPAD5 65 101 数字键5键
    VK_NUMPAD6 66 102 数字键6键
    VK_NUMPAD7 67 103 数字键7键
    VK_NUMPAD8 68 104 数字键8键
    VK_NUMPAD9 69 105 数字键9键
    VK_MULTIPLY 6A 106 *键
    VK_ADD 6B 107 +键
    VK_SEPARATOR 6C 108 Separator键
    VK_SUBTRACT 6D 109 -键
    VK_DECIMAL 6E 110 .键
    VK_DIVIDE 6F 111 键
    VK_F1 70 112 F1键
    VK_F2 71 113 F2键
    VK_F3 72 114 F3键
    VK_F4 73 115 F4键
    VK_F5 74 116 F5键
    VK_F6 75 117 F6键
    VK_F7 76 118 F7键
    VK_F8 77 119 F8键
    VK_F9 78 120 F9键
    VK_F10 79 121 F10键
    VK_F11 7A 122 F11键
    VK_F12 7B 123 F12键
    VK_NUMLOCK 90 144 Num Lock 键
    VK_SCROLL 91 145 Scroll Lock键

    转载于:https://www.cnblogs.com/MaxWoods/p/3296907.html

    展开全文
  • 向指定窗口发送模拟键盘按键消息

    万次阅读 2015-08-05 16:09:13
    //根据窗口标题找到对应窗口的句柄 HWND hq = FindWindow(NULL, title); if (hq != NULL) ...//通过句柄向指定窗口发送模拟键盘按键消息 SendMessage(hq, WM_KEYDOWN, 'L', 0); ------------

    //根据窗口标题找到对应窗口的句柄

    HWND hq = FindWindow(NULL, title);
    if (hq != NULL)
    {
    	cout << "找到对应窗口";
    }
    else
    {
    	cout << "没找到对应窗口";
    }

    //通过句柄向指定窗口发送模拟键盘按键消息
    SendMessage(hq, WM_KEYDOWN, 'L', 0);


    --------------------------------------------------------------------------------------------------------------------------------



    keybd_event('M', 0, 0 ,0);
    keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
    也可以模拟键盘和鼠标按键,但无法向指定窗口发送按键消息,除非让目标窗口位于最顶层


    参考http://blog.csdn.net/dazhong159/article/details/7903382

    http://www.cnblogs.com/wind-net/archive/2012/11/01/2750123.html

    http://blog.csdn.net/xgx198831/article/details/6679064

    http://blog.csdn.net/hhaoma/article/details/3170778




    keybd_event('M', 0, 0 ,0);
    keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
    也可以模拟键盘和鼠标按键,但无法向指定窗口发送按键消息,除非让目标窗口位于最顶层
    展开全文
  • VC 向其他程序发送按键消息

    千次阅读 2013-08-19 16:57:30
    【转】VC 向其他程序发送按键消息 VC如何模拟按键并释放? 模拟按键: 利用PostMessage函数发送按键消息. HWND hWnd; hWnd = ::FindWindow(NULL, "指定的窗口标题");//得到目标窗口句柄 if ( hWnd ...

    【转】VC 向其他程序发送按键消息

    VC如何模拟按键并释放? 模拟按键:

    利用PostMessage函数发送按键消息.
    HWND hWnd;
    hWnd = ::FindWindow(NULL, "指定的窗口标题");//得到目标窗口句柄
    if ( hWnd == NULL ) 
    {
           AfxMessageBox("没有找到目标程序");
    }
    else
    {
       ::PostMessage(hWnd, WM_KEYDOWN, VK_F1, 1); 
       ::PostMessage(hWnd,WM_KEYUP, VK_F1, 1);    //释放
        }

    或者:

    HWND hWnd;
    hWnd = ::FindWindow(NULL, "计算器");//找到目标窗口的hWnd 
    if ( hWnd != NULL )
    {
       ::PostMessage(hWnd, WM_KEYDOWN, VK_F1, 1); 
       ::PostMessage(hWnd,WM_KEYUP, VK_F1, 1);    //释放
    }

    求一个用vc写的发送按键消息的例程

    悬赏分:200 - 解决时间:2008-9-27 13:39
    比如向 最小化 的记事本打一个“a”进去。 
    看清楚哦,要那种最小化也可以的哦。 
    我要完整的代码,要直接复制到vc6.0里就能运行的。 
    对高手来说应该不难吧~~~~谢咯
    问题补充: 
    鄙视粘贴复制流~~~~~
    谢三楼哈~~~~~~~你能稍微解释一下吗??
    为什么要加一句HWND hWndc = ::GetWindow(hWnd,GW_CHILD); 
    我小菜,不太懂~~~最佳答案
    检举    
    #include <windows.h> 
    void main() 

    HWND hWnd = ::FindWindowW(L"Notepad",NULL); //搜索记事本程序主窗口句柄 
    HWND hWndc = ::GetWindow(hWnd,GW_CHILD); //获得记事本客户区句柄(该窗口是记事本主窗口的子窗口,即那个白色的可编辑区域) 
    if(hWndc) //如果获得了该句柄 
    ::SendMessage(hWndc,WM_CHAR,'A',NULL);//发送按键消息


    这个例子就是实现向 最小化 的记事本打一个“A”进去。别的字符把最后一行单引号里面的A换掉就行了。

    如果你用mfc生成过基于doc/view的程序就明白为什么有这一句了。hWnd相当于主框架窗口,hWndc相当于视图窗口

    vc发送按键的两种方法:
    1.SendMessage or PostMessage
    2.keybd_event,mouse_event
    前者更强大,指定hwnd后可以后台发送,而后者只能够发送前台信息..也就是必须窗口最前
    简单的举例:
    方法2
    SetCursorPos(x,y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    keybd_event(k,0,0,0);
    keybd_event(k,0,KEYEVENTF_KEYUP,0); 
    方法1
    以当前程序的某个输入框为例:
    HWND tw2 = GetDlgItem(IDC_EDIT1)->m_hWnd;
    ::SendMessage(tw2,WM_CHAR,s[i],0);
    否个按钮:
    HWND tw3 = GetDlgItem(IDOK)->m_hWnd;
    ::SendMessage(tw3,WM_LBUTTONDOWN,0,0);
    ::SendMessage(tw3,WM_LBUTTONUP,0,0);
    以记事本为例
    wnd = ::FindWindow("notepad",   NULL);   
    wnd   =   FindWindowEx(wnd,0,"Edit",NULL);   
    ::SendMessage(tw2,WM_CHAR,s[i],0);
    有人就说了,我不知道名字叫Edit啊,有下面的方法:
    CWnd * pwnd = FindWindow("notepad",   NULL);
    CWnd * p2 = pwnd->GetTopWindow();
    wnd = p2->m_hWnd;
    ::SendMessage(tw2,WM_CHAR,s[i],0);
    又有人说了,如果连notepad也不知道呢...
    我说,进程ID总知道了吧...遍历进程池得到想要的进程ID,然后找到指定ID的hwnd
    struct   EnumParam   
    {   
        HWND   hMainWnd;   
        DWORD   dwProcessID;   
    };   

    BOOL   CALLBACK   EnumWinProc(HWND   hwnd,   LPARAM   lParam)   
    {   
        DWORD   dwID;   
        EnumParam*   pep   =   (EnumParam*)lParam;   
        GetWindowThreadProcessId(hwnd,&dwID);   
        if   (dwID   ==   pep->dwProcessID)   {   
            pep->hMainWnd = hwnd;     
            return   0;   
        }   
        return   TRUE;   

            EnumParam   ep;   
            STARTUPINFO   si;   
            PROCESS_INFORMATION   pi;   
            
            ep.hMainWnd   =   NULL;   
            memset(&si,   0,   sizeof(si));   
            si.cb   =   sizeof(STARTUPINFO);   
            if   (CreateProcess(NULL,"notepad.exe   c:\1.txt",   
                NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))     
            {   
                CloseHandle(pi.hThread);   
                CloseHandle(pi.hProcess);   
                ep.dwProcessID   =   pi.dwProcessId;   
                while(!ep.hMainWnd)   {   
                    EnumWindows((WNDENUMPROC)EnumWinProc,   (long)&ep);   
                    //没有下面的一行,CPU的使用率会高居不下,同时其它的程序   
                    //也会执行的很慢(包括程序启动的Notepad.exe)   
                    if   (ep.hMainWnd==NULL)   Sleep(20);     
                }   
                //EnumWindows((WNDENUMPROC)EnumWinProc, (long)&ep);   
            }   
            //此时的   ep.hMainWnd   就是你要的NodePad.exe窗口的句柄   

    //接下来由hwnd得到CWND *
        wnd = ep.hMainWnd;
        if(wnd == NULL) AfxMessageBox("Fasle");
        CWnd * tc = FromHandle(wnd);

    //获取
        wnd = tc->GetTopWindow()->m_hWnd;
    ::SendMessage(tw2,WM_CHAR,s[i],0);

    //OK啦

    遍历进程的代码下次再发了

         keybd_event(VK_SHIFT,0,0,0);            //模拟按下shift键
         keybd_event(VK_LCONTROL,0,0,0);            //模拟按下ctrl键
        int iResult = (int)ShellExecute(NULL,"open","C:\abcd.exe",NULL,NULL,SW_SHOWNORMAL);    //执行应用程序

         Sleep(1000);        //停顿一秒
         keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);    //释放ctrl键
         keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);        //释放shift键
    注意: 使用完一定要释放按键,否则整个系统都是一直按下ctrl+shift键,让你不得不注销用户,呵呵
    展开全文
  • 但是遇到个问题,如果我按下组合松开,从SPY++上看窗口是接收到按键消息了,但是实际没有作出按键行为 如果我给响应消息设置个延迟,能让我在松开组合时再向窗口postmessage,就能实现 怎么样才能在我不...
  • 向任意应用程序(包括后台的)发送任意按键消息(包括普通字符、功能、Shift/Control/Alt加任意按键的组合),以实现自动执行特定功能,是一个用途很广、很有实用价值的功能,很多人都受困于此,不得其解,...
  • 发送消息,我们可以使用SendMessage()和PostMessage(),所以,只要使用这两个函数来发送鼠标和键盘的相关消息就可以了。此外,还可以通过keybd_event()和mouse_event()两个专用的函数进行鼠标和键盘按键的模拟操作。...
  • 在一个项目中需要调用第三方的控制台程序进行录音,录音完成需要敲个回车结束录音.控制台程序是在后台隐藏运行,使用 spy++可找到其窗口名,便可通过 findwindow 找到其句柄hWnd,本以为可使用SendMessage 和 Post...
  • VB实现向窗口发送按键消息

    千次阅读 2009-12-09 16:46:00
    在一个键盘消息中,wParam 参数的 含义较简单,它表示你要发送的键盘事件的按键虚拟码,比如你要对目标程序模拟按下A,那么wParam 参数的值就设为VK_A ,至于lParam 这个参数就比较复杂了,因为它包含了多个信息,...
  • ... 先上图,以记事本为例,新建若干个command. 直接上代码。试过了,发送单字符及功能F3问题。 发送CTRL+C,CTRL+X,CTRL+V不能后台,只能...
  • 该程序窗体是自绘的,用spy++查看时是个整体,不可拆分。将该窗体设为当前活动程序,按上下即可进行操作,但通过sendmessage函数发送上下键消息却无响应。句柄已抓住,发送消息时也已设为当前活动程序。请慎重回答
  • 向外部程序发送按键(或组合

    千次阅读 2008-09-01 00:52:00
    由我的程序C向最小化的B程序发送按键或组合(譬如在使用Word时,有一个最小化到任务栏上的IE窗口,我想刷新(F5)或保存(CTRL+S)它)我的想法是,先找到窗口的句柄,然后用Sendmessage向该窗口发送按键消息:int...
  • 用C#调用Windows API向指定窗口发送按键消息 z 用C#调用Windows API向指定窗口发送 一、调用Windows API。 C#下调用Windows API方法如下: 1、引入命名空间:using System.Runtime.InteropServices;  2、...
  • AutoHotkey: 向特定程序发送键盘消息

    千次阅读 2012-08-10 15:53:01
    最近用ZzFlash听一些新东方的flash课程. 因为要记笔记,查字典或者干一些别的其他什么事情, 我...所以我经常要做的事儿就是将ZzFlash激活, 然后按下空格(暂停/播放), 然后再转去干一些别的事情, 如此往复.   ...
  • vc发送和接受组合键消息

    千次阅读 2011-10-28 17:48:40
    1、向Windows窗口发送Alt组合 先看WM_SYSKEYDOWN的help: The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user holds down the ALT key and then presses another ...
  • 解决移植单色屏时使用了实体键发送窗口处理消息时导致卡死。 在操作实体发送对应的消息,用到最多的是GUI_SendKeyMsg(GUI_KEY_TAB,1); //制表,可以用来切换焦点聚焦到不同的小工具上。期间操作按键发送TAB...
  • 关于向Windows窗口发送Alt组合的问题,这个真是经典问题啊,在网上找了一下,问的人N多,方法差不多,但就是没有很好解决问题。之前找到一个能正确发送的code:(Alt+A)PostMessage(hWnd,WM_SYSKEYDOWN,VK_MENU,0);Post...
  • 最近要做一个控制某个特定窗口的功能,需要将一些鼠标和键盘控制消息映射到对应的窗口上,再用这个就不行了。之后查了下,应该是可以用SendMessage或者PostMessage来做的,但使用的过程中遇到了一些问题,解决之后...
  • WPF向指定窗口发送键盘指令

    千次阅读 2016-07-18 18:15:27
    现在网上的库大部分都是VB的那个发送键盘指令的库,那个在WPF里面是用不了的,WPF的话可以用System.Windows.Forms中的其实跟VB中的Microsoft.VisualBasic.Devices这个里面的SendKeys用法差不多一样,吐槽一下,新的...
  •   两者从函数结构上看主要区别其实就是返回值不同,SendMessage返回消息被处理后的返回值,而PostMessage则返回消息是否发送成功。   其次,SendMessage是同步的,而PostMessage是异步的。SendMessage会等待消息...
  • <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>聊天对话框 - 回车键发送信息</title> <style> #box{ width: 300px; ...
  • 模拟键盘发送消息 QKeyEvent * key_event = new QKeyEvent(QEvent ::KeyPress , key, Qt ::NoModifier ,QString(QChar(key))); QCoreApplication ::postEvent (QApplication ::focusObject (), key_event...
  •  向任意应用程序(包括后台的)发送任意按键消息(包括普通字符、功能、Shift/Control/Alt加任意按键的组合),以实现自动执行特定功能,是一个用途很广、很有实用价值的功能,很多人都受困于此,不得其解,...
  • 前面将ENTER设置为发送键,发现发送后还自动会换行.. 点击打开链接 那如何避免换行呢? 当只有ENTER键没有Ctrl键就入如下语句就可以避免。 var e=window.event||arguments[0]; e.returnValue=false; return...
  • 但是我现在遇到个游戏,这两个函数都不能正常发送消息,用spy++检测不到消息。窗口句柄是没有问题的。 还有个函数keybd_event 也能实现,但是 不能指定窗口,也是什么用啊 ! 但是同样的语句按键精灵可以实现,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 291,890
精华内容 116,756
关键字:

信息没有发送键怎么办