.NET Web 浏览器控制自动化

发布于 2024-07-18 11:30:49 字数 200 浏览 5 评论 0原文

我正在尝试在我的 C# 程序的网络浏览器控件中运行的 Flash 游戏上自动执行一些操作。 使用 user32 的 sendmessage dll,我可以单击常规页面(例如 google)上的坐标,但它不适用于 Flash 内容。 我有什么办法可以做到这一点吗? Flash游戏也无法检测到它。 我在 autoit 中有一个可以工作的,但我想用 c# 重写它并使其工作最小化。

I'm trying to automate some stuff on a flash game running in a webbrowser control in my C# program. Using user32's sendmessage dll I've been able to click at coordinates on regular pages such as google but it doesn't work on flash content. Any ways I can do this?
Also it cannot be detectable to the flash game. I have a working one in autoit but I'd like to rewrite it in c# and make it work minimized.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

攒一口袋星星 2024-07-25 11:30:49

为什么不直接使用 System.Diagnostics.Process 类从 C# 程序调用 Autoit/Autohotkey 脚本呢?

ProcessStartInfo psi = new ProcessStartInfo("your_script.ahk");
psi.CreateNoWindow = true;

Process procScript = Process.Start(psi);
procScript.WaitForExit();

请注意 CreateNoWindow=true 以确保它隐藏运行,并使用 WaitForExit() 让您的代码等待进程返回。

AutoIt 和 AutoHotkey 拥有一些非常强大的自动化命令,这些命令多年来一直在完善。 很难重现同样可靠的类似 C#/.NET 功能,相信我,我已经尝试过了。

Why not just call your Autoit/Autohotkey script from your C# program using the System.Diagnostics.Process class?

ProcessStartInfo psi = new ProcessStartInfo("your_script.ahk");
psi.CreateNoWindow = true;

Process procScript = Process.Start(psi);
procScript.WaitForExit();

Notice the CreateNoWindow=true to ensure it runs hidden, and the WaitForExit(), to make your code wait for the process to return.

AutoIt and AutoHotkey have some very powerful automation commands that have been refined over the years. It's very hard to reproduce similar C#/.NET functionality that is just as reliable, believe me I've tried.

回梦 2024-07-25 11:30:49

使用 SendMessage 或 PostMessage 即可。 您需要发送3条消息,WM_MOUSEMOVE,然后WM_MOUSEDOWN,然后WM_MOUSEUP。 WM_MOUSEMOVE 必须指示与 WM_MOUSEDOWN 和 WM_MOUSEUP 不同的位置。 WM_MOUSEDOWN 和 WM_MOUSEUP 应该位于同一位置。 对我有用。

Using SendMessage or PostMessage will work. You need to send 3 messages, WM_MOUSEMOVE, then WM_MOUSEDOWN, then WM_MOUSEUP. The WM_MOUSEMOVE must indicate a location different from the WM_MOUSEDOWN and WM_MOUSEUP. WM_MOUSEDOWN and WM_MOUSEUP should be in the same location. Works for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文