Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 53

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

 if DirectSound.SetCooperativeLevel(Handle, DSSCL_NORMAL) <> DS_OK then Raise Exception.Create('Unable to set Cooperative Level');

end;


procedure TForm1.AppCreateWriteSecondary3DBuffer;

var

 BufferDesc  : DSBUFFERDESC;

 Caps        : DSBCaps;

 PCM         : TWaveFormatEx;

begin

 FillChar(BufferDesc, SizeOf(DSBUFFERDESC), 0);

 FillChar(PCM, SizeOf(TWaveFormatEx), 0);

 with BufferDesc do begin

  PCM.wFormatTag:=WAVE_FORMAT_PCM;

  if isStereo then PCM.nChannels:=2

  else PCM.nChannels:=1;

  PCM.nSamplesPerSec:=SamplesPerSec;

  PCM.nBlockAlign:=(Bits div 8)*PCM.nChannels;

  PCM.nAvgBytesPerSec:=PCM.nSamplesPerSec * PCM.nBlockAlign;

  PCM.wBitsPerSample:=Bits;

  PCM.cbSize:=0;

  dwSize:=SizeOf(DSBUFFERDESC);

  dwFlags:=DSBCAPS_STATIC or DSBCAPS_CTRL3D;

  dwBufferBytes:=Time*PCM.nAvgBytesPerSec;

  lpwfxFormat: [email protected];

 end;

 if DirectSound.CreateSoundBuffer(BufferDesc, Buffer, nil) <> DS_OK then Raise Exception.Create('Create Sound Buffer failed');

end;


procedure TForm1.AppWriteDataToBuffer;

var

 AudioPtr1, AudioPtr2: Pointer;

 AudioBytes1, AudioBytes2: DWord;

 h: HResult;

 Temp: Pointer;

begin

 H:=Buffer.Lock(OffSet, SoundBytes, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0);

 if H = DSERR_BUFFERLOST  then begin

  Buffer.Restore;

  if Buffer.Lock(OffSet, SoundBytes, AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2, 0) <> DS_OK then Raise Exception.Create('Unable to Lock Sound Buffer');

 end

 else if H <> DS_OK then Raise Exception.Create('Unable to Lock Sound Buffer');

 Temp: [email protected];

 Move(Temp^, AudioPtr1^, AudioBytes1);

 if AudioPtr2 <> nil then begin

  Temp: [email protected];

  Inc(Integer(Temp), AudioBytes1);

  Move(Temp^, AudioPtr2^, AudioBytes2);

 end;

 if Buffer.UnLock(AudioPtr1, AudioBytes1, AudioPtr2, AudioBytes2) <> DS_OK then Raise Exception.Create('Unable to UnLock Sound Buffer');

end;


procedure TForm1.CopyWAVToBuffer;

var

 Data     : PChar;

 FName    : TFileStream;

 DataSize : DWord;

 Chunk    : String[4];

 Pos      : Integer;

begin

 FName:=TFileStream.Create(Name,fmOpenRead);

 Pos:=24;

 SetLength(Chunk,4);

 repeat

  FName.Seek(Pos, soFromBeginning);

  FName.Read(Chunk[1], 4);

  Inc(Pos);

 until Chunk = 'data';

 FName.Seek(Pos+3, soFromBeginning);

 FName.Read(DataSize, SizeOf(DWord));

 GetMem(Data, DataSize);

 FName.Read(Data^, DataSize);

 FName.Free;

 AppWriteDataToBuffer(Buffer, 0, Data^, DataSize);

 FreeMem(Data, DataSize);

end;


var Pos : Single = -25;


procedure TForm1.AppSetSecondary3DBuffer;

begin

 if Buffer.QueryInterface(IID_IDirectSound3DBuffer, _3DBuffer) <> DS_OK then Raise Exception.Create('Failed to create IDirectSound3D object');

 if _3DBuffer.SetPosition(Pos, 1, 1, 0) <> DS_OK then Raise Exception.Create('Failed to set IDirectSound3D Position');

