none
RasDialDlg und Windows 7 klappt nicht (mit Windows XP geht's aber) RRS feed

  • Frage

  • Hallo,

    ich habe eine automatische Internet-Einwahl in meinem Programm mit RasDialDlg. Phonebook und Entry sind ok. Die zugehörige rasphone.pbk ist richtig konfiguriert und kann ich normal starten und mich dann verbinden.

    RasDialDlg funktioniert mit Windows XP, nicht aber unter Windows 7. Die rasphone.pbk wird nicht gestartet. Woran liegt das?

    Code:

    //    const char szPhonebook[]="C:\\Program Files(x86)\\MypProg\\rasphone.pbk";
    //    const char szEntry[]="T-Mobile UMTS/GPRS";

        RASDIALDLG RD;
        RD.dwSize=sizeof(RASDIALDLG);
        RD.hwndOwner=NULL;
        RD.dwFlags=0;
        RD.dwSubEntry=0;
        RD.reserved=0;
        RD.reserved2=0;

        BOOL nRet=RasDialDlg((LPTSTR)szPhonebook, (LPTSTR)szModemEntry, NULL, &RD);
        if ( FALSE == nRet)
        {
          DWORD dwErr = RD.dwError;
          CString strbuf;
          LPVOID lpMsgBuf;
          if (!FormatMessage(
            FORMAT_MESSAGE_ALLOCATE_BUFFER |
            FORMAT_MESSAGE_FROM_SYSTEM |
            FORMAT_MESSAGE_IGNORE_INSERTS,
            NULL,
            dwErr,
            MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
            (LPTSTR) &lpMsgBuf,
            0,
            NULL ))
          {
             // Handle the error.
             gbModemIstOnline = false;
             return false;
          }
          MyAfxMessageBox((LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION );
          LocalFree( lpMsgBuf );
          gbModemIstOnline = false;
          return false;
       }
       gbModemIstOnline = true;
       return true;

    Danke für Hilfe,

    Guido

     

    Freitag, 14. Oktober 2011 14:11

Antworten

  • Und was für ein Fehler passiert!

    Was sagt GetLastError?

    BTW: Ich halte es für übel, einen const String nach non-const zu casten, wenn RasDialDlg explizit beschreibare char arrays erwartet!
    Sollte Windows 7 also genau das machen und vorher aber testet, ob der Bereich schreibbar ist, dann schlägt Deine Funktion fehl.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert der Guido Freitag, 21. Oktober 2011 13:44
    Montag, 17. Oktober 2011 08:05
    Moderator

Alle Antworten

  • Und was für ein Fehler passiert!

    Was sagt GetLastError?

    BTW: Ich halte es für übel, einen const String nach non-const zu casten, wenn RasDialDlg explizit beschreibare char arrays erwartet!
    Sollte Windows 7 also genau das machen und vorher aber testet, ob der Bereich schreibbar ist, dann schlägt Deine Funktion fehl.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert der Guido Freitag, 21. Oktober 2011 13:44
    Montag, 17. Oktober 2011 08:05
    Moderator
  • Windows 7 ist restriktiver als der schlechte Code für XP. Danke für den Hinweis.

    Guido

    Freitag, 21. Oktober 2011 13:45