Мне очень жаль, поскольку у меня нет конкретного кода для показа.Я чрезвычайно новичок в программировании, и я просто ищу общий совет или подсказку / совет.Мне больше некуда было отправлять.Мне бы очень хотелось, чтобы с самого начала не тратить бесчисленные часы, делая что-то совершенно не так.Спасибо за понимание.
Я пытаюсь сделать простой небольшой программный проект на C для курса моего университета.Я решил сделать его Windows-платформой и использовать WinAPI.
Основная цель программы - позволить пользователю записывать нажатия клавиш клавиатуры и движения курсора до тех пор, пока запись не прекратится.А затем разрешите ему воспроизвести записанную последовательность N раз, имитируя записанное движение.Мне не требуется превосходная точность.
Я уже почти охватил часть записи перемещения курсора, и теперь мне нужно добавить часть записи нажатий клавиш и связать ее вместе.
Мой вопрос связан сэто: имеет ли какой-либо смысл следующий псевдокод основной концепции функции записи?
0. Start the recording function. Initialize clean buffer for keystrokes and continuously keep
reading the keystrokes into that buffer. Create empty queue.
1. Sleep(50)
2. Put sleep(50) into the queue.
3. Get cursor position's and put it into the queue.
3. If buffer is empty, go back to step 1.
4. If not, keep removing one-by-one keystroke from the buffer and put it into the queue.
Do that until the buffer is empty.
5. Go back to step 1.
Я полагаю, что при использовании Sleep(50)
движение курсора должно составлять почти 20 FPS, что делает его достаточно плавным.Кроме того, процессор не будет использовать 100%.Я думал, что очередь должна быть singly linked list
.(вставка в конце списка, чтение с начала).После того, как процесс записи будет завершен, воспроизведение движения будет просто выталкивать одного за другим из очереди.
Моя главная проблема - чтение нажатий клавиш.Как мне сделать это эффективно?Как вы думаете, GetAsyncKeyState
из WinAPI
должно соответствовать моим потребностям?Также проблема в том, что если во время действия Sleep(50)
пользователь ввел, например, три нажатия клавиш.Я не хочу вводить многопоточность, так как на данный момент это далеко от моих знаний.
Есть ли у вас какие-либо советы о том, как обрабатывать нажатия клавиш?Есть ли у вас какие-либо общие советы?Спасибо.