Re: Быстрый SendInput
От: BYBelorus Беларусь N/A
Дата: 26.11.05 09:35
Оценка:
Здравствуйте, newhere, Вы писали:

N>Dll для W98 SE Rus с экспортируемой функцией MySendString() — разбирает строку, состоящую из символов и шорткатов (Ctrl+O, Shift+Tab,...) и посылает их SendInput'om.

N>Например такая строка: "[Ctrl+O]test.txt[Enter]" должна открыть OpenDialog вызывающей программы, "набрать" test.txt и "нажать" кнопку.

N>Делаю:

N>SendInput'om генерирую комбинацию клавиш Ctrl+O, дальше SendInput'om генерирую побуквенно текст test.txt дальше SendInput'om генерирую нажатие Enter.

N>Получается:

N>иногда test.txt посылается быстрее чем открывается OpenDialog

N>Хочется:

N>дождаться создания окна или смены окна (если был шорткат Alt+Tab) — как-то узнать, было ли создание нового окна или переход на новое окно.

N>Пока перебиваюсь Sleep'om — но это неправильно.

N>Впервые спрашиваю форум, заранее благодарен.

N>Псевдокод:

N>
N>::BlockInput(TRUE);

N>for(i=0; i < strlen(givenString); i++)
N>{
N>   if ("обычный" символ)
N>      ::SendInput('символ');
N>   if ("шорткат")
N>      ::SendInput("шорткат");

N>   ::Sleep(1000);
N>}
    
N>::BlockInput(FALSE);
N>


код на д7 держи

и замени Sleep на Delay. по идее станет легче. Но ненамного

procedure Delay(MSecs: Cardinal);
var FirstTick: Cardinal;
begin
FirstTick := GetTickCount;
repeat
Application.ProcessMessages;
until
GetTickCount — FirstTick >= MSecs;
end;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу Windows Phone разработчиком.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.