Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   WLAN abschalten per Software (https://www.delphipraxis.net/158862-wlan-abschalten-per-software.html)

Bambi 5. Mär 2011 17:22

WLAN abschalten per Software
 
Hallo Leute,
ich hab einen PC, in dem eine WLAN-Karte eingebaut ist (kein Notebook).
Jetzt möchte ich diese WLAN-Karte abschalten können wie beim Notebook (geht bei mir z.B. mit Fn+F2), und zwar mit einem externen Schalter.
Den Schalter einlesen kann ich bereits ohne großen Aufwand über den COM-Port.
Deaktivieren mit devcon möchte ich nicht, ich wollte eigentlich nur den Funk abschalten (RF off bzw. Radio off).

Ich habs schon mit der WLAN-API versucht, die bringt mir immer einen NotSupported-Error, weil ichs mit winXP SP2 und den Update aus der KB machen muss -> geht net (Link zum "passenden" Thread: http://www.delphipraxis.net/103216-w...r-wlanapi.html

Dann bin ich auf ein Teil namens NDIS gestoßen, da komm ich aber irgendiwe net weiter...

Ich hab auch schon was über eine Power-Management-API gelesen, dass man den WLAN-Adapter in einen Energiesparmodus bringt, aber des geht scheinbar nur unter Windows Mobile...

Hat jemand von euch eine Idee, wie ich das bewerkstelligen kann?

Gruß vom Bambi

hathor 5. Mär 2011 17:33

AW: WLAN abschalten per Software
 
Da ist es dabei:
POWERCFG[/LIST | /QUERY [Name] | /CREATE Name | /DELETE Name |
/SETACTIVE Name | /CHANGE Namenseinstellungen |
/HIBERNATE {ON|OFF} | /EXPORT Name [/FILE Dateiname] |
/IMPORT Name [/FILE Dateiname] | /GLOBALPOWERFLAG [ON|OFF]
/OPTION Flag |
/BATTERYALARM {NIEDRIG|KRITISCH} [Einstellungen] |
/DEVICEQUERY Abfrageflags | /DEVICEENABLEWAKE Ger„tename |
/DEVICEDISABLEWAKE Ger„tename | /?]

Beschreibung:
Dieses Befehlszeilenprogramm erm”glicht einem Administrator,
die Energieoptionen eines Systems zu steuern.

Parameterliste:
/LIST, /L Zeigt die Namen der bestehenden Energieschemen an.
/QUERY, /Q Zeigt die Konfiguration des angegebenen Energieschemas
an. Ohne Namensangabe wird die Konfiguration des
zurzeit aktiven Energieschemas angezeigt.
/CREATE, /C Erstellt ein Energieschema mit dem angegebenen Namen.
Das neue Schema wird mit den Eigenschaften des
aktiven Energieschemas erstellt.
/DELETE, /D L”scht das Energieschema mit dem angegebenen Namen.
/SETACTIVE, /S Aktiviert das Energieschema mit dem angegebenen Namen.
/CHANGE, /X Žndert die Einstellungen des angegebenen Energieschemas.
Žnderungen werden folgendermaáen definiert:
/monitor-timeout-ac <Minuten>
/monitor-timeout-dc <Minuten>
/disk-timeout-ac <Minuten>
/disk-timeout-dc <Minuten>
/standby-timeout-ac <Minuten>
/standby-timeout-dc <Minuten>
/hibernate-timeout-ac <Minuten>
/hibernate-timeout-dc <Minuten>
/processor-throttle-ac <Drosselung>
/processor-throttle-dc <Drosselung>
AC-Einstellungen werden bei Netzbetrieb verwendet.
DC-Einstellungen werden bei Batteriebetrieb verwendet.
Ein Zeitlimit von 0 deaktiviert die Zeitlimitfunktion.
Untersttzte Drosselungseinstellungen sind NONE
CONSTANT, DEGRADE und ADAPTIVE.
/EXPORT, /E Exportiert das Energieschema mit dem angegebenen Namen
in eine Datei. Ohne Dateinamensangabe wird standardm„áig
SCHEME.POW verwendet. Zus„tzlich untersttzte Parameter:
/FILE <Dateiname>
/IMPORT, /I Importiert das Energieschema von einer Datei mit dem
angegebenen Namen. Ohne Dateinamensangabe wird
standardm„áig SCHEME.POW verwendet. Ein bestehendes
Schema mit demselben Namen wird durch das neue
Schema ersetzt. Zus„tzlich untersttzte Parameter:
/FILE <Dateiname>
/HIBERNATE, /H {ON|OFF} Schaltet die Ruhezustandfunktion ein oder aus.
Das Ruhezustandzeitlimit wird nicht auf allen Systemen
untersttzt.
/NUMERICAL, /N Erm”glicht es, das zu verwendende Energieschema
mit einem numerischen Kennzeichner festzulegen. Mit
diesem Parameter muss die Nummer anstelle des
Energieschemanamens angegeben werden. Der Parameter
kann mit den Befehlen /QUERY, /DELETE, /SETACTIVE,
/CHANGE, /EXPORT und /IMPORT verwendet werden.
/GLOBALPOWERFLAG, /G {ON|OFF} De-/Aktiviert ein globales Energieflag.
Gltige Flags (nach "/OPTION "):
BATTERYICON: Blendet das Batteriestandsymbol in
der Taskleiste ein oder aus.
MULTIBATTERY: Blendet die Mehrfachbatterieanzeige
in der Energieanzeige ein oder aus.
RESUMEPASSWORD: Fordert bei Betriebwiederaufnahme
zur Kennworteingabe auf.
WAKEONRING: De-/Aktiviert die Untersttzung fr
Betriebswiederaufnahme bei einem
Anruf.
VIDEODIM: De-/Aktiviert die Untersttzung zum
D„mpfen der Videoanzeige bei
Batteriebetrieb.
/AVAILABLESLEEPSTATES, /A Meldet die auf dem System verfgbaren
Ruhezustandoptionen. Versucht die Ursache fr nicht
verfgbare Ruhezustandoptionen zu ermitteln.
/BATTERYALARM, /B {NIEDRIG|KRITISCH} Konfiguriert den Batteriealarm.
Folgende Parameter k”nnen angegeben werden:
/activate <on|off>
Aktiviert oder deaktiviert den Alarm.
/level <Prozentsatz (0 - 100)>
Alarm wird aktiviert, wenn der Energiestand
diesen Prozentsatz erreicht.
/text <on|off>
Schaltet die Textbenachrichtigung ein oder aus.
/sound <on|off>
Schaltet die Soundbenachrichtigung ein oder aus.
/action <Keine|Herunterfahren|Ruhezustand|Standby>
Bestimmt die Aktion, die bei der Alarmausl”sung
ausgefhrt wird. Es sind nicht immer alle
Aktionen verfgbar.
/forceaction <on|off>
Erzwingt Standby oder Herunterfahren, falls
ein Programm nicht mehr reagiert.
/program <on|off>
Legt das auszufhrende Programm fest. Mit
schtasks.exe /change kann das Programm konfiguriert
werden.
/DEVICEQUERY <Abfrageflags> Liefert eine Liste der Ger„te zurck, die den
Kriterien in <Abfrageflags> entsprechen. M”gliche Werte
fr <Abfrageflags> sind:
wake_from_S1_supported - Liefert alle Ger„te zurck, die
das System aus dem S1-Zustand reaktivieren k”nnen.
wake_from_S2_supported - Liefert alle Ger„te zurck, die
das System aus dem S2-Zustand reaktivieren k”nnen.
wake_from_S3_supported - Liefert alle Ger„te zurck, die
das System aus dem S3-Zustand reaktivieren k”nnen.
wake_from_any - Liefert alle Ger„te zurck, die das System
aus beliebigen Standbyzust„nden reaktivieren k”nnen.
S1_supported - Listet Ger„te auf, die den S1-Standbyzustand
untersttzen.
S2_supported - Listet Ger„te auf, die den S2-Standbyzustand
untersttzen.
S3_supported - Listet Ger„te auf, die den S3-Standbyzustand
untersttzen.
S4_supported - Listet Ger„te auf, die den Ruhezustand
untersttzen.
wake_programmable - Listet Ger„te auf, die das System aus
dem Standbymodus reaktivieren k”nnen.
wake_armed - Listet Ger„te auf, die so konfiguriert sind,
dass sie das System aus dem Standbymodus
reaktivieren.
all_devices - Liefert alle im System vorhandenen Ger„te
zurck.
all_devices_verbose - Liefert eine ausfhrliche Liste
der Ger„te zurck.
/DEVICEENABLEWAKE <Ger„tename> Erm”glicht, das Ger„t aus einem Standby-
zustand zu reaktivieren. <Ger„tename> ist ein Ger„t,
das mit dem Parameter "/DEVICEQUERY wake_programmable"
abgerufen wurde.
/DEVICEDISABLEWAKE <Ger„tename> Verhindert, das Ger„t aus einem Standby-
zustand zu reaktivieren. <Ger„tename> ist ein Ger„t,
das mit dem Parameter "/DEVICEQUERY wake_armed"
abgerufen wurde.
/HELP, /? Zeigt Informationen ber die Befehlszeilenparameter an.

Beispiele:
POWERCFG /LIST
POWERCFG /QUERY Schema
POWERCFG /QUERY
POWERCFG /CREATE Schema
POWERCFG /DELETE Schema
POWERCFG /SETACTIVE Schema
POWERCFG /CHANGE Schema /monitor-timeout-dc 15
POWERCFG /CHANGE Schema /monitor-timeout-dc 0
POWERCFG /HIBERNATE on
POWERCFG /EXPORT Schema /file Datei
POWERCFG /QUERY Nummer /NUMERICAL
POWERCFG /GLOBALPOWERFLAG on /OPTION BATTERYICON
POWERCFG /AVAILABLESLEEPSTATES
POWERCFG /BATTERYALARM Niedrig
POWERCFG /BATTERYALARM Kritisch /ACTIVATE on /LEVEL 6 /ACTION Ruhezustand
POWERCFG /DEVICEQUERY wake_armed
POWERCFG /DEVICEENABLEWAKE "Microsoft IntelliMouse Explorer (USB)"

Bambi 6. Mär 2011 12:49

AW: WLAN abschalten per Software
 
Und mit welchem Paramter versetze ich jetzt meine WLAN-Karte in den Energiesparmodus? Hab beim drüberlesen keinen passenden Parameter gefunden... Mit dem Befehl kann ich ja nur die Energieschemas ändern, das kann ich mit dem Energieoptionen-Dialog auch. Zumindest fast alles...

DelphiSecurity 6. Mär 2011 12:52

AW: WLAN abschalten per Software
 
Ich würde den Benutzer aber fragen, ob man die WLAN Karte ausschalten kann, wenn du es im Programm einbaust.
Es könnte ja sein das den User noch seine Web-Browser offen hat. :wink:

DS

:glaskugel:

Sir Rufo 6. Mär 2011 16:35

AW: WLAN abschalten per Software
 
Zitat:

Zitat von DelphiSecurity (Beitrag 1086210)
Ich würde den Benutzer aber fragen, ob man die WLAN Karte ausschalten kann, wenn du es im Programm einbaust.
Es könnte ja sein das den User noch seine Web-Browser offen hat. :wink:

DS

:glaskugel:

Er hat einen externen Schalter (Abfrage über COM-Port) mit dem das gesteuert werden soll.
Fragt dich dein Lichschalter auch "willst du wirklich das Licht ausmachen?"

Bambi 6. Mär 2011 17:21

AW: WLAN abschalten per Software
 
Zitat:

Zitat von DelphiSecurity (Beitrag 1086210)
Ich würde den Benutzer aber fragen

Die Frage wird quasi in Hardware gestellt, wie Sir Rufo schon anmerkte. Der User (=ich), der den Browser offen hat und dann sein WLAN abschaltet ist selber schuld (mein Notebook fragt auch nicht nach...) und merkts in aller Regel recht bald.

Bringt mich aber jetzt nicht so wirklich weiter, auch weil ja eine User-Abfrage keine großartige Herausforderung darstellt.....

Wobei die Idee über den Gerätemanager oder so gar nicht so doof ist (edit: evtl auch irgendwie über die WMI?! /edit). Also nicht über den WLAN-Treiber den Funk abschalten, sondern über die Geräteverwaltung den WLAN-Adapter in den Energiesparmodus bringen. Hab grad schon ein bisschen gegoogelt, aber bin auf noch nichts passendes gestoßen.
Ich zähle weiter auf eure Hilfe.

Schönen Sonntag noch
Gruß vom Bambi

Bambi 10. Mär 2011 09:15

AW: WLAN abschalten per Software
 
*push*

Hat noch niemand eine rettende Idee??

WM_CLOSE 10. Mär 2011 10:11

AW: WLAN abschalten per Software
 
Vielleicht entsprechende Tastatur-Ereignisse senden. Der WLAN-Knopf hat glaube ich eine VK_???-Nummer.

Bambi 10. Mär 2011 10:28

AW: WLAN abschalten per Software
 
Zitat:

Zitat von WM_CLOSE (Beitrag 1087225)
Vielleicht entsprechende Tastatur-Ereignisse senden.

Das wäre vielleicht ne möglichkeit. Wie bekomm ich denn den VK-code raus, habs gerade versucht, aber bei meinem Notebook fängt der WLAN-Treiber den Tastendruck scheinbar ab. Es kommt zumindest nix bei meiner Form an...

WM_CLOSE 10. Mär 2011 11:02

AW: WLAN abschalten per Software
 
Mit GetAsyncKeyState?:?:

Bambi 10. Mär 2011 11:20

AW: WLAN abschalten per Software
 
Hmmm... dafür müsst ich aber erstmal wissen, welchen VK-code die taste denn hat... Klarer Fall von Henne-Ei-Problem...

Hab gerade aus nem alten Projekt einen Tastatur-Hook probiert, der erkennt alles mögliche, nur bei der WLAN-Taste kommt nix... schaut also nicht so toll aus.

WM_CLOSE 10. Mär 2011 12:19

AW: WLAN abschalten per Software
 
Ich hab da was gefunden:
http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx

Hinweis: Du brauchst Admin-Rechte

Bambi 10. Mär 2011 14:19

AW: WLAN abschalten per Software
 
ja, das hab ich ja auch schon probiert...
als Benutzer mit Admin-Rechten bin ich angemeldet, das hat aber nicht funktioniert, weil er mir immer weis machen wollte, dass mein Adapter das nicht unterstützt...
Oder muss ich die Geschichte mit den Privilegien noch irgendwie ändern.
Ich hab da irgendwo in meinem dunklen Hinterkopf sowas wie AdjustTokenPrivileges... Ist es das? Wenn ja, was muss ich den da "adjusten"??

alfold 10. Mär 2011 15:46

AW: WLAN abschalten per Software
 
Mal ne bescheidene Frage dazu. Welchen Sinn soll es machen nur den Funk zu deaktivieren wenn DU das ganze Gerät deaktivieren kannst? Währe ja so, ich lass den Fernseher an ziehe aber den Antennenanschluss ab mhhh....
und behaupte nun der Fernseher ist aus :wink:
Ich befürchte, das Du da nix finden wirst.

Gruss alfold

hathor 10. Aug 2012 20:16

AW: WLAN abschalten per Software
 
1. WlanEin.bat - mit der Zeile
netsh wlan delete filter permission=denyall networktype=infrastructure

oder:
ShellExecute(0,nil, 'netsh',
'wlan delete filter permission=denyall networktype=infrastructure', nil, SW_HIDE);


2. WlanAus.bat - mit der Zeile
netsh wlan add filter permission=denyall networktype=infrastructure

oder:
ShellExecute(0,nil, 'netsh',
'wlan add filter permission=denyall networktype=infrastructure', nil, SW_HIDE);

mjustin 11. Aug 2012 08:04

AW: WLAN abschalten per Software
 
Zitat:

Zitat von Bambi (Beitrag 1086253)
evtl auch irgendwie über die WMI?!

Ja, WMI würde ich auch versuchen:

http://social.technet.microsoft.com/...-e61312888be5/

zeigt wie man über ein

Code:
"SELECT * FROM Win32_NetworkAdapter"
suchen und dann mit


Code:
objItem.Disable
den Adapter stoppen kann.

Für Delphi gibt es im Internet einen sehr hilfreichen Generator, der für WMI Funktionen den kompletten Delphi Sourcecode erzeugt.

http://code.google.com/p/wmi-delphi-code-creator/

Zitat:

The WMI Delphi Code Creator (WDCC), allows you to generate Object Pascal, Oxygene, C++ and C# code to access the WMI (Windows Management Instrumentation) classes, events and methods. Also includes a set of tools to explore and Query the content of the WMI.

madtom 11. Aug 2012 12:38

AW: WLAN abschalten per Software
 
Hallo,

das Schlagwort "WMI" ist bereits gefallen, Rodrigo Ruz hat auf http://theroadtodelphi.wordpress.com eine ganze Reihe von Artikeln zu diesem Thema veröffentlicht, unter anderem auch zu Netzwerkverbindungen.
http://theroadtodelphi.wordpress.com...93-networking/
http://theroadtodelphi.wordpress.com...mi-and-delphi/

Der Linke zu seinem WMICodeGenerator wurde hier auch bereits veröffentlicht.

Gruß Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz