2015-09-05 2 views
0

Я использую ::SendInput послать событие щелчка мыши:Как использовать dwExtraInfo с SendInput

void LeftDown (LONG x_cord, LONG y_cord) 
{ 
    INPUT Input={0}; 
    // left down 
    Input.type = INPUT_MOUSE; 
    Input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN; 
    Input.mi.dx = x_cord; 
    Input.mi.dy = y_cord; 
    Input.mi.dwExtraInfo = 0x12345; //Is this how to use it? 
    ::SendInput(1,&Input,sizeof(INPUT)); 
} 

Я хочу, чтобы установить dwExtraInfo в какой-то само определено значение и извлечь его в WndProc в целевом приложении. Тогда (к примеру) я буду игнорировать этот щелчок, если dwExtraInfo установлен какое-то конкретное значение:

LRESULT CALLBACK OSRWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    if(message == WM_LBUTTONDOWN) 
    {   
     if(GetMessageExtraInfo() == 0x12345)  //Is this how to use it? 
      //ignore 
     else 
      //do something 
    } 
} 

Является ли это наивный способ надлежащим образом использовать dwExtraInfo или есть лучшая практика? Благодаря!

+0

Это неизменно терпит неудачу в том, «что, если две программы выполняют этот« тест на здравомыслие ». –

+0

@ HansPassant Что вы имеете в виду? – Sanich

+0

Если на компьютере запущена другая программа, которая также вводит ввод и использует dwExtraInfo для передачи информации, то ваш крючок просто не может больше сказать, что это означает. Это более распространено, чем вы думаете, кстати, google 0xFF515700, чтобы увидеть, какие проблемы надвигаются. Таким образом, он, вероятно, отлично работает на вашей машине, но вы не знаете, что может случиться с другим. –

ответ

2

The documentation говорит:

dwExtraInfo

дополнительное значение, связанное с событием мыши. Приложение получает GetMessageExtraInfo для получения этой дополнительной информации.

Так что да, используйте его так же, как вы его показали в своем вопросе.

Смежные вопросы