Множественная мышь / мышь / курсор?

Как я могу показать другой курсор для нескольких мышей? У меня есть два TMemos, две клавиатуры, на которых можно набирать текст в соответствующие TMemo, 2 мыши и мне нужны 2 курсора для них.

Если гипотетически, я уже могу определить, какая мышь какая. Как я могу сделать собственный курсор, чтобы он работал вместе с ним. (с использованием Delphi) Возможно, в соответствии со строками Multipoint

в качестве альтернативы, есть ли какое-либо программное обеспечение, которое может отображать более одного курсора. Нравится CPNMouse?

РЕДАКТИРОВАТЬ: Я обнаружил, что могу использовать функцию mouse_event в Windows, но у меня до сих пор нет визуального представления курсора.


person Dian    schedule 22.06.2010    source источник
comment
Добро пожаловать в Stack Overflow. Не забывайте каждый раз входить в систему, используя одну и ту же учетную запись. Вы можете попросить администратора объединить эту учетную запись с той, которую вы использовали, чтобы спросить о несколько клавиатурных устройств на прошлой неделе.   -  person Rob Kennedy    schedule 22.06.2010
comment
Спасибо, Роб. Где мне найти админа?   -  person Dian    schedule 22.06.2010
comment
Воспользуйтесь ссылкой «Связаться с нами» внизу любой страницы.   -  person Rob Kennedy    schedule 22.06.2010


Ответы (3)


Курсоры - это просто ресурсы. Вот хороший список стандартных курсоров, которые можно использовать. TControl Определяет свойство курсора, которое может быть установлено для курсора, который следует использовать при наведении на данный элемент управления. Вы также можете использовать Screen.Cursor для управления курсором всего приложения.

Чтобы определить настраиваемый курсор, вы используете следующий код.

{$R MyCustomCursors.RES}

const
 crCustom1 = 1;
 crCustom2 = 2; 

...

  Screen.Cursors[crCustom1] := LoadCursor(hInstance, 'CUSTOM1');
  Screen.Cursors[crCustom2] := LoadCursor(hInstance, 'CUSTOM2');

...

Delphi по умолчанию не предназначен для работы с несколькими указателями мыши, но я подозреваю, что в большинстве сред это не так. Упомянутый вами SDK - единственный из известных мне источников информации об одновременном использовании нескольких мышей в одном приложении. Однако это только .NET, поэтому для его использования потребуется Delphi Prism.

Если вы хотите использовать собственную поддержку для нескольких мышей, можно использовать тот же трюк с использованием WM_INPUT. Windows будет рассматривать обе мыши как одно и то же. Вам нужно будет вручную нарисовать курсор мыши для второй мыши.

person Robert Love    schedule 22.06.2010
comment
Спасибо за ответ. Я не знал, что вы можете определить собственный курсор с помощью Screen. Я должен разобраться в этом. Думаю, я могу попробовать использовать WM_INPUT и поэкспериментировать с другими вещами. - person Dian; 22.06.2010
comment
Последующий вопрос: что вы рекомендуете использовать для «отображения» 2-го курсора мыши? Возможно, что-то, что я смогу контролировать с помощью координат. - person Dian; 22.06.2010

Windows не поддерживает несколько мышей или клавиатур. Поскольку у каждого процесса есть только одна входная очередь, Windows рассматривает все похожие устройства ввода как одно и то же. Это не может быть изменено. Конец истории. Период.

Но даже если вы не можете сделать это в масштабе всей системы, вы все равно можете сделать это в одном конкретном приложении. Вам нужно написать специальный драйвер и установить его только для второй мыши. Этот драйвер не должен передавать движения мыши обычному потребителю (очередь ввода), а скорее перенаправлять ввод непосредственно в ваше приложение.

Вы можете использовать уже написанные драйверы - например, этот или тот, о котором вы уже упоминали.

person Alex    schedule 22.06.2010

Его действие можно смоделировать практически с исходного курсора, сделав что-то почти быстрое.

person PauAI    schedule 09.06.2015