Code:

package BTClasses;

 

{$R *.res}

{$ALIGN 8}

{$ASSERTIONS ON}

{$BOOLEVAL OFF}

{$DEBUGINFO ON}

{$EXTENDEDSYNTAX ON}

{$IMPORTEDDATA ON}

{$IOCHECKS ON}

{$LOCALSYMBOLS ON}

{$LONGSTRINGS ON}

{$OPENSTRINGS ON}

{$OPTIMIZATION ON}

{$OVERFLOWCHECKS OFF}

{$RANGECHECKS OFF}

{$REFERENCEINFO ON}

{$SAFEDIVIDE OFF}

{$STACKFRAMES OFF}

{$TYPEDADDRESS OFF}

{$VARSTRINGCHECKS ON}

{$WRITEABLECONST OFF}

{$MINENUMSIZE 1}

{$IMAGEBASE $400000}

{$IMPLICITBUILD OFF}

 

requires

rtl;

 

contains

BTRadio in 'BTRadio.pas',

BluetoothAPI in 'BluetoothAPI.pas',

BthSdpDef in 'BthSdpDef.pas',

BTExceptions in 'BTExceptions.pas',

BTStrings in 'BTStrings.pas',

BTDevice in 'BTDevice.pas';

 

end.

  

Code:

uses MMSYSTEM;

var

MyJoy: TJoyInfo;

ErrorResult: MMRESULT;

begin

ErrorResult := joyGetPos(joystickid1, @MyJoy);

if ErrorResult = JOYERR_NOERROR then

begin

   TrackBar1.Position := MyJoy.wypos;

   TrackBar2.Position := MyJoy.wxpos;

   RadioButton1.Checked := (MyJoy.wbuttons and joy_button1) > 0;

   RadioButton2.Checked := (MyJoy.wbuttons and joy_button2) > 0;

end

else

  case ErrorResult of

    MMSYSERR_NODRIVER: ShowMessage('No Joystick driver present');

    MMSYSERR_INVALPARAM: ShowMessage('Invalid Joystick Paramameters');

    JOYERR_UNPLUGGED: ShowMessage('Joystick is Unplugged');

  else

    ShowMessage('Unknown error with Joystick');

end;

 

end;

 

Посвящается всем любителям компьютерных игр…

В предыдущей статье данного цикла  были рассмотрены некоторые из вопросов, связанных с использованием внешних устройств. Данная статья продолжает начатую тему. Так как данный номер посвящен приложениям multimedia, а примеры использования компонента TMediaPlayer и создания проигрывателя звуковых компакт-дисков доступны российским читателям в нескольких различных модификациях (см., например, недавно вышедшую книгу С.Тейксейра и К.Пачеко "Borland Delphi 4: руководство разработчика"; подобные примеры есть и в других источниках), данная статья посвящена теме довольно экзотической - использованию джойстика. Некоторые (но далеко не все) идеи, послужившие основой для рассмотренного ниже примера, заимствованы из малодоступного российскому читателю источника "C++Builder - how-to" (J.Miano, T.Cabanski, H.Howe. - Waite Group Press, ).

  

Code:

uses

Windows, SysUtils;

 

function DisplayRam: string;

var

Info: TMemoryStatus;

begin

Info.dwLength := SizeOf(TMemoryStatus);

GlobalMemoryStatus(Info);

Result := Format('%d MB RAM', [(Info.dwTotalPhys shr 20) + 1]);

end;

 

Маленький коментарий:
При открытии сидирома срабатывает DBT_DEVICEREMOVECOMPLETE, при закрытии DBT_DEVICEARRIVAL
При подключении сетевого диска также приходит DBT_DEVICEARRIVAL а при отключении DBT_DEVICEREMOVECOMPLETE
При подключении или отключении флэшки срабатывает DBT_DEVNODES_CHANGED...
 

Прежде всего, получить SDK

 После установки откройте Delphi и импортируйте элемент управления ActiveX VPortal2 из списка. Теперь создайте новую форму и поместите VideoPortal из панели ActiveX и кнопки. В пользах, добавить Видеопортал

 На OnShow добавить:

Часть 1

 

Вступление

Этой статьей хочу начать серию по работе с Bluetooth в Delphi под Microsoft Windows XP. Так как тема весьма сложная, прошу внимательно читать. Повторяться не буду.

Все программы написаны на Delphi 6 и тестировались со стандартным стеком Bluetooth от Microsoft под Windows XP + SP2.

Все необходимые библиотеки прилагаются. Так что дополнительно ничего качать не нужно. При разработке использовал только API функции с JEDI.

Описание функций будут даны в стиле Object Pascal. Сионистов просьба обращаться к MSDN и Microsoft Platform SDK.

 

Приведенный здесь пример тестировался на сканере Umax 2000P с драйвером VistaScan32 V3.52. При получении изображений следует помнить, что максимальный размер блока памяти, который может распределить Windows, составляет 2 Гб для 32-ух битной винды (8 Тб для 64-х битной) и при попытке сканировании страниц формата А4 с высоким разрешением можно превысить этот предел. Кроме того, достаточно простой в обращении объект TBitMap имеет куда более серьезные ограничения на размер загружаемых изображений, что требует непосредственной работы с DIB данными. Но это уже тема для отдельной статьи.