ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 无句柄的控件元素如何操作? 一般来说,windows下的桌面程序的窗口以及里面的控件,例如按钮、输入框等都是有句柄的,但是仍旧有不少程序没有句柄,例如我们熟悉的微信桌面版、qq等等,只有窗口有句柄,里面的按钮输入框什么的都没有句柄。   ## 原因是什么呢? 因为它们都用的一些UI套件(例如:DUI库、QT、WPF等)开发的,里面的元素都是他们框架套件自绘上去的,所以并不会看到句柄,不过有些可以通过一些特殊方法例如公开或者非公开的接口可以得到,但是由于实在太复杂,而且一般这方面的资料特别少,作者也是无从下手,如果各位高手有什么好的解决方案可以在下面评论。   ## 该怎么办呢? > 1.最简单粗暴的办法,即:鼠标定位、点击。 相关的方法有: [SetCursor](SetCursor方法.md) [ClickPoint](ClickPoint方法.md) 通常我们用ClickPoint就可以了,可以计算下你的目标窗口中要点击的元素,然后执行点击即可。 具体案例参考:[02控制QQ发送消息](02控制QQ发送消息.md) 中的第1个函数中的代码: ``` w.ClickPoint w.Left + 35, w.Top + w.Height - 100, absolute, , 300, 500 ``` 它是获取qq对话框,然后分析底部向上大概100像素就是输入框的地方了。那么用w.Top + w.Height - 100即可定位到输入框。具体这个100像素是怎么得到的,可以用qq的截图功能,从底部向上截图立马可以看到高、宽多少像素。 ![](https://img.kancloud.cn/73/b1/73b10f8e22686aa3623c2883827a5bfb_263x86.png) > 2.分析看看按钮等操作是否有快捷键。 通常一个成熟的软件上面都会有快捷键,例如qq的发送按钮上面的文字是“发送(S)”,大家应该都知道这里的字母S表示什么意思吧?意思就是你在键盘上按快捷键Alt+S就相当于点击了这个发送按钮,那么这样就简单了,我们将这个聊天窗口设为焦点,然后发送快捷键就好。 同样参考案例:[02控制QQ发送消息](02控制QQ发送消息.md) 中的第2个函数中的代码: ``` SendKeys "%{s}" ``` ![](https://img.kancloud.cn/76/87/76870091a3426f286ed7926fa11cdb36_268x93.png)