Соответствие шаблону в C # - PullRequest
1 голос
/ 17 апреля 2011

Я хочу получить координаты (X, Y) определенного изображения на веб-странице. После получения координат этого изображения я переместлю курсор в эту позицию и программно нажму на это изображение.

У меня естья сохранил изображение локально, я должен сравнить, я сравню это изображение с веб-страницей и найду его местоположение на веб-странице.как это возможно в C #

, если это невозможно в C #.Кто-нибудь предложит мне взломать в этом сценарии,

Ответы [ 4 ]

1 голос
/ 27 апреля 2011

Сопоставление шаблонов в AForge выполняется с помощью класса ExhaustiveTemplateMatch:

http://www.aforgenet.com/framework/docs/html/17494328-ef0c-dc83-1bc3-907b7b75039f.htm

Но для начала вам потребуется скриншот окна браузера, чтобы соответствовать.

1 голос
/ 17 апреля 2011

Любая веб-страница зависит от браузера клиента.Вы не можете сделать это в C #, поскольку C # является языком сервера и работает на сервере, а затем возвращает результаты на языке браузера.У каждого клиента будет разное разрешение и, следовательно, разное положение для изображения.Чтобы получить координаты изображения, вам нужно использовать javascript, а затем переместить указатель в это место.Вы можете использовать jQuery и получить положение изображения.

0 голосов
/ 02 мая 2011

Я бы использовал простой 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();
}

Чтобы вызвать JavaScript с помощью C #, вам необходимо создать элемент управления WebBrowser, загрузить веб-страницу, а затем запустить сценарий. Здесь вы можете найти, как это сделать.

Документация MSDN для HtmlDocument.InvokeScript

0 голосов
/ 17 апреля 2011

Как я понимаю, вы хотите имитировать событие щелчка в браузере, которое отображает страницу, содержащую ваше изображение.Если это так, вы можете сделать что-то вроде этого -

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

дескриптор - это дескриптор окна целевого браузера, а (x, y) - это место, где должен быть симулирован клик - может быть центром вашего прямоугольника изображения.

...