1

おそらく.NETのコード

Cursor.Position = new Point(x, y);

は内部的SetCursorPos()に WINAPI 関数を使用します。これは (ドキュメントによると) 場合によっては を返すことがありfalseます。

Cursor.Positionでは、正常に変更されなかった場合、どのように処理すればよいでしょうか? .NET は、常にカーソルを指定された位置に移動するという保証を提供しますか?

UPD : を使用してカーソルを左下隅に移動する小さな C++ プログラムが既にありますSetCursorPos。そして問題は、毎回カーソルを移動するわけではないということです。私はケースをデバッグするのに十分なほど C++ に習熟していないので、違いを確認するために .NET で書き直すことにしました。

必要なもの:いくつかのテスト(セレンWebドライバー)を実行するには、テストケースでマウスイベントを手動で送信していて、実際のカーソルがそれらを妨害するため、マウスカーソルがブラウザーウィンドウ上にないようにする必要があります。

4

3 に答える 3

1

では、Cursor.Position が正常に変更されなかった場合、どのように処理すればよいでしょうか?

これをテストする唯一の方法は、設定後すぐに位置を取得することです。

.NET は、常にカーソルを指定された位置に移動するという保証を提供しますか?

Cursor.Positionセッターは、カーソルの位置を移動できるときはいつでも成功する必要があります。これを保証する方法はありません。Windows API が失敗する可能性があるためです (可能性は非常に低いですが)。障害は、非標準環境が原因である可能性があります (VM が原因で、フルスクリーンの Direct3D アプリがアクティブである、またはスクリーンセーバーが実行されている場合があります)。

もちろん、もう 1 つの方法は、自分で PInvoke を実行し、メソッドが返された場合にSetCursorPos呼び出すことです。GetLastErrorfalse

于 2013-05-06T21:58:50.993 に答える