Code:

{Зависимости: Windows

Автор:       Gua, , Simferopol Copyright:   Gua

********************************************** }

 

function GetDisplayDevice: string;

var

lpDisplayDevice: TDisplayDevice;

begin

lpDisplayDevice.cb := sizeof(lpDisplayDevice);

EnumDisplayDevices(nil, 0, lpDisplayDevice , 0);

Result:=lpDisplayDevice.DeviceString;

end;

 

 

Code:

function GettingHWProfileName: string//Win95OSR2 or later and NT4.0 or later

var

pInfo:  tagHW_PROFILE_INFOA;

begin

GetCurrentHwProfile(pInfo);

Result:=pInfo.szHwProfileName;

end;

 

S0 Звонок, на который необходимо ответить (Ring After Which To Answer)

S1 Количество звонков (Ring Count)

S2 Символ отмены (Hayes Escape Character)

S3 Символ перевода строки (Carriage Return Character)

Эта функция может использоваться для определения того, работает ли программа с виртуального компьютера

 

How can I use TAPI to dial the telephone for a voice call?

 The following example shows how to interface with tapi to make a voice call.

Simple VMware check on i386

Note: There are plenty ways to detect VMware. This short version bases on the fact that VMware intercepts IN instructions to port 0x5658 with

an magic value of 0x564D5868 in EAX. However, this is *NOT* officially  documented (used by VMware tools to communicate with the host via VM).

Because this might change in future versions - you should look out for additional checks (e.g. hardware device IDs, BIOS informations, etc.).

Newer VMware BIOS has valid SMBIOS informations (you might use my BIOS Helper unit to dump the ROM-BIOS (https://www.bendlins.de/nico/delphi).

A        Команда ответа (Answer Command)        

Bn        Настройка связи (Communications Options)        

D        Команда набора (Dial Command)        

En        Команда выбора символа эха (Select Command Character Echo Option)        

Есть 2 файла драйвера - Sys и Ini как установить драйвер?

Автор: Rouse_

Code:

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.

 

Особые благодарности Королеве дельфийского королевства Елене Филипповой, которая подвигла меня на ваяние сего опуса.

 Вместо предисловия

 Я не являюсь профессиональным программистом и никогда не писал статьей по программированию. Поэтому "продвинутых" специалистов прошу не утруждать себя чтением ниже изложенного дабы избежать обструкции по поводу допущенных мною в настоящей статье ошибок и вольностей.

 

После предварительной настройки переменных, COM порт открывается как обычный файл. Так же пример показывает, как очищать буфер COM порта и читать из него.