#dart
#dart
Вопрос:
Это может показаться небольшим наброском, но я пытаюсь автоматизировать небольшое неудобство, которое у меня есть.
Каждый день в начале дня я хочу начать чат по Skype с определенной группой людей.
Я создал приложение, поэтому я могу просто ввести chat daily
в командной строке, и оно автоматически создаст чат. Проблема в том, что это просто пустой чат, и мне нужно запустить чат с тем же сообщением. Я хочу иметь возможность передавать -m
флаг приложению, за которым следует сообщение, которое должно быть отправлено всем. Проблема в том, что можно получить этот текст в чат Skype.
Вот мои мысли о том, как это можно было бы сделать:
- Отправляйте события клавиатуры так, чтобы текст вводился в текстовое поле, а затем отправлялся в чат.
- Добавьте сообщение в буфер обмена, а затем вставьте сообщение. Если я не могу заставить его отправлять текст, и мне приходится нажимать вручную
[enter]
, я согласен с этим. - Наконец, если уже нет способа отправлять события клавиатуры, гораздо более сложным подходом было бы каким-то образом эмулировать клавиатуру в системе.
Итак, в основном я хочу знать, есть ли способ управлять буфером обмена системы (копировать / вставить) или есть ли способ отправлять нажатия клавиш в систему.
Если у вас есть какие-либо другие идеи о том, как это или если это может быть достигнуто, я хотел бы услышать.
Заранее большое спасибо
Комментарии:
1. Какая ОС? Windows?
2. Да, я забыл упомянуть, что это будет работать в Windows
Ответ №1:
Взгляните на пакет win32, который имеет некоторые привязки из Win32 Windows Api к Dart, в нем есть множество примеров, но то, что вам нужно, должно быть чем-то вроде этого:
final kbd = KEYBDINPUT.allocate();
// Send the A key.
kbd.wVk = VK_A;
var result = SendInput(
1, Pointer.fromAddress(kbd.addressOf.address), sizeOf<KEYBDINPUT>());
if (result != 1) print('Error: ${GetLastError()}');
kbd.dwFlags = KEYEVENTF_KEYUP;
result = SendInput(
1, Pointer.fromAddress(kbd.addressOf.address), sizeOf<KEYBDINPUT>());
if (result != 1) print('Error: ${GetLastError()}');
(изhttps://github.com/timsneath/win32/blob/master/example/sendinput.dart#L20-L30 )