SendInput()を使用してマウスの相対位置を送信しています。あなたが何をしている最初の病気あなた。SendInputを使用してマウスカーソルの位置を送信すると、画面が黒くなる
私はマウスを動かすために指を使います。だから私は640x480の画像で私の指を追跡し、画像でピクセルで絶対位置を取得します。
次に、send入力を使用して相対的なマウス位置コマンドを生成するために、その位置を次のメソッドに送信します。
指が左境界線(xlim1)または右境界線(xlim2)に移動すると、カーソルはどの限界値に応じて左右にスクロールしますか。 問題はコードを実行しているときで、カーソルが移動を開始すると画面が黒くなります。
iが他の部分IF(CX> = prevX & & CX> xlim2){...}セクションは、それが動作するコメント..(SO指点は、画像それカーソルの右限界に行きます左に水平スクロールを続けます。コメント部分は、左の水平スクロールを有効にします)。
これが初めての場合は、最初の変数がtrueになります。指をキャプチャします。それ以外の場合はfalseです。
void movMouse(int cx, int cy, bool first){
static int prevX = 0;
static int prevY = 0;
static int leftPrevX;
static int rightPrevX;
int mx,my;
if(first == true){
prevX = cx;
prevY = cy;
}
else{
mx = (cx - prevX);
my = (cy - prevY);
if(cx <= prevX && cx < xlim1){
mx = -20;
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
else if(cx >= prevX && cx > xlim2){
mx = 20;
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
else {
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx);
input.mi.dy = (my);
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
}
prevX = cx;
prevY = cy;
}
}
マウス入力の生成と「画面が黒くなる」の間に明白なつながりはありません。あなたのコードに欠陥があり、INPUT構造体を完全に初期化せず、MOUSEINPUT.timeと.dwExtraInfoの偽データを生成します。 INPUT input = {}; "このコードを呼んだ後で、妥当な遅れがあることを確認してください。 –
それは働いていました!!!!!!!!!! .....うわー、私の人生を救った...ありがとう十分な!!!!!! ......... – user2389323