上一个帖子用错成语了,不好意思。重新发
我正在开发一款自动化程序,使用了 tauri + rust + windows api ,但是我在模拟鼠标点击这个消息的时候遇到了困难。
这是我在 stack overflow 的问题: https://stackoverflow.com/questions/76722377/how-to-send-click-message-to-tauri-using-postmessagew
知道 V2EX 上面有很多大哥, 烦请各位给指点迷津,在下不胜感激!
1
horizon 2023-07-20 13:45:17 +08:00
问下 chatGPT 吧,我试了下说的挺清楚的。
|
4
crackidz 2023-07-20 14:29:19 +08:00
你这是点击网页的问题吧,不是 Windows API 的问题。API 这么用没什么问题
|
5
PTLin 2023-07-20 14:49:00 +08:00
我感觉思路应该是拿到 webview ,使用 webview 的 handle 来触发点击
|
6
aiqinxuancai 2023-07-20 15:04:54 +08:00
有以下几点你可以看看
1.tauri 的渲染是否是 D3D ,如果是,那么发消息基本是无效的 2.确认 tauri 是否有多层窗口句柄,这在模拟器上很常见,实际接收消息和会话消息是两个句柄 3.PostMessage 的左键按下时 wParam 值应该为 1 ,抬起时为 0 |
7
aiqinxuancai 2023-07-20 15:08:54 +08:00
还有,我看你代码上 get_webview_hwnd 的方法很奇怪,甚至都看不懂,寻找一个窗口句柄,如果可以确定窗口和类名的话,应该用 FindWindow 和 FindWindowEx
|
8
aiqinxuancai 2023-07-20 15:12:17 +08:00
#6 纠正低 2 条后面写的接收消息和绘制画面为两个句柄
|
9
ysc3839 2023-07-20 15:41:42 +08:00 via Android
怀疑是 X-Y Problem ,原始需求是什么?
为什么要模拟点击 Tauri ?看上去你的代码是自己控制自己的程序,那为什么不直接用 Edge WebView2 的接口呢? |
10
LykorisR 2023-07-20 15:55:06 +08:00
都已经 webview 了,为什么还要调用 windows 的 API 去模拟点击 webview 的部分?为什么不直接用 JS 来模拟
|
11
maotao456 OP @LykorisR 我是想写个辅助,因为是别人的页游(整个页面就一个 Canvas),所以用 JS 来搞没什么思路。
|
12
maotao456 OP @aiqinxuancai 无法确认接收消息窗口,Tauri 是两层窗口,外层的窗口我知道 Title ,内层是一个 Webview ,所以我先找到外层的窗口,然后再获取内层的 Webview 的 HWND
|
15
zado 2023-07-21 01:26:41 +08:00
//可以这样模拟鼠标点击:
SetCursorPos(x,y);//可以用 ClientToScreen 计算出绝对位置 mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //已知缺陷,窗前必须保持在前台,期间不能做其他事了(除非工作在虚拟机中). |