﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-sohd-文章分类-Windows编程</title><link>http://www.cppblog.com/sohd/category/11631.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 03 Sep 2009 10:49:44 GMT</lastBuildDate><pubDate>Thu, 03 Sep 2009 10:49:44 GMT</pubDate><ttl>60</ttl><item><title>模似鼠标/键盘</title><link>http://www.cppblog.com/sohd/articles/94838.html</link><dc:creator>sohd</dc:creator><author>sohd</author><pubDate>Sun, 30 Aug 2009 16:18:00 GMT</pubDate><guid>http://www.cppblog.com/sohd/articles/94838.html</guid><wfw:comment>http://www.cppblog.com/sohd/comments/94838.html</wfw:comment><comments>http://www.cppblog.com/sohd/articles/94838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sohd/comments/commentRss/94838.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sohd/services/trackbacks/94838.html</trackback:ping><description><![CDATA[   HWND hWndGame = ::FindWindow("计算器", NULL);<br />   RECT rc = {0};<br />   GetWindowRect(hWndGame, &amp;rc);<br />   MoveWindow(hWndGame, 0, 0, rc.right-rc.left, rc.bottom-rc.top, TRUE);   // 移动窗体<br />   SetCursorPos(0, 0);    // 设置鼠标位置<br />   mouse_event(MOUSEEVENTF_MOVE, 320, 375, 0, 0);     // 相对移动    也就是从当前鼠标位置开始 X偏移320  Y偏移375<br />// 下面2个 模似了一个单击鼠标左键 <br />   mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);    <br />   mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);<br /><br />//  模似键盘<br />   keybd_event(0x4e, 0, KEYEVENTF_EXTENDEDKEY, 0);      0x4e 代表字母 'n' <br />   keybd_event(0x4e, 0, KEYEVENTF_KEYUP, 0);<br /><br />mouse_event 详解<br />参数： <br />　　dwFlags：标志位集，指定点击按钮和鼠标动作的多种情况。此参数里的各位可以是下列值的任何合理组合： <br />　　MOUSEEVENTF_ABSOLUTE：表明参数dX，dy含有规范化的绝对坐标。如果不设置此位，参数含有相对数据：相对于上次位置的改动位置。此标志可被设置，也可不设置，不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息，参见下面备注部分。 <br />　　MOUSEEVENTFMOVE：表明发生移动。 <br />　　MOUSEEVENTF_LEFTDOWN：表明接按下鼠标左键。 <br />　　MOUSEEVENTF_LEFTUP：表明松开鼠标左键。 <br />　　MOUSEEVENTF_RIGHTDOWN：表明按下鼠标右键。 <br />　　MOUSEEVENTF_RIGHTUP：表明松开鼠标右键。 <br />　　MOUSEEVENTF_MIDDLEDOWN：表明按下鼠标中键。 <br />　　MOUSEEVENTF_MIDDLEUP：表明松开鼠标中键。 <br />　　MOUSEEVENTF_WHEEL：在Windows NT中如果鼠标有一个轮，表明鼠标轮被移动。移动的数量由dwData给出。 <br />　　dx：指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量，依赖于MOUSEEVENTF_ABSOLOTE的设置。给出的绝对数据作为鼠标的实际X坐标；给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量，表明鼠标已经移动。 <br />　　dy：指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量，依赖于MOUSEEVENTF_ABSOLVTE的设置。给出的绝对数据作为鼠标的实际y坐标，给出的相对数据作为移动的mickeys数。 <br />　　dwData：如果dwFlags为MOUSEEVENTF_WHEEL，则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动，即远离用户的方向；负值表明鼠标轮向后转动，即朝向用户。一个轮击定义为WHEEL_DELTA，即120。 <br />　　如果dwFlagsS不是MOUSEEVENTF_WHEEL，则dWData应为零。 <br />　　dwExtralnfo：指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessgeExtrajnfo来获得此附加信息。 <br />　　返回值：无。 <br />　　备注：如果鼠标被移动，用设置MOUSEEVENTF_MOVE来表明，dX和dy保留移动的信息。给出的信息是绝对或相对整数值。 <br />　　如果指定了MOUSEEVENTF_ABSOLOTE值，则dX和dy含有标准化的绝对坐标，其值在0到65535之间。事件程序将此坐标映射到显示表面。坐标（0，0）映射到显示表面的左上角，（6553，65535）映射到右下角。 <br />　　如果没指定MOUSEEVENTF_ABSOLOTE，dX和dy表示相对于上次鼠标事件产生的位置（即上次报告的位置）的移动。正值表示鼠标向右（或下）移动；负值表示鼠标向左（或上）移动。 <br />　　鼠标的相对移动服从鼠标速度和加速度等级的设置，一个最终用户用鼠标控制面板应用程序来设置这些值，应用程序用函数SystemParameterslnfo来取得和设置这些值。 <br />　　在应用加速时系统对指定相对鼠标移动提供了两个测试。如果指定的沿X轴y轴的距离比第一个鼠标阈值大，并且鼠标的加速等级非零，则操作系统将距离加倍。如果指定的沿X轴或y轴的距离比第二个鼠标阈值大，并且鼠标的加速等级为2，则操作系统将从第一个阈测试得来的距离加倍。这样就允许操作系统将指定鼠标沿X轴或y轴的相对位移加到4倍。 <br />　　一旦应用了加速，系统用期望的鼠标速度换算合成的值。鼠标速度的范围是从1（最慢）到20（最快），并代表基于鼠标移动的距离指示符移动的数量。缺省值是10，表示对鼠标的移动设有附加的修改。 <br />　　函数mouse_event需要用的应用程序用来合成鼠标事件。也被应用程序用来取得鼠标位置和鼠标按键状态之外的鼠标信息。例如，如果输入板制造商想将基于画笔的信息传给自己的应用程序，可以写一个直接与输入板硬件通信的动态键接库（DLL），获得附加的信息，并保存到一个队列中。DLL然后调用 mouse_event，用标准按键和x/y位置数据，并在参数dwExtralnfo设置排列的附加信息的指针或索引。当应用程序需要附加信息时，调用 DLL（连同存贮在dwEXtralnfo中的指针或索引），则DLL返回附加信息。<img src ="http://www.cppblog.com/sohd/aggbug/94838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sohd/" target="_blank">sohd</a> 2009-08-31 00:18 <a href="http://www.cppblog.com/sohd/articles/94838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>