Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

keybd_event и GetKeyStatus отказываются работать в терминальном   Найти похожие ветки 

 
Still Swamp   (2005-09-23 14:59) [0]

keybd_event и GetKeyStatus  отказываются работать в терминальном режиме.Вот такая беда.

Написал экранную клавиатуру. Она славно работает вконсоле, но напроч отказывается работать втерминалке.

Ктоподскажет - как с этим бороться. Если можно, без SendMessage.


 
Still Swamp   (2005-09-23 15:07) [1]

Уточнение GetKeyState не работает в w2k под XP все пучком... что это может быть?


 
Still Swamp   (2005-09-23 15:37) [2]

Еще одно уточнение!!! Не работатает keybd_event  только при открытом диалоге ввода логина пароля. Те сами по себе события от клавы я отправляю нормально. Только вот их кто то ловит и давит. Может джина может еще кто. Подозреваю что это каверза по безопасности. Как ее обойти?


 
ANB ©   (2005-09-23 17:07) [3]

А что такое терминалка ?
Имхо - Send/Post Message намного удобнее, я сам долго парился, чтобы от keybd_event отказаться.


 
ANB ©   (2005-09-23 17:09) [4]


> Still Swamp   (23.09.05 15:37) [2]
- у тебя, похоже, не то окно активно. Попробуй на других диалогах или вставь большие паузы между кнопками и кнопок побольше и в процессе работы шелкни мышей по полю ввода пароля.
ЗЫ. Это поле можно сделать обычным (с видимыми буквами).


 
Still Swamp   (2005-09-24 01:02) [5]

Хорошо... раз такое дело...
Я написал вариант на месседжах.
Грабли следующие...
Где взять SCAN код. Как я понимаю, его надо передавать, иначе не работает если не передавать этот параметр. С ASCII он не совпадает. Можно его поймать с клавы, но он на разных клавах будет разным.

Что делать?


 
Still Swamp   (2005-09-24 01:18) [6]

И еще.... у меня не доходят мессэджи до окон. Скажем - Far принимаетмесседжи иуспешно управляется, а вот Word нет... :( Handle окон я проверил. Ну с калвиатуры мессаги естно успешно в тех приложениях доходят.


 
Still Swamp   (2005-09-24 01:21) [7]

Вот оно...

procedure TForm1.Panel31MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
TempActiveWindow:integer;
begin
Beep(1500,20);
FASCII:=(Sender as TPanel).Tag;

// keybd_event(FASCII, 0, 0, 0);

TempActiveWindow:=GetForegroundWindow;
Caption:="Self:"+IntToStr(Handle)+" Active:"+IntToStr(TempActiveWindow);
FillChar(Rec, SizeOf(Rec), 0);
Rec.Count:=1;
Rec.Scan:=FASCII;

if ((Sender as TPanel).Tag>=$30)and((Sender as TPanel).Tag<=$39)or((Sender as TPanel).Tag>=$41)and((Sender as TPanel).Tag<=$5A) then begin
 Rec.Flag:=0;
 SendMessage(TempActiveWindow, WM_CHAR, FASCII, LongInt(Rec));
end else begin
 Rec.Flag:=1;
 SendMessage(TempActiveWindow, WM_KEYDOWN, FASCII, LongInt(Rec));
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
2-1131566879
kami
2005-11-09 23:07
2005.11.27
Про QueryServiceConfig2 - _SERVICE_FAILURE_ACTIONS


2-1131579227
clark
2005-11-10 02:33
2005.11.27
kak otkrit zvukovoy fayl ?


14-1130639182
Crusher
2005-10-30 05:26
2005.11.27
OC


3-1129387970
Павел
2005-10-15 18:52
2005.11.27
Ошибка при использовании UDF


2-1131401749
clark
2005-11-08 01:15
2005.11.27
subj