ممنون راه خوب رو باید ادامه داد.
اصلا مودم رو فراموش کن. من خودم هم با اکتیو ایکس کار کردم مشکل می شه باهاش کار کن. از گفتن Listenstart منظورم این بود که اون دوتا رویداد در این زمان شروع می شود. نه اینکه از اون استفاده کنیم. توجه کن در زمانی که ارتباط قطع است از این فانکشنها استفاده کنید. مانند زمانی که شما می خواهید پیغامی را ضبط کنید. معلوم پسر وقتی پورت مودم بازه نمی تونی اونو در اختیار بگیری ;)
شرمنده CallConsulation در زمان کال ویتینگ و در زمان انتقال تماس به خط دیگر فعال می شود . مانند وقتی که منشی ارتباط برقرار می کند. شب بود قاطی کردیم:31: . همون توضیحات ولی با CallSate
و اما بعد.
procedure TMainForm1.Main_KDPhone1CallState(Sender: TObject;
CallState: TCallState; Param1, Param2, CallHandle: Integer);
begin
Case CallState Of
csOffering : Begin
Memo_Message (Get_Message_String ( 2 )) ;
End ;
csConnected: Begin
FirstSilence := true;
StopPlay := true;
Main_Form . CallPhoneHandle[1,1] := Main_KDPhone1 . CallHandle;
StatusRec := -1;
Main_KDPhone1 . OnDigitDetected := Main_KDPhone1DigitDetected ;
Is_Digit_Detected := False ;
Memo_Message (Get_Message_String ( 3 )) ;
ConnectionTimeLimitationDetector . Enabled := True ;
//1 If Main_KDVoice1 . PlayingState <> psIdle Then Main_KDVoice1 . PlayStop ;
//1 If Main_KDVoice1 . RecordingState <> rsIdle Then Main_KDVoice1 . RecStop ;
Begin_Of_Connection := True ;
TransferTimer . Enabled := False ;
Show_KDTele_Error_Messages(Main_KDPhone1 . ExtDevAux .SetMicSpeakerState( msMicOnSpeakerOn )) ;
End ;
csDisconnected: begin
StatusRec := -1;
Timer . Enabled := False ;
Is_Digit_Detected := False ;
Main_KDPhone1 . OnDigitDetected := Main_KDPhone1DigitDetected ;
ConnectionTimeLimitationDetector . Enabled := False ;
FirstSilence := false;
SilenceDetector . Enabled := False ;
RecordingTimer . Enabled := False ;
Memo_Message (Get_Message_String ( 4 )) ;
ConnectionTimeLimitationDetector . Enabled := False ;
//1 If Main_KDVoice1 . PlayingState <> psIdle Then Main_KDVoice1 . PlayStop ;
//1 If Main_KDVoice1 . RecordingState <> rsIdle Then Main_KDVoice1 . RecStop ;
TransferTimer . Enabled := False ;
// Show_KDTele_Error_Messages ( Main_KDPhone1.Hangup) ;
//Show_KDTele_Error_Messages ( Main_KDPhone1.LineActive(0,False)) ;
//Show_KDTele_Error_Messages ( Main_KDPhone1.LineActive(0,TRUE));
Show_KDTele_Error_Messages(Main_KDPhone1 . ExtDevAux .SetMicSpeakerState( msMicOffSpeakerOff )) ;
end;
csRemotePartyDisconnected :
begin
Memo_Message (Get_Message_String ( 5 ) );
Main_KDPhone1.Hangup ;
//Show_KDTele_Error_Messages ( Main_KDPhone1.LineActive(0,False)) ;
//Show_KDTele_Error_Messages ( Main_KDPhone1.LineActive(0,TRUE));
end;
csError : begin
Memo_Message (Get_Message_String ( 6 ) );
Show_KDTele_Error_Messages(Param1);
Show_KDTele_Error_Messages(Main_KDPhone1.Hangup);
end;
csBusy : begin
Memo_Message (Get_Message_String ( 7 ) );
Main_KDPhone1.Hangup ;
end;
csRing : begin
Memo_Message (Get_Message_String ( 8 ) );
If Param1 = Main_Form . CallPhoneHandle[1,2] then Main_KDPhone1.Answer(param2);
end;
End ;
end;