C#中的模板匹配

| 我想要获取网页中特定图像的坐标(X,Y)。获得该图像坐标后,我将光标移至该位置并以编程方式在该图像上单击。 我已将图像保存在本地,我必须进行比较,然后将此图像与网页进行比较,然后在网页中找到其位置。 在C#中怎么可能 如果这在C#中是不可能的。在这种情况下,有人会建议我进行任何黑客攻击吗?     
已邀请:
任何网页都是客户端的浏览器特定的。您无法在C#中执行此操作,因为C#是一种服务器语言,并在服务器上运行,然后以浏览器特定的语言返回结果。每个客户将具有不同的分辨率,因此图像的位置也将有所不同。为了获取图像的坐标,您需要使用javascript,然后将指针移动到该位置。您可以使用jQuery并获取图像位置。     
AForge中的模板匹配是通过ExhaustiveTemplateMatch类完成的: http://www.aforgenet.com/framework/docs/html/17494328-ef0c-dc83-1bc3-907b7b75039f.htm 但是,您首先需要匹配浏览器窗口的屏幕截图。     
据我了解,您想在显示包含图像的页面的浏览器中模拟单击事件。如果是这样,您可以做这样的事情-
IntPtr lParam = (IntPtr)((y << 16) | x); 
IntPtr wParam = IntPtr.Zero; // Modifier flags - eg ctrl etc 
SendMessage(handle, 0x201, wParam, lParam); // Mouse LBUTTON down
SendMessage(handle, 0x202, wParam, lParam); // Mouse LBUTTON up
handle是目标浏览器窗口的句柄,(x,y)是模拟单击的位置-可以是图像矩形的中心。     
我将使用普通的JavaScript从网页中获取信息。
function getX(/* string */ elementId) {
    return document.getElementById(elementId).offsetLeft;
}

function getY(/* string */ elementId) {
    return document.getElementById(elementId).offsetTop;
}
如果需要相对于视口的位置:
function getX(/* string */ elementId) {
    return document.getElementById(elementId).offsetLeft - document.body.scrollLeft;
}

function getY(/* string */ elementId) {
    return document.getElementById(elementId).offsetTop - document.body.scrollTop;
}
如果需要在不使用鼠标的情况下对图像执行onClick操作:
function clickIt(/* string */ elementId) {
    document.getElementById(elementId).onclick();
}
要使用C#调用JavaScript,您需要创建一个WebBrowser控件,加载网页,然后调用脚本。您可以在此处找到操作方法。 HtmlDocument.InvokeScript的MSDN文档     

要回复问题请先登录注册