Offtopic: Can anybody create a small DLL for me?

Bob Sneidar bobsneidar at iotecdigital.com
Tue Apr 13 11:39:02 EDT 2021


On Windows it's pretty easy. On MacOS it's a little trickier. Here's a function I wrote to get the default connection, which contains methods for getting the network adapters for Windows and MacOS. Enjoy:

FUNCTION getDefaultNetwork pMode
   -- leave pMode empty for just IP and MAC info. Pass "Detail" to get more info
   IF the platform contains "WIN" THEN
      set hideconsolewindows to true
      put "netsh interface ip show config" into tShellCommand
      
      TRY
         put shell(tShellCommand) into tDefaultAdapter
      CATCH tError
         return tError
      END TRY
      
      -- if pMode is detail just return these results
      IF pMode is "Detail" THEN return tDefaultAdapter
      
      -- get the default adapter and Gateway IP addresses
      put lineoffset("IP Address:", tDefaultAdapter) into tIPAddressLine
      put word -1 of line tIPAddressLine of tDefaultAdapter into tLocalIPAddress
      put lineoffset("Default Gateway:", tDefaultAdapter)  into tGWAddressLine
      put word -1 of line tGWAddressLine of tDefaultAdapter into tGWIPAddress
      
      -- get the default adapter and gateway MAC addresses
      put "ipconfig /all" into tShellCommand
      
      TRY
         put shell(tShellCommand) into tConfigData
      CATCH tError
         return tError
      END TRY
      
      put lineoffset(tLocalIPAddress, tConfigData) -3 into tLocalMACLine
      put word -1 of line tLocalMACLine of tConfigData into tLocalMACAddress
      put "arp -a" into tShellCommand
      
      TRY
         put shell(tShellCommand) into tArpData
      CATCH tError
         return tError
      END TRY
      
      put lineoffset(tGWIPAddress, tArpData) into tGWMACAddressLine
      put word 2 of line tGWMACAddressLine of tArpData into tGWMACAddress
      
      put tLocalIPAddress && tLocalMACAddress & cr & \
         tGWIPAddress && tGWMACAddress into tCurrentAdapterInfo
   ELSE
      -- first we need to get the default adapter
      put "route get default" into tShellCommand
      
      TRY
         put shell(tShellCommand) into tDefaultAdapter
      CATCH tError
         return tError
      END TRY
      put lineoffset("Interface: ", tDefaultAdapter) into tInterfaceLine
      
      IF tInterfaceLine = 0 THEN
         return "ERROR: No default interface found!"
      END IF
      
      -- now we need the detail of the interface
      put word 2 of line tInterfaceLine of tDefaultAdapter into tDefaultInterface
      put "ipconfig getpacket " & tDefaultInterface into tShellCommand
      
      TRY
         put shell(tShellCommand) into tInterfaceDetail
      CATCH tError
         return tError
      END TRY
      
      -- if we didn't specifically ask for the interface and router MAC addresses, return here
      IF pMode is "Detail" THEN return tInterfaceDetail
      
      -- now we get  the interface MAC address
      put lineoffset("chaddr", tInterfaceDetail) into tInterfaceMACLine
      put word -1 of line tInterfaceMACLine of tInterfaceDetail into tDefaultMACAddress
      
      -- and the IP address
      put lineoffset("yiaddr", tInterfaceDetail) into tInterfaceIPLine
      put word -1 of line tInterfaceIPLine of tInterfaceDetail into tDefaultIPAddress
      
      -- next we get the router IP address
      put lineoffset("router (ip_mult): ", tInterfaceDetail) into tRouterLine
      put word 3 of line tRouterLine of tInterfaceDetail into tRouterIPAddress
      put char 2 to -2 of tRouterIPAddress into tRouterIPAddress
      
      -- next we get the MAC address of the router interface
      put "arp " & tRouterIPAddress into tShellCommand
      
      TRY
         put shell(tShellCommand) into tArpReply
      CATCH tError
         return tError
      END TRY
      
      put word 4 of tArpReply into tRouterMACAddress
      
      -- finally we return the MAC addresses of the default interface and the router interface
      put tDefaultIPAddress && tDefaultMACAddress & cr & \
         tRouterIPAddress && tRouterMACAddress into tCurrentAdapterInfo
   END IF
   
   return tCurrentAdapterInfo
END getDefaultNetwork

Bob S

> On Apr 13, 2021, at 05:27 , Tiemo via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> Thanks Matthias and Andre for pointing out for these options
> 
> Tiemo
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: use-livecode <use-livecode-bounces at lists.runrev.com> Im Auftrag von Andre Garzia via use-livecode
> Gesendet: Dienstag, 13. April 2021 11:38
> An: How to use LiveCode <use-livecode at lists.runrev.com>
> Cc: Andre Garzia <andre at andregarzia.com>
> Betreff: Re: Offtopic: Can anybody create a small DLL for me?
> 
> Tiemo,
> 
> Maybe it is possible to parse the result of
> 
> shell(“ipconfig /all”)
> 
> To get the same information. I’m not sure which information you’re collecting but I just run that on my windows and I could see every interface and the info about them.
> 
> Best
> A



More information about the use-livecode mailing list