簡體   English   中英

SendInput發送鼠標輸入和鍵盤輸入

[英]SendInput sending mouse input AND keyboard input

=)

我在Windows7筆記本電腦上使用C ++(不是VC ++)。

使用此方法從當前位置移動鼠標x / y時,我遇到了問題。 每次它為鼠標事件調用send輸入時,它都會移動鼠標,但也會關閉我的屏幕(相當於Fn + F2)。 我調試了程序,發現mikihi都具有值(這是x = 25,y = 25和absolure = false的值):

    mi:
      dx            25
      dy            25  
      mouseData     0   
      dwFlags       1   
      time          2686400 
      dwExtraInfo   0   
    ki:
      wVk           25  
      wScan         0
      dwFlags       25  
      time          0   
      dwExtraInfo   1   
    hi:
      uMsg          25
      wParamL       25  
      wParamH       0       

我嘗試將ki和hi設置為0,但是如果我這樣做,則mi也設置為0,然后沒有鼠標移動,但屏幕仍然處於睡眠狀態! :$

這是我使用的一些方法。

int Controller::mouse_move(long x, long y, bool absolute) {
   mouse.dx = x;
   mouse.dy = y;

   if (absolute) {
       mouse.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
   }else{
       mouse.dwFlags = MOUSEEVENTF_MOVE;
   }

   mouse.mouseData = 0;
   mouse.dwExtraInfo = 0;

   input.type = INPUT_MOUSE;
   input.mi = mouse;

   SendInput(1, &input, sizeof (input));

   return 0;
}

要么

int Controller::mouse_move(long x, long y, bool absolute, int index_vector_no) {
    input.type = INPUT_MOUSE;
    input.mi.dx = x;
    input.mi.dy = y;

    if (absolute) {
        input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
    }else{
        input.mi.dwFlags = MOUSEEVENTF_MOVE;
    }

    input.mi.mouseData = 0;
    input.mi.dwExtraInfo = 0;

    input.ki.dwExtraInfo = 0;
    input.ki.dwFlags = 0;
    input.ki.time = 0;
    input.ki.wScan = 0;
    input.ki.wVk = 0;

    input.hi.uMsg = 0;
    input.hi.wParamH = 0;
    input.hi.wParamL = 0;

    SendInput(1, &input, sizeof (input));

    return 0;
}

有人能解釋為什么這會發送鍵盤輸入和鼠標嗎? 這與我的筆記本電腦配置有關嗎?

提前致謝! =)

其他人更改的原因是因為他們都在一個聯合體中,所以他們共享相同的內存。

關於屏幕關閉,您沒有將mi.time設置為0,因此未初始化。 開始將這些結構初始化為{0}通常是一個好主意,這樣您就不會忘記事情。 時間戳變為某個隨機數,這可能會導致顯示器超時。

您可以使用此:

input.mi.time = 0;

之前:

input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;

這個對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM