On-line: PSP, гостей 2. Всего: 3 [подробнее..]
АвторСообщение





Пост N: 69
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 20.09.07 15:44. Заголовок: программно переключать РУС/ЛАТ в консоли


Вот думаю, как сделать программный переключатель в консольном окне: при вводе пароля нужен LAT, при поиске фамилии клиента - однозначно RUS, ну и так, по мелочи...

Пока работаем, используя RKM.COM - никаких проблем, все очень удобно, правый Ctrl переключает, в правом верхнем углу консольного окна отображается текущая раскладка. Хочется добавить взаимодействия Задача работает на разношерстном парке ОС и железа: Win98SE, Win2K, WinXP, Win2003 (terminal) - Clipper 5.2e + Blinker 6 + CT + Nanforum

Может, у кого был опыт - чтобы имеющийся функционал не пострадал?

Спасибо.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]


постоянный участник


Пост N: 244
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.09.07 11:00. Заголовок: Re:


Когда-то давно написал для работы с keyrus.com, связка Clipper 5.3b + Exospace, где-то был вариант для Blinker и CauseWay, но что-то не могу найти, наверное утерял, так как давно не пользуюсь keyrus.com в связи с известными проблемами последнего под WinXP, да и Clipper очень редко использую. На Win9* все работало без проблем.

О RKM.COM ничего не скажу, не встречались, но может быть он, как и keyrus.com, тоже имеет свой програмный интерфейс?

/***
*/
FUNCTION KeybMode( mode)
local bitstr, lp, rp, cm
//
IF !keyRus()
RETURN "U"
END

bitstr := PADL(BaseToBase(LTRIM(STR(KeyMode())),10,2),8,"0")
lp := LEFT( bitstr, 6)
rp := RIGHT( bitstr,2)

IF VALTYPE( mode) == "C"
cm := UPPER(LEFT( mode, 1))
IF cm == "R"
KeyMode(VAL(BaseToBase(lp+"00",2,10)))
ELSEIF cm == "E"
KeyMode(VAL(BaseToBase(lp+"01",2,10)))
ELSEIF cm == "A"
KeyMode(VAL(BaseToBase(lp+"10",2,10)))
END
END

IF rp == "00"
cm := "R"
ELSEIF rp == "01"
cm := "E"
ELSEIF rp == "10"
cm := "A"
END

RETURN cm

#include "dos.h"
#include "string.h"

#include "extend.api"
#include "exospace.api"
#include "filesys.api"
#include "fm.api"

int ExoIsExoSpace(void);

CLIPPER KeyRus()
{
EXOREGS inreg, outreg;

if (!ExoIsExoSpace())
return;

inreg.ax = 0x4100;

ExoRMInterrupt (0x16, &inreg, &outreg);

if ( outreg.ax == 0xAAAA)
_retl( TRUE);
else _retl( FALSE);
}
//
//
CLIPPER KeyScreen()
{
EXOREGS inreg, outreg;

if (!ExoIsExoSpace() || PCOUNT > 1 || !ISLOG(1))
return;

if ( _parl(1))
inreg.ax = 0x4103;
else
inreg.ax = 0x4104;

ExoRMInterrupt (0x16, &inreg, &outreg);
}
//
//
CLIPPER KeyMode()
{
EXOREGS inreg, outreg;
BYTE cstatus;

if (!ExoIsExoSpace())
return;

inreg.ax = 0x4101; // get status
ExoRMInterrupt(0x16, &inreg, &outreg);
cstatus = (BYTE) outreg.bx;

if( PCOUNT>1 || !ISNUM(1)) // get status mode
{
_retni( cstatus);
return;
}
inreg.ax = 0x4102; // get status
inreg.bx = (BYTE) _parni(1);

ExoRMInterrupt (0x16, &inreg, &outreg);
_retni( cstatus);
}

Для компиляции .с файла сначала использовал BCC++ 3.1 c ключами компляции -ml -c -2 -G -K-




Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 618
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет