Сабж Код (Text): var NeedBytes,dwError:integer; RasEntry: TRasEntry; RasDialParams:TRasDialParams; EntryName : String; begin EntryName := 'Мой конект'; NeedBytes:=0; HeapAlloc(GetProcessHeap, HEAP_ZERO_MEMORY, NeedBytes); RasEntry.dwSize := sizeof(TRasEntry); Fillchar(RasEntry, sizeof(TRasEntry), 0); with RasEntry do begin szDeviceType:= 'PPPoE'; // настройки соединения dwfOptions := RDEOPT_PreviewUserPw or RASEO_IpHeaderCompression or RASEO_ModemLights or RASEO_IpHeaderCompression; end; RasEntry.dwSize := sizeof(TRasEntry); dwError:=RasSetEntryPropertiesA( nil, PChar(EntryName), @RasEntry, sizeof(TRasEntry), nil, 0); // настройки логинов и паролей RasDialParams.dwSize := sizeof(TRasDialParams); StrPCopy(RasDialParams.szEntryName,EntryName); StrPCopy(RasDialParams.szUserName,'Васин логин'); StrPCopy(RasDialParams.szPassword,'Васин пароль'); RasSetEntryDialParams(nil, RasDialParams, False); end;
У меня Delfi нет... К тому же мне нужен файл именно для масм - а там заморочки с win32extra.inc в общем я переписал на масм все инклюды и секцию data. Код (Text): .386 .model flat,stdcall option casemap:none include kernel32.inc includelib kernel32 .lib include rasapi32.inc ncludelib rasapi32.lib include windows.inc .data NeedBytes dw 0 EntryName db "Connect",0 DeviceType db "PPPOE" RasEntry RASENTRY <> RasDialParams RASDIALPARAMS <> hHeap dd ? .code start: invoke GetProcessHeap invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,NeedBytes end start Дальше у меня ступор Подскажите хотя бы как на C будет выглядеть, дельфи вообще не знаю
int NeedBytes,dwError; TRasEntry RasEntry; // я так понимаю ТRasEntry толи внутр клас толи своя структура TRasDialParams RasDialParams; // то же char EntryName[200]; // ахз пусть с запасом void someshit() { lstrcpy(EntryName,"мой конект"); NeedBytes = 0; HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, NeedBytes); RasEntry.dwSize = sizeof(TRasEntry); memset(RasEntry, sizeof(TRasEntry), 0); lstrcpy(RasEntry.szDeviceType,"PPPoE"); // настройки соединения RasEntry.dwfOptions = RDEOPT_PreviewUserPw || RASEO_IpHeaderCompression || RASEO_ModemLights || RASEO_IpHeaderCompression; RasEntry.dwSize = sizeof(TRasEntry); dwError = RasSetEntryPropertiesA(NULL, EntryName, &RasEntry, sizeof(TRasEntry), NULL, 0); // настройки логинов и паролей RasDialParams.dwSize = sizeof(TRasDialParams); lstrcpy(RasDialParams.szEntryName,EntryName); lstrcpy(RasDialParams.szUserName,"Васин логин"); lstrcpy(RasDialParams.szPassword,"Васин пароль"); RasSetEntryDialParams(NULL, RasDialParams, false); } вроде так, наскока помню
Не, опять ничего не получается... Сравнил структуру RasEntry в MSDТ и в inc файле winextra.inc - не совпадают... Поправил - в отладчике все равно косяк с размером структуры - у меня RasEntryA весит 07BF. Еще бы знать скока надо... Код (Text): .386 .model flat,stdcall option casemap:none include rasapi32.inc includelib rasapi32.lib include windows.inc include shell32.inc includelib shell32.lib RASFP_Ppp equ 1 RASET_Broadband equ 5 .data szEntryName db "test",0 szDeviceType db "PPPoE",0 szLocalPhoneNumber db "Connect",0 szLogin db "testlogin",0 szPassword db "123456",0 RasEntry RASENTRY <0> RasDialParams RASDIALPARAMS <0> .code start: mov esi,offset szDeviceType mov edi,offset RasEntry.szDeviceType mov ecx,sizeof szDeviceType rep movsb mov RasEntry.dwType,RASET_Broadband mov RasEntry.dwfOptions,RASEO_PreviewUserPw OR RASEO_IpHeaderCompression OR RASEO_ModemLights OR RASEO_IpHeaderCompression mov RasEntry.dwSize,sizeof RASENTRY mov RasEntry.dwFramingProtocol,RASFP_Ppp invoke RasSetEntryProperties,NULL,ADDR szEntryName,ADDR RasEntry,sizeof RASENTRY,NULL,0 mov RasDialParams.dwSize,sizeof RASDIALPARAMS mov esi,offset szEntryName mov edi,offset RasDialParams.szEntryName mov ecx,sizeof szEntryName rep movsb mov esi,offset szLogin mov edi,offset RasDialParams.szUserName mov ecx,sizeof szLogin rep movsb mov esi,offset szPassword mov edi,offset RasDialParams.szPassword mov ecx,sizeof szPassword rep movsb invoke RasSetEntryDialParams,NULL,ADDR RasDialParams,1 end start Правленая структура: Код (Text): RASENTRYA STRUCT dwSize dd ? dwfOptions dd ? dwCountryID dd ? dwCountryCode dd ? szAreaCode db RAS_MaxAreaCode + 1 dup(?) szLocalPhoneNumber db RAS_MaxPhoneNumber + 1 dup(?) dwAlternateOffset dd ? ipaddr RASIPADDR <> ipaddrDns RASIPADDR <> ipaddrDnsAlt RASIPADDR <> ipaddrWins RASIPADDR <> ipaddrWinsAlt RASIPADDR <> dwFrameSize dd ? dwfNetProtocols dd ? dwFramingProtocol dd ? szScript db MAX_PATH dup(?) szAutodialDll db MAX_PATH dup(?) szAutodialFunc db MAX_PATH dup(?) szDeviceType db RAS_MaxDeviceType + 1 dup(?) szDeviceName db RAS_MaxDeviceName + 1 dup(?) szX25PadType db RAS_MaxPadType + 1 dup(?) szX25Address db RAS_MaxX25Address + 1 dup(?) szX25Facilities db RAS_MaxFacilities + 1 dup(?) szX25UserData db RAS_MaxUserData + 1 dup(?) dwChannels dd ? dwReserved1 dd ? dwReserved2 dd ? dwSubEntries dd ? dwDialMode dd ? dwDialExtraPercent dd ? dwDialExtraSampleSeconds dd ? dwHangUpExtraPercent dd ? dwHangUpExtraSampleSeconds dd ? dwIdleDisconnectSeconds dd ? dwType dd ? dwEncryptionType dd ? dwCustomAuthKey dd ? guidId GUID <> szCustomDialDll db MAX_PATH dup (?) dwVpnStrategy dd ? dwfOptions2 dd ? dwfOptions3 dd ? szDnsSuffix db RAS_MaxDnsSuffix dup (?) dwTcpWindowSize dd ? szPrerequisitePbk db MAX_PATH dup (?) szPrerequisiteEntry db RAS_MaxEntryName + 1 dup (?) dwRedialCount dd ? dwRedialPause dd ? ipv6addrDns RASIPV6ADDR <> ipv6addrDnsAlt RASIPV6ADDR <> dwIPv4InterfaceMetric dd ? dwIPv6InterfaceMetric dd ? ipv6addr RASIPV6ADDR <> dwIPv6PrefixLength dd ? dwNetworkOutageTime dd ? RASENTRYA ENDS Где косяк?