2,29 → 2,56 |
|
uses |
SysUtils, |
hbTAPI; |
AnsiStrings, |
hbTAPI, |
dialogs; |
|
{$R *.res} |
|
function GetTapiDevices(buf: PAnsiChar): integer; stdcall; |
function GetTapiDevicesA(buf: PAnsiChar): integer; stdcall; |
var |
mTapiLine: TTapiLine; |
mTapiLine: ThbTapiLine; |
len: Integer; |
s: string; |
s: AnsiString; |
begin |
mTapiLine := TTapiLine.Create(nil); |
mTapiLine := ThbTapiLine.Create(nil); |
try |
try |
mTapiLine.Active := false; |
s := mTapiLine.DeviceList.Text; |
len := Length(s); |
s := AnsiString(mTapiLine.DeviceList.Text); |
len := (Length(s)+1{NUL}) * SizeOf(AnsiChar); |
if buf <> nil then |
begin |
FillChar(buf^, len+1{NUL}, 0); |
FillChar(buf^, len, 0); |
AnsiStrings.StrPCopy(buf, s); |
end; |
result := len; |
except |
result := -1; |
end; |
finally |
FreeAndNil(mTapiLine); |
end; |
end; |
|
function GetTapiDevicesW(buf: PWideChar): integer; stdcall; |
var |
mTapiLine: ThbTapiLine; |
len: Integer; |
s: WideString; |
begin |
mTapiLine := ThbTapiLine.Create(nil); |
try |
try |
mTapiLine.Active := false; |
s := WideString(mTapiLine.DeviceList.Text); |
len := (Length(s)+1{NUL}) * SizeOf(WideChar); |
if buf <> nil then |
begin |
FillChar(buf^, len, 0); |
StrPCopy(buf, s); |
result := 0; |
end; |
result := len+1{NUL}; |
result := len; |
except |
result := -1; |
end; |
33,11 → 60,12 |
end; |
end; |
|
function Call(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall; |
function MakeCallA(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall; |
var |
mTapiLine: TTapiLine; |
mTapiLine: ThbTapiLine; |
sPhoneNumber: AnsiString; |
begin |
mTapiLine := TTapiLine.Create(nil); |
mTapiLine := ThbTapiLine.Create(nil); |
try |
mTapiLine.Active := false; |
mTapiLine.CallParams.Flags := 0; |
50,7 → 78,8 |
exit; |
end; |
try |
mTapiLine.MakeCall(AnsiString(phoneNumber)); |
sPhoneNumber := phoneNumber; |
mTapiLine.MakeCall(String(sPhoneNumber)); |
except |
// This can tappen when the headset is active, so the line is busy |
result := -2; |
62,9 → 91,54 |
end; |
end; |
|
{$IFDEF UNICODE} |
function MakeCallW(phoneNumber: PWideChar; deviceId: integer): integer; stdcall; |
var |
mTapiLine: ThbTapiLine; |
sPhoneNumber: WideString; |
begin |
mTapiLine := ThbTapiLine.Create(nil); |
try |
mTapiLine.Active := false; |
mTapiLine.CallParams.Flags := 0; |
mTapiLine.DeviceID := deviceId; |
mTapiLine.Active := true; |
if not mTapiLine.Active then |
begin |
// Usually "TAPI device not available" |
result := -1; |
exit; |
end; |
try |
sPhoneNumber := phoneNumber; |
mTapiLine.MakeCall(String(sPhoneNumber)); |
except |
// This can tappen when the headset is active, so the line is busy |
result := -2; |
exit; |
end; |
result := 0; |
finally |
FreeAndNil(mTapiLine); |
end; |
end; |
{$ELSE} |
function MakeCallW(phoneNumber: PWideChar; deviceId: integer): integer; stdcall; |
var |
wst: WideString; |
ast: AnsiString; |
begin |
wst := WideString(phoneNumber); |
ast := AnsiString(wst); |
result := MakeCallA(PAnsiChar(ast), deviceId); |
end; |
{$ENDIF} |
|
exports |
Call name 'MakeCall', |
GetTapiDevices; |
MakeCallA, |
MakeCallW, |
GetTapiDevicesA, |
GetTapiDevicesW; |
|
begin |
end. |