Postmessage多窗口同时后台点击鼠标问题

www7788softcom 2013-01-14 10:59:14
对多游戏窗口同时操作时 经常会发生简单的单击操作被处理成 单击按下后拖动子窗口到当前鼠标位置的效果请教下如何处理?
/// <summary>
/// 后台发送鼠标POST
/// </summary>
/// <param name="hWnd"></param>
/// <param name="x"></param>
/// <param name="y"></param>
public static void LeftClickBackP(int hWnd, int x, int y)
{

const uint downCode = 0x201; // Left click down code
const uint upCode = 0x202; // Left click up code

//PostMessage((IntPtr)hWnd, downCode | upCode, 1, MakeLParam(x, y)); // Mouse button down


PostMessage((IntPtr)hWnd, downCode, 1, MakeLParam(x, y)); // Mouse button down
//Thread78.Sleep(100);
PostMessage((IntPtr)hWnd, upCode, 1, MakeLParam(x, y)); // Mouse button up
//Thread78.Sleep(100);
}
...全文
318 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2013-02-07
  • 打赏
  • 举报
回复
不太清楚你的多窗口操作是怎么个发送的信息,你改用Sendmessage试试呢,postmessage是异步的,不知道会不会由于多窗口而受到影响
www7788softcom 2013-02-07
  • 打赏
  • 举报
回复
不是这样的吧?后台点击的也要激活窗体?
失落的神庙 2013-01-15
  • 打赏
  • 举报
回复
 /// <summary>
        /// 后台发送鼠标POST
        /// </summary>
        /// <param name="hWnd"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public static void LeftClickBackP(int hWnd, int x, int y)
        {

            const uint downCode = 0x201; // Left click down code 
            const uint upCode = 0x202; // Left click up code 

            PostMessage((IntPtr)hWnd, downCode | upCode, 1, MakeLParam(x, y)); // Mouse button down 

           //Thread.Sleep(100);
            PostMessage((IntPtr)hWnd, downCode, 1, MakeLParam(x, y)); // Mouse button down 
            Thread.Sleep(100);
            PostMessage((IntPtr)hWnd, upCode, 1, MakeLParam(x, y)); // Mouse button up 
            Thread.Sleep(100);
        } 
因为拖拽的窗体需要先被激活 然后才能执行点击操作 所以第一个鼠标按下是执行了窗体激活 第二个才是按下 第三个是松开
www7788softcom 2013-01-15
  • 打赏
  • 举报
回复
uuppuupp

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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