import ctypes # Load the Wininet library wininet = ctypes.windll.wininet # Define the flags INTERNET_CONNECTION_MODEM = 0x01 INTERNET_CONNECTION_LAN = 0x02 INTERNET_CONNECTION_PROXY = 0x04 INTERNET_CONNECTION_OFFLINE = 0x20 INTERNET_CONNECTION_CONFIGURED = 0x40 def interpret_flags(flags): states = [] if flags & INTERNET_CONNECTION_MODEM: states.append("Modem") if flags & INTERNET_CONNECTION_LAN: states.append("LAN") if flags & INTERNET_CONNECTION_PROXY: states.append("Proxy") if flags & INTERNET_CONNECTION_OFFLINE: states.append("Offline") if flags & INTERNET_CONNECTION_CONFIGURED: states.append("Configured") return states def get_connection_state(): flags = ctypes.c_ulong() result = wininet.InternetGetConnectedState(ctypes.byref(flags), 0) return result, flags.value result, flags = get_connection_state() if result: print("Connected to the internet") print("Connection types:", interpret_flags(flags)) else: print("Not connected to the internet") print("Connection types:", interpret_flags(flags))