Code:

function GetCaptionAtPoint(CrPos: TPoint): string;

var

  textlength: Integer;

  Text: PChar;

  Handle: HWND;

begin

  Result := 'Empty';

  Handle := WindowFromPoint(CrPos);

  if Handle = 0 then Exit;

  textlength := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);

  if textlength <> 0 then

  begin

    getmem(Text, textlength + 1);

    SendMessage(Handle, WM_GETTEXT, textlength + 1, Integer(Text));

    Result := Text;

    freemem(Text);

  end;

end;

 

 

 

Code:

{

Check if a Point(X,Y) (e.g a Cursor) is on a Linie (x1,y1) ; (x2,y2)

d = line width (min. 1)

 

}

 

function CursorOnLinie(X, Y, x1, y1, x2, y2, d: Integer): Boolean;

var

  sine, cosinus: Double;

  dx, dy, len: Integer;

begin

  if d = 0 then d := 1;

  asm

    fild(y2)

    fisub(y1) // Y-Difference

   fild(x2)

    fisub(x1) // X-Difference

   fpatan    // Angle of the line in st(0)

   fsincos   // Cosinus in st(0), Sinus in st(1)

   fstp cosinus

    fstp sine

  end;

  dx  := Round(cosinus * (x - x1) + sine * (y - y1));

  dy  := Round(cosinus * (y - y1) - sine * (x - x1));

  len := Round(cosinus * (x2 - x1) + sine * (y2 - y1)); // length of line

if (dy > -d) and (dy < d) and (dx > -d) and (dx < len + d) then Result := True

  else

     Result := False;

end;

 

procedure TForm1.FormPaint(Sender: TObject);

begin

  Canvas.Pen.Width := 1;

  Canvas.MoveTo(0, 0);

  Canvas.LineTo(Width, Weight);

end;

 

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

var

  p: TPoint;

begin

  GetCursorPos(p);

  p := ScreenToClient(p);

  if CursorOnLinie(p.x, p.y, 0, 0, Width, Height, 1) then

    Caption := 'Mouse on line.'

  else

    Caption := 'Mouse not on line.'

end;

 

Code:

function PortExists(const PortName: string): Boolean;

var

hPort: HWND;

begin

Result := False;

hPort := CreateFile(PChar(PortName), {name}

   GENERIC_READ or GENERIC_WRITE, {access attributes}

   0, {no sharing}

   nil, {no security}

   OPEN_EXISTING, {creation action}

   FILE_ATTRIBUTE_NORMAL or

   FILE_FLAG_OVERLAPPED, {attributes}

   0); {no template}

if hPort <> INVALID_HANDLE_VALUE then

begin

   CloseHandle(hPort);

   Result := True;

end;

end;

 

{Parallel Ports}

for i := 1 to 9 do

begin

if PortExists('LPT' + IntToStr(i)) then

   List.Append('Ports: Printer Port (LPT' + IntTostr(i) + ')');

end;

 

Code:

library Hookdemo;

uses

 Beeper in '\DELDEMOS\HOOKDEMO\BEEPER.PAS';

exports

SetHook index 1,

UnHookHook index 2,

HookProc index 3;

begin

 HookedAlready:=False;

end.

 

  

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

CommPort : string;

hCommFile : THandle;

Buffer : PCommConfig;

size : DWORD;

begin

CommPort := 'COM1';

{Открываем Com-порт}

hCommFile := CreateFile(PChar(CommPort),

                         GENERIC_WRITE,

                         0,

                         nil,

                         OPEN_EXISTING,

                         FILE_ATTRIBUTE_NORMAL,

                         0);

if hCommFile=INVALID_HANDLE_VALUE then

begin

   ShowMessage('Unable to open '+ CommPort);

   exit;

end;

{Выделяем временный буфер}

GetMem(Buffer, sizeof(TCommConfig));

 

{Получаем размер структуры CommConfig}

size := 0;

GetCommConfig(hCommFile, Buffer^, size);

 

{Освобождаем временный буфер}

FreeMem(Buffer, sizeof(TCommConfig));

 

{Выделяем память для структуры CommConfig}

GetMem(Buffer, size);

GetCommConfig(hCommFile, Buffer^, size);

 

{Изменяем скорость передачи}

Buffer^.dcb.BaudRate := 1200;

 

{Устанавливаем новую конфигурацию для COM-порта}

SetCommConfig(hCommFile, Buffer^, size);

 

{Освобождаем буфер}

FreeMem(Buffer, size);

 

{Закрываем COM-порт}

CloseHandle(hCommFile);

end;

 

 

 

  

Code:

Function SetMouseSpeed ( NewSpeed : Integer ) : Boolean;

{©Drkb v.3}

 

begin

Result := SystemParametersInfo(SPI_SETMOUSESPEED, 1, Pointer(NewSpeed), SPIF_SENDCHANGE );

End;

 

Function GetMouseSpeed : Integer;

Var

Int : Integer;

begin

SystemParametersInfo(SPI_GETMOUSESPEED, 0, @Int, SPIF_SENDCHANGE );

Result := Int;

End;

 

 

Первый способ :

Используем команды Turbo Pascal ...

Code:

value:=port[$379]; \{ Прочитать из порта \}

port[$379]:=value; \{ Записать в порт \}

 

 

Функция FindVCLWindow( const Pos: TPoint ): TWinControl;

Функция возвращает оконное средство управления для местоположения, определенного параметром Pos. Если для данного местоположения нет оконных средств управления, то функция возвращает nil.

  

 

Code:

function GetPortAddress(PortNo: integer): word; assembler; stdcall;

asm

push es

push ebx

mov ebx, PortNo

shl ebx,1

mov ax,40h // Dos segment adress

mov es,ax

mov ax,ES:[ebx+6] // get port adress in 16Bit way :)

pop ebx

pop es

end;

 

 

 

Первый шаг-открыть коммуникационное устройство для чтения и записи.

Это достигается с помощью функции Win32 'CreateFile'.

В случае сбоя функция возвращает значение false

 

Code:

uses Registry;

 

procedure TForm1.Button1Click(Sender: TObject);

var

reg : TRegistry;

ts : TStrings;

i : integer;

begin

reg := TRegistry.Create;

reg.RootKey := HKEY_LOCAL_MACHINE;

reg.OpenKey('hardware\devicemap\serialcomm',

             false);

ts := TStringList.Create;

reg.GetValueNames(ts);

for i := 0 to ts.Count -1 do begin

   Memo1.Lines.Add(reg.ReadString(ts.Strings[i]));

end;

ts.Free;

reg.CloseKey;

reg.free;

end;