检查你的Dll代码。看看是不是你要求它这么做了:)

解决方案 »

  1.   

    TO:winxieddd(一剑飘香(找工作))    没有啊,我Review了好多遍了,郁闷中。:(
      

  2.   

    这是我的Dll中的的拨号函数,可以拨号成功。
    #define WINVER 0x0500
    #define UNICODE#define RasDll extern "C" __declspec(dllexport)#include "windows.h"
    #include "ras.h"bool ConnectionIsActive(LPCWSTR entryName);RasDll bool ModemDialUp(LPCWSTR entryName, LPCWSTR userName, LPCWSTR password, LPCWSTR phoneNumber)
    {
    DWORD ret = 0;
    int dFlag = true; HRASCONN hrasConn = NULL; RASDIALPARAMS rasDialParams;
    ZeroMemory(&rasDialParams, sizeof(RASDIALPARAMS));
    rasDialParams.dwSize = sizeof(RASDIALPARAMS);
    wcscpy(rasDialParams.szEntryName, entryName); RasGetEntryDialParams(NULL, &rasDialParams, &dFlag); wcscpy(rasDialParams.szPassword, password);
    wcscpy(rasDialParams.szPhoneNumber, phoneNumber);
    wcscpy(rasDialParams.szUserName, userName); if ((ret = RasDial(NULL, NULL, &rasDialParams, 0, NULL, &hrasConn)) == 0)
    {
    return true;
    }
    else
    {
    if (hrasConn != 0)
    {
    RasHangUp(hrasConn);
    hrasConn = NULL;
    }
    return false;
    }
    }
      

  3.   

    下面是C#中的P/Invoke代码:     namespace modemTest
    {
    public class Modem
    {
    [DllImport(@"e:\modemTest\modemTest\RasDll.dll", CharSet =    CharSet.Auto, SetLastError = true)]
    public static extern uint ModemDialUp(string entryName, string userName, string password, string phoneNumber); [DllImport(@"e:\modemTest\modemTest\RasDll.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool ModemHangUp(string entryName);
    }
    }
      

  4.   

    下面的是Button1的拨号测试代码:   private void button1_Click(object sender, System.EventArgs e)
       {
    uint i; Modem.ModemDialUp("a", "163", "163", "9,,,16300");
       }