Как я могу использовать SendInput в Delphi? - PullRequest
3 голосов
/ 03 июля 2011

Я использовал функцию Mouse_Event в Delphi 2009, но в документации Delphi говорится, что эта функция была заменена и вместо нее используется SendInput.

Документация Delphi SendInput определяет синтаксис и параметры, но примеров нет, и не ясно, как использовать функцию. Я посмотрел в Интернете и не могу найти хороших примеров Delphi.

В частности, я пытаюсь смоделировать левую мышь вниз, а затем вверх. В настоящее время я делаю это с Mouse_Event следующим образом:

    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

Как бы я это сделал, используя SendInput?


Followup:

Я закончил тем, что оставил свой код, как и @David предложил.

Но я дал @ opc0de ответ, поскольку он дал ответ на мой вопрос. Однако я не могу подтвердить, что это правильно, потому что я никогда не пробовал.

1 Ответ

6 голосов
/ 03 июля 2011

Вот как смоделировать щелчок левой кнопкой мыши для более подробной информации посетите http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx

var
eu: array [0..1] of TInput;
begin
  ZeroMemory(@eu,sizeof(eu));
  eu[0].Itype := INPUT_MOUSE;
  eu[0].mi.dwFlags :=MOUSEEVENTF_LEFTDOWN;
  eu[1].Itype := INPUT_MOUSE;
  eu[1].mi.dwFlags :=MOUSEEVENTF_LEFTUP;
  SendInput(2,eu[0],sizeof(TInput));
end;

А вот для симуляции щелчка правой кнопкой мыши

var
eu: array [0..1] of TInput;
begin
  ZeroMemory(@eu,sizeof(eu));
  eu[0].Itype := INPUT_MOUSE;
  eu[0].mi.dwFlags :=MOUSEEVENTF_RIGHTDOWN;
  eu[1].Itype := INPUT_MOUSE;
  eu[1].mi.dwFlags :=MOUSEEVENTF_RIGHTUP;
  SendInput(2,eu[0],sizeof(TInput));
end;
...