Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | daniel-mar | 1 | library MakeCall; |
2 | |||
3 | uses |
||
4 | SysUtils, |
||
5 | hbTAPI; |
||
6 | |||
7 | {$R *.res} |
||
8 | |||
9 | function GetTapiDevices(buf: PAnsiChar): integer; stdcall; |
||
10 | var |
||
11 | mTapiLine: TTapiLine; |
||
12 | len: Integer; |
||
13 | s: string; |
||
14 | begin |
||
15 | mTapiLine := TTapiLine.Create(nil); |
||
16 | try |
||
17 | try |
||
18 | mTapiLine.Active := false; |
||
19 | s := mTapiLine.DeviceList.Text; |
||
20 | len := Length(s); |
||
21 | if buf <> nil then |
||
22 | begin |
||
23 | FillChar(buf^, len+1{NUL}, 0); |
||
24 | StrPCopy(buf, s); |
||
25 | result := 0; |
||
26 | end; |
||
27 | result := len+1{NUL}; |
||
28 | except |
||
29 | result := -1; |
||
30 | end; |
||
31 | finally |
||
32 | FreeAndNil(mTapiLine); |
||
33 | end; |
||
34 | end; |
||
35 | |||
36 | function Call(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall; |
||
37 | var |
||
38 | mTapiLine: TTapiLine; |
||
39 | begin |
||
40 | mTapiLine := TTapiLine.Create(nil); |
||
41 | try |
||
42 | mTapiLine.Active := false; |
||
43 | mTapiLine.CallParams.Flags := 0; |
||
44 | mTapiLine.DeviceID := deviceId; |
||
45 | mTapiLine.Active := true; |
||
46 | if not mTapiLine.Active then |
||
47 | begin |
||
48 | // Usually "TAPI device not available" |
||
49 | result := -1; |
||
50 | exit; |
||
51 | end; |
||
52 | try |
||
53 | mTapiLine.MakeCall(AnsiString(phoneNumber)); |
||
54 | except |
||
55 | // This can tappen when the headset is active, so the line is busy |
||
56 | result := -2; |
||
57 | exit; |
||
58 | end; |
||
59 | result := 0; |
||
60 | finally |
||
61 | FreeAndNil(mTapiLine); |
||
62 | end; |
||
63 | end; |
||
64 | |||
65 | exports |
||
66 | Call name 'MakeCall', |
||
67 | GetTapiDevices; |
||
68 | |||
69 | begin |
||
70 | end. |