Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2013, 17:17   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию SendInput - послать набор событий, вместо поштучного

Код:
void GenerateKeyInputSerial(QString & sInp){
	static const KEYBDINPUT kbZero={0};
	KEYBDINPUT  kbInp;
	static const INPUT InputZero = {0};

	const ushort * dat = sInp.utf16();
	
	int szInp = sInp.size();
	LPINPUT  Input  = new INPUT [szInp *2] ;
	if (!Input) return;

	for (int nPos = 0; nPos < szInp ; nPos++)
	{
		Input[nPos] = InputZero;
		Input[nPos+1] = InputZero;
		
		kbInp = kbZero;
		
		kbInp.wVk    =  0;
		kbInp.wScan = (WORD) dat [nPos];/*enter unicode here*/;
		kbInp.dwFlags = KEYEVENTF_UNICODE; // KEYEVENTF_UNICODE=4
		
		Input[nPos].type = INPUT_KEYBOARD;
		Input[nPos ].ki = kbInp;

		kbInp.dwFlags = KEYEVENTF_UNICODE|KEYEVENTF_KEYUP; //KEYEVENTF_UNICODE=4
		Input[nPos+1].type = INPUT_KEYBOARD;
		Input[nPos+1].ki = kbInp;
	}
	UINT cnt = (UINT)szInp *2;
	SendInput( cnt ,  Input, (int)sizeof(Input));
	delete[] Input;
	
}
Ну что, что не нравится системе? Почему при одиночном нажатии :
Код:
SendInput( 1 ,  &Input, sizeof(Input));
все срабатывает, а при посылке массива случается ошибка 87 - "неверно задан параметр"?
Smogg вне форума Ответить с цитированием
Старый 07.12.2013, 19:17   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Ай нет, система ни при чем. Это я в цикле накосячил. Так как за один проход добавляются два события, то счетчик надо множить на два:

[nPos] -> [nPos *2]
[nPos +1] -> [nPos*2+1]
Smogg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вместо русского текста символы - после переустановки Windows в файлах мусор вместо русских букв. МАРИННН Windows 14 13.10.2013 08:53
Реализовать в виде модуля набор набор подпрограмм для следующих операций со строками : 1) Процедура подсчёта кол-ва букв к в пер Richik123 Паскаль, Turbo Pascal, PascalABC.NET 12 23.09.2012 12:24
Приложение игнорирует SendInput srh Общие вопросы C/C++ 1 12.05.2012 16:59
SendInput TDrive Общие вопросы C/C++ 6 17.07.2011 18:04
SendInput, KeyBD_Event Zirr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 16.07.2011 13:26