我目前正在尝试将屏幕抓取程序(c#表单应用程序)转移到WCF服务。
屏幕抓取程序使用 WebBrowser 从几个没有API的页面中获取信息。我想知道你是否可以在服务中运行 WebBrowser ,更不用说表单了。我目前正在开发XP以在Server 2003上发布。
目前在运行单元测试时,我只能看到 WebBrowser ,如果它是在“单元测试”一侧制作的,那么我需要手动弹出 MessageBox 要让 WebBrowser 停止使用空白屏幕进行导航。
由于我们遇到多线程问题,该程序正在被移动和拆分。
答案 0 :(得分:6)
最好使用像Phantom.js这样的无头浏览器:http://www.phantomjs.org/。它提供了重要的功能,并且无需像常规命令行程序那样在任何需要的地方执行。
答案 1 :(得分:1)
在考虑这一点时,要意识到WebBrowser控件的每个实例实际上都是Internet Explorer的一个实例。然后,您的问题就变成了一个服务启动Internet Explorer的多个实例。
但Internet Explorer是一个交互式应用程序。它希望在具有焦点时控制键盘和鼠标。
您可以找到一些方法让服务启动远程桌面连接并启动Windows窗体应用程序。然后,您可以让Windows窗体应用程序托管WCF服务,这两个服务可以相互通信。当有必要自动化一个无法用作服务的专业交互式程序时,我已经看到了这种事情。