Web ページ内の特定の画像の座標 (X,Y) を取得したい.その画像座標を取得した後、カーソルをこの位置に移動し、プログラムでこの画像をクリックします。
画像をローカルに保存しました。比較する必要があります。この画像を Web ページと比較し、Web ページ内の場所を見つけます。これはC#でどのように可能ですか
これが C# で不可能な場合。このシナリオで何かハックを提案してくれる人はいますか?
Web ページ内の特定の画像の座標 (X,Y) を取得したい.その画像座標を取得した後、カーソルをこの位置に移動し、プログラムでこの画像をクリックします。
画像をローカルに保存しました。比較する必要があります。この画像を Web ページと比較し、Web ページ内の場所を見つけます。これはC#でどのように可能ですか
これが C# で不可能な場合。このシナリオで何かハックを提案してくれる人はいますか?
AForge でのテンプレート マッチングは ExhaustiveTemplateMatch クラスで行われます。
http://www.aforgenet.com/framework/docs/html/17494328-ef0c-dc83-1bc3-907b7b75039f.htm
ただし、最初に一致するブラウザ ウィンドウのスクリーンショットが必要です。
すべての Web ページは、クライアントのブラウザー固有です。C# はサーバー言語であり、サーバーで実行され、ブラウザー固有の言語で結果を返すため、C# では実行できません。各クライアントの解像度は異なるため、画像の位置も異なります。画像の座標を取得するには、javascript を使用し、ポインターをその場所に移動する必要があります。jQuery を使用して画像の位置を取得できます。
Web ページから情報を取得するには、プレーンな 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 コントロールを作成し、Web ページをロードしてから、スクリプトを呼び出す必要があります。 ここでその方法を見つけることができます。
私が理解しているように、画像を含むページを表示するブラウザーでクリックイベントをシミュレートしたいと考えています。もしそうなら、あなたはこのようなことをすることができます -
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) はクリックがシミュレートされる場所です。画像の四角形の中心にすることができます。