Hej, Lösningen var att läsa API dokumentationen lite bättre, 10 timmars felsökande gjorde susen. Varför läsa dokumentation när man har en hel dags hackande att njuta av?rasapi32.dll skapar entrys som försvinner
Har suttit å försökt få till att mitt program skall skapa ras-anslutningar vid körning. Detta skall fungera på w2k /XP.
Jag använder API:erna:
RasValidateEntryName för att kontrollera att EntryNamnet är korrekt
RasSetEntryProperties för att sätta inställningar till min nya anslutning.
Allt ger resultkoden ERROR_SUCCESS (H0&) viket är bra, anslutningen skapas... men ett problem. När jag kör en refresh på "Fjärranslutnings-fönstret" så försvinner ikonen för den nyskapade anslutningen!?! När jag sedan kör programmet ännu en gång med samma entryname så varnar RasValidateEntryName att entryn redan finns men jag kan ta mig tjyven inte se den i Windows. Den finns där, jag kan läsa inställningar från den, sätta inställningar i den men jag kan inte välja den från Windows grafiska gränssnitt.
Någon som stött på detta?
Bifogar koden som sköter det hela om nån kanske ser nåt fel direkt:
Public Sub rasCreateEntry(entryName As String) 'Creates a new RAS
Dim res As Long
Dim RasStruct As RASENTRY
Dim DialParams As RASDIALPARAMS
Dim rasEntrySize As Long
rasEntrySize = Len(RasStruct)
res = RasValidateEntryName(ByVal vbNull, ByVal entryName)
If res = ERROR_ALREADY_EXISTS Then
MsgBox "The Entry Already exists"
End If
If res = ERROR_INVALID_NAME Then
MsgBox "The entry has an illegal name"
End If
RasStruct.dwSize = rasEntrySize
RasStruct.dwType = 1
RasStruct.szLocalPhoneNumber = "081111111" & Chr(0)
RasStruct.szDeviceName = frmMain.Combo2 & Chr(0)
RasStruct.szDeviceType = "modem" & Chr(0)
RasStruct.dwFramingProtocol = RASFP_PPP
RasStruct.dwfOptions = RASEO_PreviewUserPw + RASEO_IpHeaderCompression _
+ RASEO_RemoteDefaultGateway + RASEO_ModemLights _
+ RASEO_SwCompression + RASEO_ShowDialingProgress _
+ RASEO_PreviewPhoneNumber + RASEO_SharedPhoneNumbers _
+ RASEO_RequireMsEncryptedPw + RASEO_UseLogonCredentials _
+ RASEO_RequireEncryptedPw
RasStruct.dwfNetProtocols = RASNP_ip
res = RasSetEntryProperties(ByVal vbNull, ByVal entryName & Chr(0), RasStruct, ByVal rasEntrySize, ByVal 0&, ByVal 0&)
If res <> 0 Then
MsgBox "Fel när modemuppringning skulle förändras. Program avslutas!", vbCritical + vbOKOnly, "Programfel"
End
End If
End Sub
Denna kod skapar alltså utan problem en rasanslutning som sedan grafiskt försvinner efter en refresh av "Network and Dial-up connections"
/FreddeSv: rasapi32.dll skapar entrys som försvinner
Jag hade skrivit fel i API anropet. En pekare till en nollterminerad STRÄNG skulle anges jag hade...hmm...agivit nåt annat. Här är ett korrekt anrop.
(Förövrigt, är det nån som vill dölja en ras-anslutning från användaren så finns koden för detta i det ursprungliga inlägget :)))
res = RasSetEntryProperties(ByVal vbNullString, ByVal entryName & Chr(0), RasStruct, ByVal rasEntrySize, ByVal 0&, ByVal 0&)
/Fredde