紧急求解!!!(300分)

  • 主题发起人 主题发起人 黄广平
  • 开始时间 开始时间

黄广平

Unregistered / Unconfirmed
GUEST, unregistred user!
有下面几个问题征解:
1.在用RASAPI32.DLL中的函数function RasDial(
pRasDialExtensions : LPRASDIALEXTENSIONS;//在WIN9X下无用,可设置为NIL
lpszPhonebook : PChar;//电话本名称,在Win9X下无作用,可为空字符串
lpRasDialParams : LPRASDIALPARAMS;//拨号参数
dwNotifierType : DWORD;//消息通知方式
chandle : TRasDialFunc;//消息处理事件
var lphRasConn : DWORD//返回的成功连接的连接句柄
) : DWORD; stdcall;
function RasDial;external RasApiDll name 'RasDialA';
编拨号时如何设置使其异步拨号!TRasDialFunc类型的定义.
2.如何使MODEM在没有信息传时发出一个通知,再次有信息传送时再发一个通知.
为了时现在几分钟内没有信息传送就断开连接,各位大虾有什么简单的发法实现
这个功能,提供源程序或给出思路.
3.使用RASAPI32.DLL中的函数如何保存密码,有其它更可行的方法,欢迎提供.
4.谁有TAPI.DLL中函数的中文说明,不要WIN32 SDK中的帮助(如果是中文也可以).
谁能将关于TAPI编程的头文件tapi.pas发给我.
5.有人做过FAX程序吗?请发个源程序给我,最好能有详细的注释.

以上五个问题如有人能在今下午之前回答出来并且够详细,还可以加分.
ministudio@21cn.com
ministudio@163.net
 
问题很难还是分太少,
如果能解决问题可以加
每个100问题分到200。
请各位大虾帮帮忙
江湖救急!!
 
黄:你的心情我理解,但是我觉得这么问不是办法 :-(
 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=328477

里面有几个问题的答案,比如保存密码,(他问的恰好是不保存密码,哈哈:-))
 
agree wjiachun,把问题分开来问吧,每个问题叙述的详细一些.这么多让人看了头蒙.
 
2. 比较简单, 设置一个全局变量或对象成员变量, 在modem发送数据的子函数内将该变量
置0, 而在获取modem工作状态或获取该变量值的函数中自动加上一个增量. 比如:

type TmodemFunc = class(tobject);
idletime:integer;
...
public
...
procedure sendmsg(msg:pchar;msglen:integer);
function getidletime:integer;
end;


procedure TModemFunc.sendmsg(msg:pchar;msglen:integer);
begin
...
{when send ok here, reset idletime to 0}
idletime:=0;
end;

function TModemFunc.GetIdleTime:integer;
begin
{increase idletime every call this function for timeout support}
idletime:=idletime+1000;
{add 1000 because sleep(1000) in call program}
result:=idletime;
end;

调用时:

var mf:tmodemfunc;

...
while (mf.getidletime<60*1000) do
{60 seconds, times 1000 because sleep(1000) }
begin
sleep(1000);
application.processmessages;
end;
{no data during 60 seconds, hung-up}
...
mf.free;
 
编拨号时如何设置使其异步拨号!TRasDialFunc类型的定义.

我使用BCB5.0編寫,只提供思路,供您參考:
m_ConnectionHandle = NULL; //連接句柄
DWORD dwError = RasDial(NULL, lpszPhoneBook, &amp;dialParams, 1,
rasCallback1, &amp;m_ConnectionHandle);
Timer1->Enabled=true;
//實現同步撥號將回調函數設為null,否則為異步撥號,設為同rasCallback1對應的值
使用TIMER來判斷是否已連上線
處理TimerTimer()
//捕捉撥號時的信息
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
BOOL bLoop = TRUE;
BOOL bConnected = FALSE; //是否已連上線
bLoop=!(GetRasStatusString(m_strStatus, bConnected));

if (m_strStatus!=Label5->Caption)
{
Label5->Caption=m_strStatus; //顯示回調提示
Label5->Refresh();
}
if(m_dwError != 0)
{
Timer1->Enabled=false;
Button2Click(NULL); //撥號未成功,須關閉Com2端口
Label5->Caption="錯誤:"+IntToStr(m_dwError);
return;
}

if(bConnected) //若未連上,則重新判斷
{ Timer1->Enabled=false;
bLoop=FALSE;
return ;}
else
bLoop=TRUE;
}

 
多人接受答案了。
 
后退
顶部