当前位置:编程学习 > C/C++ >>

用VC++实现上网拨号功能

答案:

     现在的时代是网络的时代,网络应用程序的应用越来越广泛,在自己设计的应用程序中实现直接拨号上网,给应用程序的使用者带了很多方便,本应用程序就是在中文windows95操作系统上,用VC++5.0开发的实现拨号上网的一个小程序,希望能对大家有所帮助。下面是实现这一功能的源程序:
      首先创建一个以对话框为主的VC++工程,以下是本应用程序用的对话框(图略)

      然后在对话框这个类的头文件中加入几个新定义函数:
public:
      void SetupDialupCombo(void);
protected:
      //{{AFX_MSG(CDialprocDlg)
            virtual BOOL OnInitDialog();
            afx_msg void OnConnectbutton();
            //响应对话框中BUTTON按钮“接续”的事件
            afx_msg void OnSelchangeDialupCombo();
            //响应对话中COMBO控件选择改变的事件
      //}}AFX_MSG

      以下是在对话框这个类的源文件中加入新定义函数的功能:别忘了在头文件中加入#include < ras.h >这个头文件,以及在Settings中的Link中的LibraryModules加入rasapi32.lib.

void CDialprocDlg::SetupDialupCombo()
{
      m_DialCombo.ResetContent();
      //m_DialCombo是对话框中Combox控件的命名
      DWORD n;
      DWORD dwSize=0;

      //枚举出本地电脑中的所有拨号连接。
      DWORD ret=RasEnumEntries
      (NULL, NULL, NULL, &dwSize,&n);
      n=dwSize/sizeof(RASENTRYNAME);
      RASENTRYNAME *entry=new RASENTRYNAME[n];
      if (entry)
      {
            entry[0].dwSize=sizeof(RASENTRYNAME);
            DWORD ret=RasEnumEntries(NULL, NULL, entry, &dwSize,&n);
            for (DWORD i=0;i< n;i++)
            {
                  m_DialCombo.AddString(entry[i].szEntryName);
            }
            delete[] entry;
      }
}

void CDialprocDlg::OnConnectbutton()
{
      CWaitCursor wait;
      RASDIALPARAMS params;
      memset(?ms, '\0', sizeof(params));
      params.dwSize=sizeof(params);
      m_DialCombo.GetWindowText(params.szEntryName,sizeof(params.szEntryName)-1);
      strcpy(params.szPhoneNumber,"");
      m_UserId.GetWindowText(params.szUserName, sizeof(params.szUserName)-1);
      m_PasswordEdit.GetWindowText(params.szPassword,sizeof(params.szPassword)-1);
      //m_UserId 和m_PasswordEdit是对话框中两个Edit控件的命名
      HRASCONN handle;
      //指定的拨号连接。
      if (RasDial(NULL, NULL, ?ms, NULL, NULL, &handle)==0)
      {
            MessageBox("已联接,如果按“确定”就会切断电话");
      }
      else
      {
            MessageBox("正在拨打的计算机没有应答,稍后请再试");
      }
      wait.Restore();
      RasHangUp(handle);
}

void CDialprocDlg::OnSelchangeDialupCombo()
{
      RASDIALPARAMS params;
      memset(?ms, '\0',sizeof(params));
      params.dwSize=sizeof(RASDIALPARAMS);
      int sel=m_DialCombo.GetCurSel();
      if (sel >=0)
      {
            m_DialCombo.GetLBText(sel, params.szEntryName); TRACE("%s\n",params.szEntryName);
      BOOL p;
      RasGetEntryDialParams(NULL, ?ms, &p);
      m_UserId.SetWindowText(params.szUserName);
      m_PasswordEdit.SetWindowText(params.szPassword);
      }
}

BOOL CDialprocDlg::OnInitDialog()
{
      CDialog::OnInitDialog();
      SetupDialupCombo();
      return TRUE; // return TRUE
      unless you set the focus to a control
}
 
      这个应用程序在中文95操作系统下,在VC++5.0上开发、编译、运行通过的。 

上一个:网络游戏外挂制作
下一个:多线程技术在VC++串口通信程序中的应用研究

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,