end;


procedure TForm1.Button1Click(Sender: TObject);

begin

 CopyWAVToBuffer('xhe4.wav',SecondarySoundBuffer);

 if SecondarySoundBuffer.Play(0, 0, DSBPLAY_LOOPING) <> DS_OK then ShowMessage('Can''t play the Sound');

 Timer1.Enabled:=True;

end;


procedure TForm1.Timer1Timer(Sender: TObject);

begin

 SecondarySound3DBuffer.SetPosition(Pos,1,1,0);

 Pos:=Pos + 0.1;

end;


end.

АппаратноС обСспСчСниС 

CD-ROM 

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΎΠ² CD-ROM

Π§Ρ‚ΠΎ касаСтся вопроса "ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄Π° CD-ROM", Ρ‚ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ CD-ROMΠ° Π² систСмС, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ функциями:

//                 ____       _          ______            __

//                / __ \_____(_)   _____/_  __/___ ____   / /____

//               / / / / ___/ / | / / _ \/ / / __ \/ __ \/ / ___/

//              / /_/ / /  / /| |/ /  __/ / / /_/ / /_/ / (__ )

//             /_____/_/  /_/ |___/\___/_/  \____/\____/_/____/

//

(*******************************************************************************

* DriveTools 1.0                                                               *

*                                                                              *

* (c) 1999 Jan Peter Stotz                                                     *

*                                                                              *

********************************************************************************

*                                                                              *

* If you find bugs, has ideas for missing featurs, feel free to contact me     *

* [email protected]                                                               *

*                                                                              *

********************************************************************************

* Date last modified: May 22, 1999                                             *

*******************************************************************************)

unit DriveTools;


interface


uses Windows, SysUtils, MMSystem;


function CloseCD(Drive: Char): Boolean;

function OpenCD(Drive: Char): Boolean;


implementation


function OpenCD(Drive : Char): Boolean;

Var

 Res: MciError;

 OpenParm: TMCI_Open_Parms;

 Flags: DWord;

 S: String;

 DeviceID: Word;

begin

 Result:=false;

 S:=Drive+':';

 Flags:=mci_Open_Type or mci_Open_Element;

 With OpenParm do begin

  dwCallback := 0;

  lpstrDeviceType := 'CDAudio';

  lpstrElementName := PChar(S);

 end;

 Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));

 IF Res<>0 Then exit;

 DeviceID:=OpenParm.wDeviceID;

 try

  Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

  IF Res=0 Then exit;

  Result:=True;

 finally

  mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));

 end;

end;


function CloseCD(Drive : Char) : Boolean;

Var

 Res: MciError;

 OpenParm: TMCI_Open_Parms;

 Flags: DWord;

 S: String;

 DeviceID: Word;

begin

 Result:=false;

 S:=Drive+':';

 Flags:=mci_Open_Type or mci_Open_Element;

 With OpenParm do begin

  dwCallback := 0;lpstrDeviceType := 'CDAudio';

  lpstrElementName := PChar(S);

 end;

 Res:= mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));

 IF Res<>0 Then exit;

 DeviceID:=OpenParm.wDeviceID;

 try

  Res:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

  IF Res=0 Then exit;

  Result:=True;

 finally

  mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));

 end;

end;


end.

ΠŸΡ€ΠΈΡΠ»Π°Π» Vadim Petrov. 

ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° 

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ языков ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ языка примСняСтся Π²Ρ‹Π·ΠΎΠ² LoadKeyboardLayout:

var russian, latin: HKL;

russian:=LoadKeyboardLayout('00000419', 0);

latin:=LoadKeyboardLayout('00000409', 0); Π³Π΄Π΅ Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅

SetActiveKeyboardLayout(russian);

ΠŸΡ€ΠΈΡΠ»Π°Π» Igor Nikolaev aKa The Sprite. 

Как ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ наТатия клавиш Π² систСмС

Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция 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.