Solved

I'd like ATTACHMATE macro code to get the current machine IP address

Posted on 2011-02-17
6
566 Views
Last Modified: 2013-11-10

I'd like to be able to get the IP address of a machine running ATTACMATE macros.
0
Comment
Question by:philkryder
  • 2
  • 2
6 Comments
 
LVL 65

Accepted Solution

by:
RobSampson earned 500 total points
ID: 34939142
Hi, I don't know how Attachmate handles ActiveX objects, but try this.

Regards,

Rob.
Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
Dim strMyIP As String
strMyIP = ResolveIP(objNetwork.ComputerName)

Function ResolveIP(computerName)
	Dim objShell As Object
	Dim objExec As Object
	Dim strOutput As String
	Dim RegEx As Object
	Set objShell = CreateObject("WScript.Shell")
	Set objExec = objShell.Exec("ping " & computerName & " -n 1")
	strOutput = objExec.StdOut.ReadAll
	Set RegEx = New RegExp
	RegEx.Pattern = "\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]"
	RegEx.Global = True
	If RegEx.Test(strOutput) Then
		ResolveIP = RegEx.Execute(strOutput)(0).Submatches(0)
	Else
		ResolveIP = "IP Address could not be resolved"
	End If
End Function

Open in new window

0
 
LVL 1

Author Comment

by:philkryder
ID: 34955312
RobSampson -

Thanks!
That was "close enough"

Attachmate didn't seem to understand the "classy ness" of Regular expressions.
And,
I added a bit of a delay to make sure the exec had time to run.

ended up with this - worked fine - thanks again

================================

Function get_IP_address ()


Dim objNetwork As Object
Set objNetwork = CreateObject("WScript.Network")
Dim strMyIP As String
get_IP_address = ResolveIP(objNetwork.ComputerName)

end function

Function  ResolveIP(computerName as string)

        Const leftBracket as string = "["
        Const rightBracket as string = "]"
        Dim ws1 as string
        Dim n1 as long
        Dim n2 as long
       
      Dim objShell As Object
      Dim objExec As Object
      Dim strOutput As String
      Dim RegEx As Object
        Dim      strCommand as string
 
      Set objShell = CreateObject("WScript.Shell")
       
  '                         ping only ONCE to get the IP of the computer name
        strCommand  = ""
        strCommand  =         strCommand  &     "ping "  &     computerName  &    " -n 1"

      Set objExec = objShell.Exec(strCommand)
       
        n1 = 0
       
        Do Until objExec.Status
            n1 = n1 + 1
            Doevents '    Wscript.Sleep 250
            Doevents '    Wscript.Sleep 250
        Loop
 
      
        strOutput = objExec.StdOut.ReadAll
       
        n1 = instr(strOutput,leftBracket)
        n2 = instr(strOutput,rightBracket)
        If n2 > n1 then
            ws1 = mid(strOutput,n1+1,(n2-n1)-1)
        else
            ws1 = "NoIPaddressFound"
        end if
        ResolveIP = ws1
       
 End Function
0
 
LVL 1

Author Closing Comment

by:philkryder
ID: 34955322
very minor quibbles as noted in my comment - full points!
many thanks! Phil
0
 
LVL 65

Expert Comment

by:RobSampson
ID: 34956181
Great. Thanks Phil.

Rob.
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

With the shift in today’s hiring climate (http://blog.experts-exchange.com/ee-blog/5-tips-on-succeeding-in-the-new-gig-economy/?cid=Blog_031816), many companies are choosing to hire freelancers to get projects completed efficiently and inexpensively…
Developer portfolios can be a bit of an enigma—how do you present yourself to employers without burying them in lines of code?  A modern portfolio is more than just work samples, it’s also a statement of how you work.
XMind Plus helps organize all details/aspects of any project from large to small in an orderly and concise manner. If you are working on a complex project, use this micro tutorial to show you how to make a basic flow chart. The software is free when…
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question