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;

 

  

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;

 

Часть 1

 

Вступление

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

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

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

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

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

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

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

 

Code:

procedure TForm1.Button3Click(Sender: TObject);

begin

MessageDlg('Уже поздно. Будь послушным мальчиком. '+

'Туши свет и вали спать!', mtInformatoion, [mbOk], 0);

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);

end;

  

Для того, чтобы программно включить монитор можете использовать следующий код:

 

procedure TForm1.Button3Click(Sender: TObject);

begin

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

end;

 

 

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

 

Code:

procedure TForm1.button1click(Sender: TObject);

var

lpDisplayDevice: TDisplayDevice;

dwFlags: DWORD;

cc: DWORD;

begin

form2.memo1.Clear;

lpDisplayDevice.cb := sizeof(lpDisplayDevice);

dwFlags := 0;

cc:= 0;

while EnumDisplayDevices(nil, cc, lpDisplayDevice , dwFlags) do

begin

   Inc(cc);

   form2.memo1.lines.add(lpDisplayDevice.DeviceString);

       {Так же мы увидим дополнительную информацию в lpDisplayDevice}

   form2.show;

end;

end;

 

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

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

 

Для этого необходимо создать обработчик для перехвата сообщения WM_DISPLAYCHANGE. Применяется это в тех случаях, если Ваше приложение зависит от разрешения экрана (например, приложение работает с графикой).

 Далее следует пример обработчика сообщения:

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

Если монитор поддерживает режим Stand by, то его можно программно перевести в этот режим. Данная возможность доступна на Windows95 и выше.

 Чтобы перевести монитор в режим Stand by: