动态可以用CreateFile加载,然后用DeviceIoControl进行通信静态要该注册表,让系统重新启动的时候才能加载。

解决方案 »

  1.   

    bool InstallVxD(char *szVxdName)
    {
    HANDLE h;
    h = CreateFile(szVxdName,0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0); 
    hVxD = h;
        if( h != INVALID_HANDLE_VALUE )
    return true;
    return false;
    }
    以上是VC代码,很容易改成VB的。
    szVxdname="\\.\"+你指定的VXD。注意前面的"\\.\"是必须的!
      

  2.   

    那这个DeviceIoControl函数怎么使用呢?
    最好用VB代码演示 我没有学过VC啊
      

  3.   

    BOOL DeviceIoControl(
      HANDLE hDevice,              // 用CreateFile()得到的句柄
      DWORD dwIoControlCode,       // VXD定义的通信代码
      LPVOID lpInBuffer,           // 输入数据
      DWORD nInBufferSize,         // 输入数据大小
      LPVOID lpOutBuffer,          // 输出数据
      DWORD nOutBufferSize,        // 输出数据大小
      LPDWORD lpBytesReturned,     // 得到的多少输出数据
      LPOVERLAPPED lpOverlapped    // 设置为NULL好了
    );
    VC代码转VB很容易的,你可以试试dim inbuf as string
    dim outbuf as string
    dim inlen as long
    dim outlen as long
    dim rout as long
    inbuf="数据"
    outbuf=space(1024)'必须足够大
    DeviceIoControl hvxd,你知道的VXD操作代码,inbuf,lstrlen(inbuf),outbuf,lstrlen(outbuf), rout,0