当前位置:编程学习 > C#/ASP.NET >>

C#winform调用mouse_event必须调用两次右键down才能调出右键菜单

程序是winform的,如果代码为下面,则只能在vs上调出右键菜单,在ppt上调用不出来右键:
           
mouse_event(0x0001, x, y, 0, 0);//移动
mouse_event(0x0008, 0, 0, 0, 0);//右键down
mouse_event(0x0010, 0, 0, 0, 0);//右键up
如果代码为下面(即多调用一次右键down),则在ppt上能调用出右键菜单:
mouse_event(0x0001, x, y, 0, 0);//移动
mouse_event(0x0008, 0, 0, 0, 0);//右键down
mouse_event(0x0008, 0, 0, 0, 0);//右键down
mouse_event(0x0010, 0, 0, 0, 0);//右键up

x.y为我设置横纵坐标值。

以上现象能解释一下吗 --------------------编程问答-------------------- 试一下,中间休眠几毫秒会不会第一种情况也可以!

mouse_event(0x0001, x, y, 0, 0);//移动
//睡眠5毫秒
mouse_event(0x0008, 0, 0, 0, 0);//右键down
mouse_event(0x0010, 0, 0, 0, 0);//右键up
--------------------编程问答--------------------                 mouse_event(0x0001, x, y, 0, 0);//移动
                Thread.Sleep(5000);
                mouse_event(0x0008, 0, 0, 0, 0);//右键down
                //mouse_event(0x0008, 0, 0, 0, 0);//右键down
                mouse_event(0x0010, 0, 0, 0, 0);//右键up


不起作用 --------------------编程问答-------------------- 是不是先要focus下,不知道,猜的 --------------------编程问答-------------------- mouse_event(0x0001, x, y, 0, 0);//移动
mouse_event(0x0008, 0, 0, 0, 0);//右键down <-是取焦点



然后 右键
 mouse_event(0x0008, 0, 0, 0, 0);//右键down 
 mouse_event(0x0010, 0, 0, 0, 0);//右键up


如果不想两个DOWN。那就在移动么那个PPT上后,就要先取到他的焦点,就可以了。 --------------------编程问答-------------------- 原来第一个是焦点的意思,多谢多谢。再问一个问题,ppt上的com加载项,如何在外部调用和访问,即我有个notebook的工具,想访问ppt上自己做的一个com加载项的方法,请问怎么调用?先谢谢了 --------------------编程问答-------------------- 我遇到过 第一次是激活控件 那时没检测到的
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,