Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

ras.h question

Posted on 2004-08-18
3
Medium Priority
?
319 Views
Last Modified: 2013-11-17
i am making a dialer i want it to run on all windows platforms 98, 2000, XP
this is part of code

#pragma warn -dup
#define WINVER 0x400
#include <ras.h>

    char newentryname[100];
    DWORD entrysize, configsize, error;
    BYTE configbuffer[512];
    bool password;
    char buffer[512];

    configsize = sizeof(configbuffer);
    RASENTRY entry;

    String name = (String)entryname;
    strcpy(newentryname, name.c_str());

    memset(&entry, 0, sizeof(RASENTRY));
    entrysize = sizeof(RASENTRY);
    entry.dwSize = sizeof(RASENTRY);

        int version1=GetOSVersion();
        if (version1==1)
        {
                entry.dwfOptions=8984;
        }
        else if(version1==2)
        {
                //entry.dwfOptions=1024197400;
                entry.dwfOptions=RASEO_SwCompression|RASEO_IpHeaderCompression|RASEO_RemoteDefaultGateway|RASEO_ModemLights|0x01000000|0x04000000;
                  //entry.dwType=RASET_Phone;
        }
        else if(version1==3)
        {
                entry.dwfOptions=RASEO_SwCompression|RASEO_IpHeaderCompression|RASEO_RemoteDefaultGateway|RASEO_ModemLights;
        }
        else {ShowMessage("Can not detect OS Version");}
       
                String strDeviceType=GetDeviceType();
                String strDeviceName=GetDeviceName();
                   strcpy(entry.szDeviceType, strDeviceType.c_str());
            strcpy(entry.szDeviceName, strDeviceName.c_str());
              strcpy(entry.szLocalPhoneNumber, "07777007");
              strcpy(entry.szDeviceType,RASDT_Modem);
              entry.dwFramingProtocol=RASFP_Ppp;
                entry.dwfNetProtocols=RASNP_Ip;

        error = RasSetEntryProperties (NULL, newentryname,&entry, entrysize, configbuffer, configsize);
    if(error)
    {
        RasGetErrorString(error, buffer, sizeof(buffer));
        ShowMessage(buffer);
        return false;
    }
    return true;

but this only work on win 98 when i try to put some other properties for win 2000 the compiler stops with error message it does not understand these properties unless i change
#define WINVER 0x400
with
#define WINVER 0x500

but i want one program to run on all platforms
and when i ignore this line and dont pass it an error message is generated saying an incorrect structure size , ithink it is the RASENTRY structure
what is the solution for that problem
thx
0
Comment
Question by:tamour2004
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 9

Accepted Solution

by:
Cayce earned 1000 total points
ID: 11834156
You need to work with WINVER 0x400 for it to work on all versions. Or you can create a different DLL for each windows version and compile it with different WINVER values and options.

Something like this (pseudo code):

  ver = GetWindowsVersion();
  switch(ver)
  {
  case Win95: hLib = LoadLibrary("dialer95.dll"); break;
  case Win98: hLib = LoadLibrary("dialer98.dll"); break;
  case Win2k: hLib = LoadLibrary("dialer2k.dll"); break;
  case WinXP: hLib = LoadLibrary("dialerxp.dll"); break;
  }
  // Now load the address procs from hLib and call the procedures
  // each dll would be compiled with different options (WINVER for instance)
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question