Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ЭмулироватьКлавиатуру() и Win 2k8 x64 Server (число прочтений - 4604 )
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
21. Апреля 2010 :: 09:13
Печать  
Вчера поставили Windows 2008 (R2) Server x64 на один из терминальных серверов и выскочила след. проблема:
Я использую для разгрузки сервера при скроллинге в журналах документов класс "БыстроеКолесоМыши" (есть в репозитории)
Вкратце класс работает так: каждый щелчок колеса мыши подменяется на ЭмулироватьКлавиатуру([Несколько нажатий стрелки])
На XP, Win 2k, Win 2k3 все работало очень быстро.
Теперь же журналы просто не скроллятся - причина - Метод "ЭмулироватьКлавиатуру()" в Win 2k8 x64 выполняется ОЧЕНЬ долго - нажатие "{DOWN}{DOWN}{DOWN}" выполняется более чем полсекунды Печаль
Написал скрипт на WSH - скорость вернулась, но... скрипт периодически выдает "В эфир" Клавишу NumLock - и такие програмки, как, например, NumLock Calculator перехватывают фокус приложения...
Уважаемый Alf, нельзя ли адаптировать "ЭмулироватьКлавиатуру()" для Win 2k8 x64?
Возможно, кто-нибудь предложит альтернативные решения?
Please, Help!
  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #1 - 22. Апреля 2010 :: 08:34
Печать  
Пока накидал на Delphi компоненту на основе шаблона от Romix с Mista.ru.
Что-то вроде:
Код
Выбрать все
begin
  keybd_event(KeyIndex,0,0,0);
  keybd_event(KeyIndex,0,KEYEVENTF_KEYUP,0);
end;
 

Работает. Но, ИМХО, дополнительная компонента - кривое решение.
Уважаемый Alf, возможно ли поправить "ЭмулироватьКлавиатуру()"?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #2 - 22. Апреля 2010 :: 09:29
Печать  
Если вторым параметром в ЭмулироватьКлавиатуру() передать ноль, тоже тормозит?
  

FormEx developer
Наверх
www  
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #3 - 23. Апреля 2010 :: 01:59
Печать  
Да, тоже Печаль
PS: Может, важно, а может и нет:
"ЭмулироватьКлавиатуру()" вызывается из перехватчика, при перехвате колеса мыши на формах журналов.
  
Наверх
 
IP записан
 
dumsik
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 28
Зарегистрирован: 27. Января 2009
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #4 - 10. Июня 2012 :: 13:00
Печать  
Есть новости по этой проблеме ?
  
Наверх
 
IP записан
 
dumsik
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 28
Зарегистрирован: 27. Января 2009
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #5 - 17. Июня 2012 :: 11:11
Печать  
Кстати в windows 7 эта проблема тоже есть
  
Наверх
 
IP записан
 
dumsik
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 28
Зарегистрирован: 27. Января 2009
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #6 - 25. Июня 2012 :: 14:54
Печать  
Уважаемый Альф, может пофиксете этот косметический баг  Улыбка
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 855
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: ЭмулироватьКлавиатуру() и Win 2k8 x64 Server
Ответ #7 - 21. Ноября 2013 :: 09:55
Печать  
Да, есть проблема с тормозами.

Вызывал Сервис.ЭмулироватьКлавиатуру("{END}") - тормозит жутко на Win2008

Переделал на:

Код
Выбрать все
	wshShell=СоздатьОбъект("wScript.shell");
	wshShell.appActivate("1С:Предприятие");
	wshShell.sendKeys(Комбинация); 



Так работает быстро.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать