winform窗体,当不想让它显示出来,但是还想用api控制鼠标来点击窗体上的控件

岁月落寞忆流年 2016-06-30 04:04:36
RT,有什么实现办法吗?欢迎大家讨论,尝试过把窗体放到屏幕外面这个方法
...全文
341 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢大家的帮忙,总算是有思路了,具体方法的我整理一下,再贴出来
我叫小菜菜 2016-07-02
  • 打赏
  • 举报
回复
引用 14 楼 yangguosheng 的回复:
比如qq或者其他程序,前端界面比真实的窗体小。有的时候程序卡住了能看到外面一圈边。但是正常的时候,点击界面边缘,是点不到QQ的(点击到桌面上或后面的程序)。一直不知道这事如何做到的。不知道对你有没有启发。
这个情况,在配置低的电脑上运行ps最明显。你会发现ps是一张不规则的照片,但是显示的边框是包含照片的一个矩形。
我叫小菜菜 2016-07-02
  • 打赏
  • 举报
回复
什么叫可视化操作?首先是可视(即获得焦点),然后才有可能操作。 Windows决定了某一时刻只有一个窗体获得焦点:你如你把光标定在某个输入框,这时候光标会闪动,输入框获得焦点。然后移动鼠标,这时候焦点其实还是输入框,鼠标这时候是出于悬空状态的,还没有决定对谁“下手”。鼠标left-right点击,这输入框失去焦点(光标消失),而焦点落在鼠标点击的窗体。 如果你用过按键精灵,就会知道这个限制,想通过x-y坐标对隐藏的窗体触发点击事件,那是不可能的。还是通过api调用吧。
yangguosheng 2016-07-02
  • 打赏
  • 举报
回复
比如qq或者其他程序,前端界面比真实的窗体小。有的时候程序卡住了能看到外面一圈边。但是正常的时候,点击界面边缘,是点不到QQ的(点击到桌面上或后面的程序)。一直不知道这事如何做到的。不知道对你有没有启发。
巴士上的邂逅 2016-07-02
  • 打赏
  • 举报
回复
引用 12 楼 qq_17486399 的回复:
[quote=引用 3 楼 sp1234 的回复:] 开玩笑啊。不显示窗体,你如何让鼠标去点击窗体上的控件?你可以调用一个隐藏窗体的接口方法,这是可以的。但是要控制鼠标移动、点击动作,那么这就是在当前屏幕上操作。 例如说,有些窗口出现的位置是不定的,那么有可能有部分内容就在windows桌面区域之外,这时候其出了桌面的部分你就点不到。 再例如,假设运行时有其它窗口(例如你想同时“偷”人家50个窗口实例内容,而不是只有一个窗口)挡住了目标窗口,那么你所谓的“点击”点的就是最上面覆盖的窗口,而所有被挡住的窗口上的控件你都点不到。
+1[/quote]+1
mjp1234airen4385 2016-07-01
  • 打赏
  • 举报
回复
鼠标能点击的东西,都是在桌面上能看到的东西,如果你隐藏了窗口,发送点击消息,就没有效果了。 如果你仅仅是把窗口挪出当前屏幕,但是没有隐藏的话,是可以发送单击事件的。
大鱼> 2016-07-01
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
开玩笑啊。不显示窗体,你如何让鼠标去点击窗体上的控件?你可以调用一个隐藏窗体的接口方法,这是可以的。但是要控制鼠标移动、点击动作,那么这就是在当前屏幕上操作。 例如说,有些窗口出现的位置是不定的,那么有可能有部分内容就在windows桌面区域之外,这时候其出了桌面的部分你就点不到。 再例如,假设运行时有其它窗口(例如你想同时“偷”人家50个窗口实例内容,而不是只有一个窗口)挡住了目标窗口,那么你所谓的“点击”点的就是最上面覆盖的窗口,而所有被挡住的窗口上的控件你都点不到。
+1
mjp1234airen4385 2016-07-01
  • 打赏
  • 举报
回复
引用 10 楼 she6600 的回复:
[quote=引用 9 楼 mjp1234airen4385 的回复:] 鼠标能点击的东西,都是在桌面上能看到的东西,如果你隐藏了窗口,发送点击消息,就没有效果了。 如果你仅仅是把窗口挪出当前屏幕,但是没有隐藏的话,是可以发送单击事件的。
你好,挪出当前屏幕,那怎么确定窗口和窗口控件的位置啊[/quote] 不需要知道位置啊,只要知道按钮的名称,或者按钮上的文本,直接发送单击消息,就好了。 在你的程序里,枚举那个窗口上的所有控件,找到你要的按钮,
  • 打赏
  • 举报
回复
引用 9 楼 mjp1234airen4385 的回复:
鼠标能点击的东西,都是在桌面上能看到的东西,如果你隐藏了窗口,发送点击消息,就没有效果了。 如果你仅仅是把窗口挪出当前屏幕,但是没有隐藏的话,是可以发送单击事件的。
你好,挪出当前屏幕,那怎么确定窗口和窗口控件的位置啊
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
[quote=引用 2 楼 crystal_lz 的回复:] 既然你都不想要窗体 那你为什么还非要把功能写到窗体上去?。。 写到类里面调用类的代码不就好了
小偷程序。[/quote] 我在使用ShowWindow(HWND hWnd, int nCmdShow)这个api设置窗口不可见的时候,想到的,想看看大家有什么办法既能使窗口不可见,还能使窗口上的控件能够被点击到
  • 打赏
  • 举报
回复
引用 1 楼 mjp1234airen4385 的回复:
如果是你自己写的窗体,把按钮设置为public,你想点击的时候,调用一下按钮的事件就好了,
问题是窗体不是我的,是加载到界面上的
xuzuning 2016-06-30
  • 打赏
  • 举报
回复
鼠标至多在屏幕中,你的窗口在屏幕外,没法定位 你至少要将窗口坐标映射的屏幕中
  • 打赏
  • 举报
回复
做成windows服务
  • 打赏
  • 举报
回复
引用 2 楼 crystal_lz 的回复:
既然你都不想要窗体 那你为什么还非要把功能写到窗体上去?。。 写到类里面调用类的代码不就好了
小偷程序。
  • 打赏
  • 举报
回复
开玩笑啊。不显示窗体,你如何让鼠标去点击窗体上的控件?你可以调用一个隐藏窗体的接口方法,这是可以的。但是要控制鼠标移动、点击动作,那么这就是在当前屏幕上操作。 例如说,有些窗口出现的位置是不定的,那么有可能有部分内容就在windows桌面区域之外,这时候其出了桌面的部分你就点不到。 再例如,假设运行时有其它窗口(例如你想同时“偷”人家50个窗口实例内容,而不是只有一个窗口)挡住了目标窗口,那么你所谓的“点击”点的就是最上面覆盖的窗口,而所有被挡住的窗口上的控件你都点不到。
crystal_lz 2016-06-30
  • 打赏
  • 举报
回复
既然你都不想要窗体 那你为什么还非要把功能写到窗体上去?。。 写到类里面调用类的代码不就好了
mjp1234airen4385 2016-06-30
  • 打赏
  • 举报
回复
如果是你自己写的窗体,把按钮设置为public,你想点击的时候,调用一下按钮的事件就好了,

111,129

社区成员

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

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

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