还是关于RAS拨号的问题,请给出详细了例程(因为我是菜鸟)(50分)

  • 主题发起人 主题发起人 ymf
  • 开始时间 开始时间
Y

ymf

Unregistered / Unconfirmed
GUEST, unregistred user!
请给个用RAS拨号、挂断的详细例程,分不够的话可以加
 
以下是本人以前用 VC++ 做成功后总结的文档,我现在看也没感觉。
有兴趣可以研究一下:

下面以第一种回调函数的方式给出程序代码,但为了在窗口中能处理
事件状态的改变,本人自定义了一个消息WM_STATE_CHANGE。当回调函数
被通知状态改变时,给主窗口发送自定义消息。当然回调函数直接可以
对事件进行处理。本示例是基于对话框的应用程序,下面给出了"拔号"
按钮命令处理函数、回调函数及自定义消息处理函数。

#define WM_STATE_CHANGE WM_USER +101
ON_MESSAGE(WM_STATE_CHANGE,OnStateChange)
afx_msg LRESULT OnStateChange(WPARAM wParam,LPARAM lParam);

VOID WINAPI RasDialFunc(UINT unMsg,RASCONNSTATE
rasconnstate, DWORD dwError)
{
AfxGetMainWnd ()->PostMessage(WM_STATE_CHANGE
,(WPARAM)rasconnstate,(LPARAM)dwError);
}

void CProgDlg::OnButton3()
{
OnDis();//断开连接,其中应该有延时
RASDIALPARAMS lps;
HRASCONN lph ;
RASCONNSTATUS lpt;
memset (&lps,0,sizeof(RASDIALPARAMS));
memset (&lpt,0,sizeof(RASCONNSTATUS));
lps.dwSize=sizeof(RASDIALPARAMS);
strcpy(lps.szPhoneNumber,"990");
strcpy(lps.szUserName,"990");
strcpy(lps.szPassword,"990");
lpt.dwSize=sizeof(RASCONNSTATUS);
DWORD d=RasDial(NULL,NULL,&lps,
0,RasDialFunc,&lph);
if(d)
{
CString s;
RasGetConnectStatus(lph,&lpt);
s.Format ("Error Code=%d %d %s: %s,%d",d,lpt.dwError,
lpt.szDeviceType,lpt.szDeviceName,WM_RASDIALEVENT);
MessageBox(s);
}
}

LRESULT CProgDlg::OnStateChange(WPARAM wParam,LPARAM lParam)
{
CStatic *d=(CStatic *)GetDlgItem (IDC_STATIC1);
CString s;
char c[256];
c[0]=0;
RasGetErrorString ((UINT)lParam,c,255);
if (c[0]==0)strcpy(c,"正在拔号...");
s.Format ("State Code:%d/r/nMessage:%s",wParam,c);
d->SetWindowText (s);
return true;
}
 
上www.playicq.com下载
 
to jsxjd
能不能弄成Delphi的,C的看不懂
 
这是微的东东,VC++有专门的数据结构定义,但不其中涉及到
几个常量,我一时无法找到。所以只能给你上传这个,这是我
好几年前做的,有点忘了。

其实里面涉及到三个数据结构和一个回调函数。

 
我自己搞定了!!感谢大家的参与,见者有分
 
后退
顶部