Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Формат переменной

290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Добрый день!
Есть код создания подключения VPN логин должен браться из Edit так же как и пароль но не принимает не могу понять в какой формат нужно перевести

вот код:

Код:
RASENTRY rasEntry;
RASDIALPARAMS res;
HRASCONN hRasConn = NULL;


    memset(&rasEntry, 0, sizeof(RASENTRY));
    memset(&res, 0, sizeof(RASDIALPARAMS));
    res.dwSize = sizeof(res);
    rasEntry.dwSize = sizeof(rasEntry);
    rasEntry.dwfOptions = RASEO_PreviewUserPw | RASEO_ShowDialingProgress | RASEO_Custom | RASEO_RequireMsCHAP2 | RASEO_RemoteDefaultGateway ;
    rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP| RASEO2_ReconnectIfDropped | RASEO2_Internet;
    rasEntry.dwfNetProtocols = RASNP_Ip;
        rasEntry.dwRedialCount=99999;
        rasEntry.dwRedialPause=3;
        rasEntry.dwEncryptionType=ET_None;
        rasEntry.dwType=RASET_Vpn;
        rasEntry.dwVpnStrategy=VS_PptpFirst;



    strcpy(rasEntry.szLocalPhoneNumber, TEXT("195.66.60.253"));
    strcpy(rasEntry.szDeviceType, RASDT_Vpn);
    strcpy(rasEntry.szDeviceName, TEXT("over3g"));
    strcpy(res.szEntryName, TEXT("over3g"));
    strcpy(res.szUserName, TEXT(Edit1->Text));
    strcpy(res.szPassword, TEXT("Ytrewq32111"));
    BOOL PwdDetected = false;
Конкретно место где указан Edit1->Text,
Вот что пишет билдер:

[BCC32 Error] Unit1.cpp(46): E2034 Cannot convert 'UnicodeString' to 'const char *'
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(46): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'UnicodeString')
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Warning] Unit1.cpp(72): W8004 'PwdDetected' is assigned a value that is never used
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
Цитата: Patr1ot
Цитата: arrjj
ах да, они ж там мудрили с c_str() при переходе на юникод тогда так
 
Код:
strcpy(res.szUserName,Edit1->Text.t_str());


Все равно ошибку пишет :)
[BCC32 Error] Unit1.cpp(48): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)


Бле ну тогда так:

 
Код:
strcpy(res.szUserName,AnsiString(Edit1->Text).c_str());
Если и это не поможет то лезь в справку по своей версии билдера, а то у embarcadero черт ноги поломает в сравнении версий
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
Код:
#include <Ras.h>

#pragma comment(lib, “rasapi32.lib”)
void createvpn(const wchar_t* name, const wchar_t* server, const wchar_t* username,  const wchar_t* password, const wchar_t* psk)
{
    DWORD size = 0;
    RasGetEntryProperties(NULL, L“”, NULL, &size, NULL, NULL);
    LPRASENTRY pras = (LPRASENTRY)malloc(size);
    memset(pras, 0, size);
    pras->dwSize = size;
    pras->dwType = RASET_Vpn;
    pras->dwRedialCount = 1;
    pras->dwRedialPause = 60;
    pras->dwfNetProtocols = RASNP_Ip;
    pras->dwEncryptionType = ET_Optional;
    wcscpy_s(pras->szLocalPhoneNumber, server);
    wcscpy_s(pras->szDeviceType, RASDT_Vpn);
    pras->dwfOptions = RASEO_RemoteDefaultGateway;
    pras->dwVpnStrategy = VS_L2tpOnly;
    pras->dwfOptions |= RASEO_RequireEncryptedPw;
    pras->dwfOptions2 |= RASEO2_UsePreSharedKey;
    RasSetEntryProperties(NULL, name, pras, pras->dwSize, NULL, 0);
    RASCREDENTIALS ras_cre = {0};
    ras_cre.dwSize = sizeof(ras_cre);
    ras_cre.dwMask = RASCM_UserName | RASCM_Password;
    wcscpy_s(ras_cre.szUserName, username);
    wcscpy_s(ras_cre.szPassword, password);
    RasSetCredentials(NULL, name, &ras_cre, FALSE);
    RASCREDENTIALS ras_cre_psk = {0};
    ras_cre_psk.dwSize = sizeof(ras_cre_psk);
    ras_cre_psk.dwMask = RASCM_PreSharedKey;
    wcscpy_s(ras_cre_psk.szPassword, psk);
    RasSetCredentials(NULL, name, &ras_cre_psk, FALSE);
    free(pras);
}
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
.c_str()
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
.c_str()


не принимает.

277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
 
Код:
strcpy(res.szUserName,Edit1->Text.c_str());
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
то же делал ошибку выдает и все тут
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Только уже вот такую ошибку выдает

[BCC32 Error] Unit1.cpp(48): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)
[BCC32 Error] Unit1.cpp(48): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'wchar_t *')
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
ах да, они ж там мудрили с c_str() при переходе на юникод тогда так
 
Код:
strcpy(res.szUserName,Edit1->Text.t_str());
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
ах да, они ж там мудрили с c_str() при переходе на юникод тогда так
 
Код:
strcpy(res.szUserName,Edit1->Text.t_str());


Все равно ошибку пишет :)
[BCC32 Error] Unit1.cpp(48): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)

290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
Цитата: Patr1ot
Цитата: arrjj
ах да, они ж там мудрили с c_str() при переходе на юникод тогда так
 
Код:
strcpy(res.szUserName,Edit1->Text.t_str());


Все равно ошибку пишет :)
[BCC32 Error] Unit1.cpp(48): E2034 Cannot convert 'wchar_t *' to 'const char *'
Full parser context
Unit1.cpp(20): parsing: void _fastcall TForm1::Button1Click(TObject *)


Бле ну тогда так:

 
Код:
strcpy(res.szUserName,AnsiString(Edit1->Text).c_str());
Если и это не поможет то лезь в справку по своей версии билдера, а то у embarcadero черт ноги поломает в сравнении версий




О чудо))) сканало, у меня 2010 билдер.

Слушай а ты не знаешь как указать ключ для проверки подлиности подключения L2tp?
В свойствах VPN вкладка безопастность , потом кнопка вверху дополнительные параметры и там можно указать ключ, весь msdn уже перерыл, не могу найти этот параметр

290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Это для IP sec VPN
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
dwfOptions2 RASEO2_UsePreSharedKey RASCREDENTIALS
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
dwfOptions2 RASEO2_UsePreSharedKey RASCREDENTIALS


Да, уже нашел, но не могу понять как занести данные нашел что через RASCM_PreSharedKey
В общем заполнил структуру RASCREDENTIALS, параметр RASCM_PreSharedKey находится в dwMask, как его указать?

Вот код:


Код:
RASENTRY rasEntry;
RASDIALPARAMS res;
RASCREDENTIALSA rec;
HRASCONN hRasConn = NULL;


    memset(&rasEntry, 0, sizeof(RASENTRY));
    memset(&res, 0, sizeof(RASDIALPARAMS));
    memset(&rec, 0, sizeof(RASCREDENTIALSA));
    rec.dwSize = sizeof(rec);
    res.dwSize = sizeof(res);
    rasEntry.dwSize = sizeof(rasEntry);
    rasEntry.dwfOptions = RASEO_PreviewUserPw | RASEO_ShowDialingProgress | RASEO_Custom | RASEO_RequireMsCHAP2 | RASEO_RemoteDefaultGateway |RASEO_RequireMsEncryptedPw ;
    rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP| RASEO2_ReconnectIfDropped | RASEO2_UsePreSharedKey | RASEO2_Internet;

    rasEntry.dwfNetProtocols = RASNP_Ip;
        rasEntry.dwRedialCount=99999;
        rasEntry.dwRedialPause=3;
        rasEntry.dwEncryptionType=ET_Require;
        rasEntry.dwType=RASET_Vpn;
        rasEntry.dwVpnStrategy=VS_L2tpOnly;
        rec.dwMask=RASCM_Password;


    strcpy(rec.szPassword,TEXT("password"));
    strcpy(rasEntry.szLocalPhoneNumber, TEXT("over3g.ru"));
    strcpy(rasEntry.szDeviceType, RASDT_Vpn);
    strcpy(rasEntry.szDeviceName, TEXT("over3g"));
    strcpy(res.szEntryName, TEXT("over3g"));
    strcpy(res.szUserName, AnsiString(Edit1->Text).c_str());
    strcpy(res.szPassword, AnsiString(Edit2->Text).c_str());

    BOOL PwdDetected = false;









    if (RasSetEntryProperties(NULL, TEXT("over3g4"), &rasEntry, sizeof(rasEntry), NULL, 0))
    {
      MessageBox(0,"RasSetEntryProperties failed", 0,0);
   }
   else MessageBox(0,"Создано VPN соединение over3g","Ok",0);


   if (RasSetEntryDialParams(NULL,&res,false))
    {
      MessageBox(0,"RasSetEntryDialParams", 0,0);
   }
   else MessageBox(0,"Отредактировано","Ok",0);

   RasDial(0, 0, &res, NULL, NULL, &hRasConn);
