Avatar billede nakayama Nybegynder
31. oktober 2005 - 17:01 Der er 9 kommentarer og
1 løsning

VB script til at dis- og enable trådløst

Hej,

Jeg har brug for et vbs, der kan gøre subject. Er det overhovedet muligt?

På forhånd tak :-)
Avatar billede bfjmnemonic Nybegynder
31. oktober 2005 - 21:00 #1
You are in Luck.

Jeg har et script til at enable og disable almindelige forbindelse, og der er heldigvis ingen forskel på om det er det ene eller andet.

Du kan bare rette navnet fra "Local Area Network" til det dit trådløse netværk hedder i control panelet.

KLIP------------
'======== ToggleLanConnection.vbs
'========

Const ssfCONTROLS = 3

sConnectionName = "Local Area Connection"

sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"

set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)

set oNetConnections = nothing
for each folderitem in oControlPanel.items
  if folderitem.name  = "Network Connections" then
    set oNetConnections = folderitem.getfolder: exit for
  end if
next

if oNetConnections is nothing then
  msgbox "Couldn't find 'Network Connections' folder"
  wscript.quit
end if

set oLanConnection = nothing
for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next

if oLanConnection is nothing then
  msgbox "Couldn't find '" & sConnectionName & "' item"
  wscript.quit
end if

bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb 
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb 
  end if
next

'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit

'not sure why, but invokeverb always seemed to work
'for enable but not disable. 
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
'  oLanConnection.invokeverb sDisableVerb
  oDisableVerb.DoIt
else
'  oLanConnection.invokeverb sEnableVerb
  oEnableVerb.DoIt
end if

'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 1000
Avatar billede nakayama Nybegynder
31. oktober 2005 - 21:38 #2
hvis du kan omsætte det til danske forhold ville det være helt perfekt..

Jeg har prøvet med :

'======== ToggleLanConnection.vbs
'========

Const ssfCONTROLS = 3

sConnectionName = "Trådløst netværk"

sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"

set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)

set oNetConnections = nothing
for each folderitem in oControlPanel.items
  if folderitem.name  = "Netværksforbindelser" then
    set oNetConnections = folderitem.getfolder: exit for
  end if
next

if oNetConnections is nothing then
  msgbox "Couldn't find 'Network Connections' folder"
  wscript.quit
end if

set oLanConnection = nothing
for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next

if oLanConnection is nothing then
  msgbox "Couldn't find '" & sConnectionName & "' item"
  wscript.quit
end if

bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb
  end if
next

'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit

'not sure why, but invokeverb always seemed to work
'for enable but not disable.
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
'  oLanConnection.invokeverb sDisableVerb
  oDisableVerb.DoIt
else
'  oLanConnection.invokeverb sEnableVerb
  oEnableVerb.DoIt
end if

'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 1000

men jeg får "couldn't find 'trådløst netværk' item"...
Avatar billede bfjmnemonic Nybegynder
31. oktober 2005 - 21:45 #3
Prøv at ændre:

for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next

til

for each folderitem in oNetConnections.items
  WScript.Echo lcase(folderitem.name) &" = " & lcase(sConnectionName)
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next

Så har du selv mulighed for at sammeligne og se hvad problemet er. Jeg har desværre ikke en dansk udgang af XP, så jeg kan ikke rigtigt hjælpe.
Avatar billede nakayama Nybegynder
31. oktober 2005 - 21:51 #4
så får jeg

trådløs netværksforbindelse = trådløs netværksforbindelse
1394-forbindelse 3 = trådløs netværksforbindelse
lan-forbindelse = trådløs netværksforbindelse

efterfulgt af en fejl "et objekt er obligatorisk" i l. 33 (som er if oLanConnection is nothing then)
Avatar billede bfjmnemonic Nybegynder
31. oktober 2005 - 22:03 #5
Måske kan den "=" ikke lide de danske karakterer.

Prøv med InStr funktionen.

Prøv at ændre:

for each folderitem in oNetConnections.items
  if lcase(folderitem.name)  = lcase(sConnectionName) then
    set oLanConnection = folderitem: exit for
  end if
next

til

for each folderitem in oNetConnections.items
  if InStr(1, lcase(folderitem.name), lcase(sConnectionName), vbTextCompare) > 0 then
    set oLanConnection = folderitem: exit for
  end if
Next
Avatar billede nakayama Nybegynder
31. oktober 2005 - 22:10 #6
har nu omdøbt til Wireless OG brugt instr() i stedet og får nu fejlen:

Et objekt er obligatorisk: oDisableVerb (lin. 66)
Avatar billede bfjmnemonic Nybegynder
01. november 2005 - 13:40 #7
Ændr:

for each verb in oLanConnection.verbs
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb
  end if
next

til

for each verb in oLanConnection.verbs
  WScript.Echo verb
  s = s & vbcrlf & verb.name
  if verb.name = sEnableVerb then
    set oEnableVerb = verb
    bEnabled = false
  end if
  if verb.name = sDisableVerb then
    set oDisableVerb = verb
  end if
next

Skriv output af dette.
Avatar billede nakayama Nybegynder
01. november 2005 - 15:53 #8
A&ktiver
&Status
Opret gen&vej
S&let
O&mdøb
&Egenskaber

efterfulgt af "et objekt er obligatorisk: 'oDisableVerb' i linie 68 som er  oDisableVerb.DoIt
Avatar billede bfjmnemonic Nybegynder
01. november 2005 - 17:37 #9
Har fundet problemet .. Det er det latterlige ved Windows. De tror at sproget skal rette helt ind i koden og på folder navne osv .. Idioter lær dog at bruge Language Schemes. I har tyv stjålat alt andet fra Linux og Unix .. Skulle i ikkel ige få taget jeg samme og så nakket det også..

Du skal ændre:

sEnableVerb = "En&able"
sDisableVerb = "Disa&ble"

Til

sEnableVerb = "A&ktiver"
sDisableVerb = "&Deaktiver"
Avatar billede nakayama Nybegynder
01. november 2005 - 19:14 #10
jeg takker og bukker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester