Главная страница
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.031 c
14-1130970062
Kerk
2005-11-03 01:21
2005.11.27
Яндекс :)


14-1131172685
cyborg
2005-11-05 09:38
2005.11.27
Компьютерные журналы


6-1123567115
Shopot
2005-08-09 09:58
2005.11.27
Как передавать данные удаленному компу.


14-1130918257
Dmseller
2005-11-02 10:57
2005.11.27
bool.ru - предложение


8-1120636507
DelphiN!
2005-07-06 11:55
2005.11.27
Изменение громкости звука в Windows, на драйверах Audigy2 zs