Указал вот так, не знаю правильно нет, но ключ не появляется в VPN
rec.dwMask=RASCM_Password;
strcpy(rec.szPassword,TEXT("password"));
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
Цитата: Patr1ot

Указал вот так, не знаю правильно нет, но ключ не появляется в VPN
rec.dwMask=RASCM_Password;
strcpy(rec.szPassword,TEXT("password"));


 
Код:
rec.dwMask=RASCM_PreSharedKey;
strcpy(rec.szPassword,TEXT("password"));
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
Цитата: Patr1ot

Указал вот так, не знаю правильно нет, но ключ не появляется в VPN
rec.dwMask=RASCM_Password;
strcpy(rec.szPassword,TEXT("password"));


 
Код:
rec.dwMask=RASCM_PreSharedKey;
strcpy(rec.szPassword,TEXT("password"));



Пробовал не канает, не задается пасс. Если выбираем в качестве маски RASCM_PreSharedKey то параметры RASCREDENTIALSA rec будут принадлежать опции RASCM_PreSharedKey?

277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
RasSetCredentials и туда эту структуру
290
12 февраля 2013 года
Patr1ot
458 / / 09.02.2008
Цитата: arrjj
RasSetCredentials и туда эту структуру




Ок, Сделал, но он гад все равно не добавляется(((

Код:
RASENTRY rasEntry;
RASDIALPARAMS res;
RASCREDENTIALSA rec;
HRASCONN hRasConn = NULL;


    memset(&rasEntry, 0, sizeof(RASENTRY));
    memset(&res, 0, sizeof(RASDIALPARAMS));
    memset(&rec, 0, sizeof(RASCREDENTIALSA));
    rec.dwSize = sizeof(rec);
    res.dwSize = sizeof(res);
    rasEntry.dwSize = sizeof(rasEntry);
    rasEntry.dwfOptions = RASEO_PreviewUserPw | RASEO_ShowDialingProgress | RASEO_Custom | RASEO_RequireMsCHAP2 | RASEO_RemoteDefaultGateway |RASEO_RequireMsEncryptedPw ;
    rasEntry.dwfOptions2=RASEO2_DisableNbtOverIP| RASEO2_ReconnectIfDropped | RASEO2_UsePreSharedKey | RASEO2_Internet;

    rasEntry.dwfNetProtocols = RASNP_Ip;
        rasEntry.dwRedialCount=99999;
        rasEntry.dwRedialPause=3;
        rasEntry.dwEncryptionType=ET_Require;
        rasEntry.dwType=RASET_Vpn;
        rasEntry.dwVpnStrategy=VS_L2tpOnly;
        rec.dwMask=RASCM_DDMPreSharedKey;

    strcpy(rec.szPassword, TEXT("password"));
    strcpy(rasEntry.szLocalPhoneNumber, TEXT("over3g.ru"));
    strcpy(rasEntry.szDeviceType, RASDT_Vpn);
    strcpy(rasEntry.szDeviceName, TEXT("over3g"));
    strcpy(res.szEntryName, TEXT("over3g"));
    strcpy(res.szUserName, AnsiString(Edit1->Text).c_str());
    strcpy(res.szPassword, AnsiString(Edit2->Text).c_str());

    BOOL PwdDetected = false;









    if (RasSetEntryProperties(NULL, TEXT("over3g4"), &rasEntry, sizeof(rasEntry), NULL, 0))
    {
      MessageBox(0,"RasSetEntryProperties failed", 0,0);
   }
   else MessageBox(0,"Создано VPN соединение over3g","Ok",0);



   if (RasSetEntryDialParams(NULL,&res,false))
    {
      MessageBox(0,"RasSetEntryDialParams", 0,0);
   }
   else MessageBox(0,"Отредактировано","Ok",0);



   if (RasSetCredentials(NULL,TEXT("Password"),&rec,false))
     {
         ShowMessage("ggg");
     }
     else
     {
         ShowMessage("Сканало!");
     }


   RasDial(0, 0, &res, NULL, NULL, &hRasConn);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог