新人求助:mouse_event失效的问题

问题描述

我在做一个远程控制,接收端一个form里,引入了mouse_event,还有一个udpclient不断的接收控制端发送的鼠标坐标。我发现当这个form显示时,接收端可以被控制,如果form最小化或者visible=false后,还能继续接收数据,但是鼠标就是不能被控制。如果form重新显示出来,又能继续控制。求助,这是什么原因啊?这是源码publicpartialclassForm1:Form{[DllImport("user32.dll")]publicstaticexternintSetCursorPos(intx,inty);[DllImport("user32.dll")]publicstaticexternintmouse_event(intdwFlags,intdx,intdy,intcButtons,intdwExtraInfo);[DllImport("user32.dll",EntryPoint="keybd_event")]publicstaticexternvoidkeybd_event(intbVk,bytebScan,intdwFlags,intdwExtraInfo);constintMOUSEEVENTF_LEFTDOWN=0x0002;constintMOUSEEVENTF_LEFTUP=0x0004;constintMOUSEEVENTF_MIDDLEDOWN=0x0020;constintMOUSEEVENTF_MIDDLEUP=0x0040;constintMOUSEEVENTF_WHEEL=0x800;constintMOUSEEVENTF_MOVE=0x0001;constintMOUSEEVENTF_ABSOLUTE=0x8000;constintMOUSEEVENTF_RIGHTDOWN=0x0008;constintMOUSEEVENTF_RIGHTUP=0x0010;privateUdpClientclient;intwParam;floatsWidth=Screen.PrimaryScreen.Bounds.Width;floatsHeight=Screen.PrimaryScreen.Bounds.Height;publicForm1(){InitializeComponent();client=newUdpClient(newIPEndPoint(IPAddress.Any,12345));ThreadmyThread=newThread(DealMouse);myThread.IsBackground=true;myThread.Start(client);}privatevoidDealMouse(objectobj){IPEndPointendpoint=newIPEndPoint(IPAddress.Any,0);UdpClientclient=(UdpClient)obj;while(true){byte[]buffer=client.Receive(ref endpoint);stringmsg=Encoding.Default.GetString(buffer);string[]a=msg.Split(':');wParam=Int32.Parse(a[1]);if(a[0].CompareTo("mouse")==0){floatx=float.Parse(a[2])*sWidth;floaty=float.Parse(a[3])*sHeight;SetCursorPos((int)x,(int)y);intoper=MOUSEEVENTF_MOVE;switch(wParam){case513:oper=MOUSEEVENTF_LEFTDOWN;break;case514:oper=MOUSEEVENTF_LEFTUP;break;case519:oper=MOUSEEVENTF_MIDDLEDOWN;break;case520:oper=MOUSEEVENTF_MIDDLEUP;break;case522:oper=MOUSEEVENTF_WHEEL;break;case516:oper=MOUSEEVENTF_RIGHTDOWN;break;case517:oper=MOUSEEVENTF_RIGHTUP;break;case512:oper=MOUSEEVENTF_MOVE;break;}mouse_event(oper,0,0,0,0);}}}}

解决方案

解决方案二:
你的鼠标坐标是在form上的,操作的窗体最小化了之后,鼠标在form上出不来,当然操作不了。
解决方案三:
引用1楼guonan198811的回复:

你的鼠标坐标是在form上的,操作的窗体最小化了之后,鼠标在form上出不来,当然操作不了。

不是不是,我的如果form显示出来,鼠标可以全屏任意位置操作的,并不只局限在form里边。

时间: 2024-10-26 05:28:38

新人求助:mouse_event失效的问题的相关文章

要求在这里-java分割字符串新人求助

问题描述 java分割字符串新人求助 解决方案 String a=""abcd.e.fg""; String[] ss = a.split(""[.]""); for(String i : ss) System.out.println(i); 解决方案二: String[] s=""ab.cd"".split(""\.|); for (String o : s) {

线程-新人求助关于java.lang.StackOverflowError的异常问题

问题描述 新人求助关于java.lang.StackOverflowError的异常问题 public class ProcessRow { Properties source= new Properties(); { try { FileInputStream fis = new FileInputStream(new File( inputPropertieName())); InputStreamReader isr = new InputStreamReader(fis, "UTF-8&

函数调用-新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了。

问题描述 新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了. 添加函数: '写一个添加用户信息的方法,它的返回值是布尔型, Function AddUser(ByVal User As DBuser) As Boolean '首先判断用户名是否已经存在 Dim SQLString As String SQLString = "SELECT * FROM telephonebook WHERE 姓名 ='" & nm & "

设计-快来啊!!!!新人求助!!!

问题描述 快来啊!!!!新人求助!!! 求告知这段话的详细解析.正好在做这个课程设计.谢谢啦. MOV AL,0B6H OUT 43H,AL MOV DX,12H MOV AX,348ch DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H MOV AH,AL OR AL,3 OUT 61H,AL 解决方案 得,都出来汇编了.哎,这么多年没用了,寄存器还有点印象. 查一下书就可以了吧. 解决方案二: 还是翻翻书,看看MOV OUT DIV等语句的作用

c++基础-新人求助!记录程序时间出错

问题描述 新人求助!记录程序时间出错 #include #include #include #include"sort.h" using namespace std; int main() { int choice, n, i, j; DWORD start, end; while(1) { cout << "输入数据的方式:" << endl; cout << "1.手动输入" << endl;

sql 报错——新人求助(C币不足不好意思)

问题描述 sql 报错--新人求助(C币不足不好意思) 1C select rownum t.XZQ t.JBR t.RQ t.JBZYWT t.JSR t.JLR t.YW_GUID from XFDJB t where upper ( t.XZQ || t.JBR || t.RQ || t.JBZYWT || t.JSR t.JLR) like upper ('% 2008-11-28 %') 解决方案 看不懂,呵呵呵呵呵呵呵呵 解决方案二: 诶---- --逗号 注意啦,该死 解决方案三:

java新人求助C:forEach和C;if

问题描述 java新人求助C:forEach和C;if function showJlInspectionLocalCheckPerson(){ var dotable2 = document.getElementById('tab11'); var nodes2 = dotable2.lastChild.getElementsByTagName("input"); for( i=0;i<nodes2.length;i++){ if(nodes2[i].name=="i

s3-java 关于字符串分割问题新人求助

问题描述 java 关于字符串分割问题新人求助 小弟是个菜鸟刚刚接触但是很喜欢Java希望大家帮帮忙!!!现在有一个字符串"abcd efgh ijkl"我想分解上面的字符串,遇到空格就把它弄成一个字符串得到3个字符串,分别为s1=abcd s2=efgh s3=ijkl 解决方案 String s = ""abcd efgh ijkl"";String[] result = s.Split("" "");

新人求助,写csdn博客的时候插入代码显示行号

问题描述 新人求助,写csdn博客的时候插入代码显示行号 这是我自己写博客时候插入的代码,但是不显示行号,请问怎么才能显示呢 解决方案 我明白了,原来保存之后就有行号了,被自己蠢哭了(┬_┬) 解决方案二: 解决方案三: markdown好像没有这个功能.

mysql-Java入门新人求助:Js中表格如何实现保存删除这两个功能?请举例说明

问题描述 Java入门新人求助:Js中表格如何实现保存删除这两个功能?请举例说明 做了一个网页,具有登录功能,其中welcome.jsp为登陆成功后的页面,那么问题来了,我新建了一个表格,如何让这个表格可以进行保存删除这两种操作?请举例说明,谢谢. 解决方案 JS:function del(r) { var i = r.parentNode.parentNode.rowIndex; alert(r.parentNode.parentNode.rowIndex); document.getElem