LAN oder WLAN aktiv

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

PIcard_1983
Posts: 6
Joined: 13 Nov 2017, 04:18

LAN oder WLAN aktiv

Post by PIcard_1983 » 29 Jun 2020, 13:45

Hallo,

ich habe mal eine Frage: Ich versuche irgendwie herauszufinden ob ich bei meine Ehternetverbindung das LAN Kabel angeschlossen habe oder nicht.
Also ob der Ethernetadapter aktiv ist oder nicht.

Das muss doch irgendwie gehen oder?

Ich habe schonmal im Forum herum gelesen und folgende Funktion gefunden:

Code: Select all

ConnectedToInternet(flag=0x40) { 
Return DllCall("Wininet.dll\InternetGetConnectedState", "Str", flag,"Int",0) 
}
Dort bekomme ich aber nur ob Internet ja oder nein. Das bringt mir nix. Ich suche eine Funktion, ob mein Laptop mit LAN oder WLAN verbunden ist.

Kann mir da jemand weiterhelfen?

Danke

Gruß
Picard

KHA
Posts: 248
Joined: 21 Aug 2018, 11:11

Re: LAN oder WLAN aktiv

Post by KHA » 29 Jun 2020, 14:35

Versuch mal damit.

Code: Select all

MsgBox, % RunWaitEin("netsh interface show interface")

RunWaitEin(Befehl) {
    shell := ComObjCreate("WScript.Shell")
    exec := shell.Exec(ComSpec " /C " Befehl)
    	For i, v in StrSplit(exec.StdOut.ReadAll, "`n", "`r")
    	{
	     if (v = "")
	     continue
   
	     if InStr(v, "Verbunden")
	     Verbunden = % v
	    }
    return % Verbunden
}

garry
Posts: 2429
Joined: 22 Dec 2013, 12:50

Re: LAN oder WLAN aktiv

Post by garry » 29 Jun 2020, 14:42

@KHA , danke, hab noch dies gefunden
EDIT : modified ( tempfile fehlte )
https://www.autohotkey.com/boards/viewtopic.php?f=5&t=46333

Code: Select all

;-https://www.autohotkey.com/boards/viewtopic.php?f=5&t=46333   user gregster

;- https://www.autohotkey.com/boards/viewtopic.php?f=5&t=46333

msgbox % GetLanIP()
GetLanIP()			; Credit https://www.reddit.com/r/AutoHotkey/comments/6haneq/external_ip_address/
{
	tempfile = %a_desktop%\ipinfo.txt 				; adjust filepath
	FileDelete, % tempfile
	run, %ComSpec% /c ipconfig > %tempfile%, , Hide		
	While !FileExist(tempfile)
		sleep, 100
	FileRead lanInfo, % tempfile						
	loop, Parse, lanInfo, `n
	{
		if(InStr(A_LoopField, "IPv4"))
		{
			lanIp := Trim(SubStr(A_LoopField, InStr(A_LoopField, ":")+2), "`r`n")
			FileDelete, % tempfile
			Return lanIP
		}
	}
	lanIP := "Check Network Connection"
	Return lanIP
}

Last edited by garry on 29 Jun 2020, 15:05, edited 1 time in total.

gregster
Posts: 5119
Joined: 30 Sep 2013, 06:48

Re: LAN oder WLAN aktiv

Post by gregster » 29 Jun 2020, 14:48

garry, in deiner Codebox oben scheint was zu fehlen (und unterscheidet sich zum Code im Topic), mindestens in der run-Zeile (run, %ComSpec% /k ipconfig, , ).
Diese Funktion beruht ja auf dem Umleiten des Ergebnisses in eine temporäre Datei, soweit ich das sehe: run, %ComSpec% /c ipconfig > %tempfile%, , Hide

garry
Posts: 2429
Joined: 22 Dec 2013, 12:50

Re: LAN oder WLAN aktiv

Post by garry » 29 Jun 2020, 15:07

@gregster , sorry, danke , hatte was gebastelt ... habe script oben geändert

Code: Select all

run, %ComSpec% /k ipconfig

PIcard_1983
Posts: 6
Joined: 13 Nov 2017, 04:18

Re: LAN oder WLAN aktiv

Post by PIcard_1983 » 30 Jun 2020, 01:51

Vielen Dank für die Hinweise. Ich denke, damit komme ich klar. DANKE!!!

User avatar
haichen
Posts: 533
Joined: 09 Feb 2014, 08:24

Re: LAN oder WLAN aktiv

Post by haichen » 30 Jun 2020, 02:14

Der ursprüngliche Code ist vermutlich von jNizM und ich habe es durch ausprobieren nur wenig abgewandelt (so meine Erinnerung):

Code: Select all

MsgBox, % "GW " getGateway() "`nIP " getIP()

return

	getGateway(){
		objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
		colItems := objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")._NewEnum
		while colItems[objItem]
			loop,4
				if (objItem.IPAddress[0] == A_IPAddress%a_index%) and !(objItem.DefaultIPGateway[0] = 0)
					return objItem.DefaultIPGateway[0]
		return
	}
	
	getIP(){
		objWMIService := ComObjGet("winmgmts:\\.\root\cimv2")
		colItems := objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")._NewEnum
		while colItems[objItem]
			loop,4
				if (objItem.IPAddress[0] == A_IPAddress%a_index%) and !(objItem.DefaultIPGateway[0] = 0)
					return A_IPAddress%a_index%
		return
	}
   

User avatar
jNizM
Posts: 2662
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: LAN oder WLAN aktiv

Post by jNizM » 30 Jun 2020, 02:46

Könnte gut möglich sein haichen ;D
Aber ich würde WinAPI der WMI-Abfrage beforzugen (https://www.autohotkey.com/boards/viewtopic.php?f=6&t=71627)
[AHK] 1.1.32.00 x64 Unicode | [WIN] 10 Pro (Version 2004) x64 | [GitHub] Profile
Donations are appreciated if I could help you

User avatar
haichen
Posts: 533
Joined: 09 Feb 2014, 08:24

Re: LAN oder WLAN aktiv

Post by haichen » 30 Jun 2020, 03:14

Kannst du mir erklären warum die WMI-Abfrage nicht so "schön" ist? Ist sie zu langsam?

garry
Posts: 2429
Joined: 22 Dec 2013, 12:50

Re: LAN oder WLAN aktiv

Post by garry » 30 Jun 2020, 03:19

danke für die scripts , sehr viel Informationen
hier nur kurze Uebersicht ob mit LAN oder WLAN verbunden ( z.B. bei meinem Computer Abfrage a_ipaddress1 ) :
Bemerkung : habe normal LAN , schalte WLAN ein sind kurzzeitig beide verbunden , danach Verbindung via WLAN

Code: Select all

;- run, %comspec% /k Netsh wlan show networks mode=bssid  ;- zeigt alle WLAN's an
run, %ComSpec% /k ipconfig
msgbox,%a_ipaddress1%   ;- << IPv4-Adresse
exitapp
;---------------------------------------------------------------------------
/*
Ethernet-Adapter Ethernet:
   ------------------------ wenn  getrennt : -------------------------------
   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix: home
   ------------------------ nicht getrennt : -------------------------------
   IPv4-Adresse  . . . . . . . . . . : 192.168.1.113
   =========================================================================


Drahtlos-LAN-Adapter WLAN:
   ------------------------ wenn  getrennt : -------------------------------
   Medienstatus. . . . . . . . . . . : Medium getrennt
   Verbindungsspezifisches DNS-Suffix: home
   ------------------------ nicht getrennt : -------------------------------
   IPv4-Adresse  . . . . . . . . . . : 192.168.1.114
   =========================================================================
*/
Last edited by garry on 30 Jun 2020, 03:42, edited 1 time in total.

User avatar
jNizM
Posts: 2662
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: LAN oder WLAN aktiv

Post by jNizM » 30 Jun 2020, 03:39

WMI-Vorteil: Beinhaltet von Hause aus schon viele Informationen, die leicht(er) zu bekommen sind, ohne unnötig viele WinAPI's direkt abzufragen oder sich überhaupt mit der API (DllCall's usw.) zu befassen.
WMI-Nachteil: Es ist im Vergleich zur direkten WinAPI-Abfrage sehr langsam und verbraucht mehr Ressourcen (CPU / RAM)
[AHK] 1.1.32.00 x64 Unicode | [WIN] 10 Pro (Version 2004) x64 | [GitHub] Profile
Donations are appreciated if I could help you

User avatar
haichen
Posts: 533
Joined: 09 Feb 2014, 08:24

Re: LAN oder WLAN aktiv

Post by haichen » 30 Jun 2020, 04:00

Ah ja. Mit den WMI-Abfragen bekomme ich dank dem "WMI Code Creator" so etwa hin, was ich haben will. Die API-Abfragen verstehe ich leider noch nicht so gut.
Viele Dank für deine Antwort.

garry
Posts: 2429
Joined: 22 Dec 2013, 12:50

Re: LAN oder WLAN aktiv

Post by garry » 30 Jun 2020, 14:19

LAN oder WLAN , ein einfaches GUI , fragt nur nach a_ipaddress1 , evtl gilt nur für mein PC
wenn nichts angezeigt wird > kein Internet
Wäre dieses Beispiel ok ?
siehe :

Code: Select all

run, %ComSpec% /k ipconfig

Code: Select all

;- WLAN or LAN 
;- run, %comspec% /k Netsh wlan show networks mode=bssid  ;- zeigt alle WLAN's an
;run, %ComSpec% /k ipconfig
;msgbox,%a_ipaddress1%   ;- << IPv4-Adresse

#warn
#NoEnv
SetWorkingDir, %A_ScriptDir%
wa:=A_screenwidth,ha:=A_screenHeight,xx:=100
Gui,2:  -DPIScale
c1=D4D0C8                                                   ;- gray normal msgbox
Gui,2: Color, Black,%c1%                                    ;- Gui color / background from Edit
Gui,2: Font,cYellow s14 ,Lucida Console                     ;- font , font-size and color
;----------------
x:=(wa*1)/xx,y1:=(ha*2)/xx,y2:=(ha*5)/xx
gui,2: add, text,  x%x%  y%y1%         , LAN    =
gui,2: add, text,  x%x%  y%y2%         , WLAN   =
;----------------
x:=(wa*6)/xx,w:=(wa*8)/xx,h:=(ha*2.6)/xx
gui,2: add, edit,  x%x% y%y1%  h%h% w%w% vLAN  readonly right , 
gui,2: add, edit,  x%x% y%y2%  h%h% w%w% vWLAN readonly right , 
;----------------
x:=(wa*7)/xx,y:=(ha*1)/xx,w:=(wa*17)/xx,h:=(ha*17)/xx
gui,2: show ,x%x% y%y% w%w% h%h%,LAN or WLAN IPv4-Address
;----------------
Gui,2: add,text,x0 y0 h0 w0 vT1
GuiControl,2:Focus,T1
settimer,aas,1000
return
;------------------------
2Guiclose:
exitapp
;------------------------
Aas:
acx:=a_ipaddress1
GuiControl,2:,LAN
GuiControl,2:,WLAN
if (acx="192.168.1.113")
  GuiControl,2:,LAN,%acx%
if (acx="192.168.1.114")
  GuiControl,2:,WLAN,%acx%
return
;==========================================

Post Reply

Return to “Ich brauche Hilfe”