#COMPILE EXE "c:\winnt\RASelect.exe" $DIM ALL 'versie 5: inlezen in omgekeerde volgorde. Laatst gebruikte komt nu bovenaan $INCLUDE "win32api.inc" $INCLUDE "ras_wrap.bas" $RESOURCE "RASelect.pbr" %MenuBreedte = 260 'buttongrootteX + 3*buttonspatie %RuimteTussenButtons= 24 %ButtonGrootteX = 100 %ButtonGrootteY = 20 %buttonspatie = 20 'ruimte horizontaal tussen button rijen en tussen de rand en buttons %MaxRASEntries = 20 %IDOffset = 300 'IDs van de buttons vanaf 300 .... %IDStop = 399 $Programma="RASelect v1.1a" GLOBAL hDlg AS LONG GLOBAL hRas AS LONG GLOBAL hVerbinden AS LONG GLOBAL IDRAS() AS LONG GLOBAL RASnaam() AS STRING '---------------------------------------------------- SUB Wacht(BYVAL TijdInMs AS LONG) LOCAL r AS LONG FOR r =1 TO TijdInMs/50 DIALOG DOEVENTS SLEEP(50) NEXT r END SUB '--------------------------------------------------- FUNCTION AfbrekenVerbinding() AS LONG DIM hRas AS LONG 'gestart met AFBREKEN op de commando lijn hRas = rsGetConnectionHandle(1) IF hRas = %False THEN MSGBOX "Fout ! ! ! (handle control failure)"+$CR+"(Is er wel een openstaande verbinding?)",,$Programma FUNCTION=0 ELSE rsHangupConnection hRas MSGBOX "Eén verbinding is afgebroken.",,$Programma FUNCTION=1 END IF END FUNCTION '--------------------------------------------------- FUNCTION Verbind(Keuze AS LONG) AS LONG DIALOG NEW hDlg,"Verbinden met : "+RASNaam(Keuze),,,300,100 TO hVerbinden CONTROL ADD LABEL, hVerbinden,0, "Openen verbinding . . . . ", 10,10,80,18 DIALOG SHOW MODELESS hVerbinden wacht 300 hRas = rsDialEntry(Keuze) IF hRas = %False THEN CONTROL ADD LABEL, hVerbinden,0, "Niet gelukt!", 10,40,180,50 DIALOG DOEVENTS BEEP wacht 3000 DIALOG END hVerbinden, 0 DIALOG SHOW STATE hDlg,%SW_SHOW FUNCTION=0 ELSE CONTROL ADD LABEL, hVerbinden,0, "U bent verbonden met "+RASNaam(Keuze), 10,40,180,50 wacht 3000 DIALOG END hVerbinden, 0 DIALOG END hDlg, 0 FUNCTION=1 END IF END FUNCTION '-------------------------------------------------------- CALLBACK FUNCTION Cancel AS LONG DIALOG END hDlg, 0 FUNCTION = 1 END FUNCTION CALLBACK FUNCTION Stopverbinding AS LONG LOCAL Resultaat AS LONG Resultaat=AfbrekenVerbinding IF Resultaat=0 THEN BEEP FUNCTION = 1 END FUNCTION CALLBACK FUNCTION Gekozen AS LONG LOCAL resultaat AS LONG LOCAL Keuze AS LONG 'in de variabele CBCTL zit nu de waarde van de ID die aangeklikt is 'die waarden waren met een FOR/NEXT loop in het begin aangemaakt 'lopend van 301 tot en met de hoogst mogelijke aantal RAS verbindingen die zijn toegestaan 'dus 300 eraf trekken en de waarde van de juiste verbinding is er. . . . . 'de exacte offset waarde (300) zit in constante %IDOffset 'laat hoofddialoogdialoog even verdwijnen DIALOG SHOW STATE hDlg,%SW_HIDE 'en tuig de gekozen verbinding op: Keuze=CBCTL-%IDOffset '1 voor de eerste, twee voor de tweede button etc resultaat=Verbind(Keuze) FUNCTION = 1 END FUNCTION '---------------------------------------------------- FUNCTION PBMAIN() DIM i AS LONG DIM iEntries AS LONG DIM iSelect AS LONG ' DIM hRas AS LONG DIM sSelect AS STRING DIM ky AS STRING LOCAL invoer AS STRING LOCAL Tekst AS STRING LOCAL Resultaat AS LONG ' maak diverse IDs aan voor de RAS buttons DIM RasNaam(%MaxRASEntries) DIM IDRas(%MaxRASEntries) FOR i = 1 TO %MaxRASEntries 'hoogst mogelijke aantal verbindingen 'maak voor elke mogelijke entry een uniek ID nummer aan, beginnen met %IDOffset+1 (301) IDRAS(i)=%IDOffset+i NEXT i '- Get the number of ras entries in the phone book iEntries = rsAvailableEntries Tekst="Bij opgave van een verbindingsnaam bij opstarten, wordt die verbinding automatisch gemaakt. Die naam moet gelijk zijn aan één van de buttons." IF iEntries < 1 THEN MSGBOX "Geen Ras vermeldingen gevonden",,$Programma ELSE invoer=UCASE$(COMMAND$) iSelect=0 FOR i = 1 TO iEntries RASNaam(i)=TRIM$(rsGetEntryName(i)) NEXT i ' en meteen vergelijken FOR i = 1 TO iEntries IF UCASE$(RASNaam(i))=invoer THEN iSelect=i 'exact match! Resultaat=Verbind(iSelect) 'maak de opgegeven verbinding IF Resultaat=1 THEN EXIT FUNCTION 'klaar is klara, programma einde iSelect=0 : invoer="" 'niet gelukt, dus effe waarschuwen met een tekst bovenaan het dialoog Tekst="Verbinding maken met "+RASNaam(i)+" is niet gelukt. Kies zelf uit de lijst: " END IF NEXT i IF invoer="0" THEN Resultaat=AfbrekenVerbinding IF Resultaat=1 THEN EXIT FUNCTION END IF IF iSelect=0 THEN 'invoer is niet herkend, dus wel melden wat was opgegeven en de lijst opgeven IF invoer<>"" THEN Tekst= "Uw invoer '"+invoer+"' is niet herkend als een beschikbare verbinding. "+ _ "De opgave moet exact de naam van één van deze buttons zijn om automatisch te verbinden." + $CR END IF 'maak het dialoog zo groot als nodig is: aantal entries maal de ruimte tussen de buttons+ beetje voor OK DIALOG NEW 0,"Beschikbare verbindingen op uw systeem:"+STR$(iEntries),,,%MenuBreedte,(iEntries+5)*%RuimteTussenButtons, %WS_SYSMENU TO hDlg CONTROL ADD LABEL , hDlg, 0, Tekst, %buttonspatie,3,%MenuBreedte-2*%buttonspatie,30 FOR i = 1 TO iEntries Tekst=RASNaam(i) CONTROL ADD BUTTON,hDlg, IDRas(i),Tekst,%buttonspatie,(iEntries-i+2)*%RuimteTussenButtons,%ButtonGrootteX,%ButtonGrootteY CALL Gekozen NEXT i CONTROL ADD BUTTON,hDlg, %IDStop,"Verbinding stoppen",%buttonspatie*2+%ButtonGrootteX,2*%RuimteTussenButtons,%ButtonGrootteX,(iEntries-1)*%RuimteTussenButtons+%ButtonGrootteY CALL Stopverbinding CONTROL ADD BUTTON,hDlg, %IDCancel,"Afsluiten",(%MenuBreedte-%ButtonGrootteX)/2,(iEntries+3)*%RuimteTussenButtons,100,%ButtonGrootteY CALL Cancel DIALOG SHOW MODAL hDlg END IF END IF END FUNCTION