Чтение онлайн

ЖАНРЫ

Советы по Delphi. Версия 1.4.3 от 1.1.2001

Озеров Валентин

Шрифт:

Как отловить нажатия клавиш в системе

Для этого используется функция GetAsyncKeyState(KeyCode)

в качестве параметра используются коды клавиш(например A – 65).

GetAsyncKeyState возвращает ненулевое значение если во время ее вызова нажата указаная клавиша.

//----Этот пример отлавливает нажатие клавиши «A»

//Этот код необходимо поместить в процедуру обработки

//таймера с интервалом «1»

if getasynckeystate(65)<>0 then showmessage('A – pressed');

//----------

Прислал Igor Nikolaev aKa The Sprite. 

Клавиша

с кодом #0

Delphi 1 

В действительности она служит флагом проверки нажатия клавиши, по соглашению, код #0 означает, что никакой клавиши нажато не было. В некоторых случаях событие может активизировать передачу этого кода (например, прямым вызовом), или предок, возможно, уже обработал нажатие клавиши, и Key был установлен в #0. 

Как из программы переключить раскладку клавиатуры?

Одной строкой 

Nomadic отвечает:

A: ActivateKeyboardLayout. Учтите, что использование этой функции – плохой тон.

Модем 

Как получить список установленных модемов в Win95/98?

Nomadic советует:

unit PortInfo;

interface

uses Windows, SysUtils, Classes, Registry;

function EnumModems: TStrings;

implementation

function EnumModems: TStrings;

var

 R: TRegistry;

 s: ShortString;

 N: TStringList;

 i: integer;

 j: integer;

begin

 Result:= TStringList.Create;

 R:= TRegistry.Create;

 try

with R do begin

RootKey:= HKEY_LOCAL_MACHINE;

if OpenKey('\System\CurrentControlSet\Services\Class\Modem', False) then

if HasSubKeys then begin

N:= TStringList.Create;

try

GetKeyNames(N);

for i:=0 to N.Count – 1 do begin

closekey; { + }

openkey('\System\CurrentControlSet\Services\Class\Modem',false); { + }

OpenKey(N[i], False);

s:= ReadString('AttachedTo');

for j:=1 to 4 do if pos(chr(j+ord('0')), s) > 0 then Break;

Result.AddObject(ReadString('DriverDesc'),TObject(j));

CloseKey;

end;

finally

N.Free;

end;

end;

end;

 finally

R.Free;

 end;

end;

end.

Порты 

Асинхронная

связь

Delphi 1

unit Comm;

interface

uses Messages,WinTypes,WinProcs,Classes,Forms;

type

 TPort=(tptNone,tptOne,tptTwo,tptThree,tptFour,tptFive,tptSix,tptSeven,tptEight);

 TBaudRate= (tbr110, tbr300, tbr600, tbr1200, tbr2400, tbr4800, tbr9600, tbr14400, tbr19200, tbr38400, tbr56000, tbr128000, tbr256000);

 TParity=(tpNone,tpOdd,tpEven,tpMark,tpSpace);

 TDataBits=(tdbFour,tdbFive,tdbSix,tdbSeven,tdbEight);

 TStopBits=(tsbOne,tsbOnePointFive,tsbTwo);

 TCommEvent=(tceBreak, tceCts, tceCtss, tceDsr, tceErr, tcePErr, tceRing, tceRlsd, tceRlsds, tceRxChar, tceRxFlag, tceTxEmpty);

 TCommEvents=set of TCommEvent;

const

 PortDefault=tptNone;

 BaudRateDefault=tbr9600;

 ParityDefault=tpNone;

 DataBitsDefault=tdbEight;

 StopBitsDefault=tsbOne;

 ReadBufferSizeDefault=2048;

 WriteBufferSizeDefault=2048;

 RxFullDefault=1024;

 TxLowDefault=1024;

 EventsDefault=[];

type

 TNotifyEventEvent=procedure(Sender:TObject; CommEvent:TCommEvents) of object;

 TNotifyReceiveEvent=procedure(Sender:TObject; Count:Word) of object;

 TNotifyTransmitEvent=procedure(Sender:TObject; Count:Word) of object;

 TComm=class(TComponent)

Поделиться с друзьями: