Jump to content
LightningBit

"\Include\WinAPIGdi.au3" (2480) : ==> Variable must be of type "Object"

Recommended Posts

Hi,

I've a script, using WinAPIGdi, checking info on font files

for some files, I get the error

"C:\DEV\AutoIt3\Include\WinAPIGdi.au3" (2480) : ==> Variable must be of type "Object".:

and then the script stops.

Is there a way I can either "catch" that error, and let my script continue with the next file

or improve something in the WinAPIGdi script?

 

I've searched the forums on error handling, but couldn't immediately find something related tho errors like these which are hardstopping the script

 

P.S. : I'm an AutoIT script newbie.....

 

snippet from WinAPIGdi, line 2480 from the error is this one:

 $sResult = $tResult.szTTFName

 

; #FUNCTION# ====================================================================================================================
; Author ........: funkey
; Modified ......: UEZ, jpm
; ===============================================================================================================================
Func _WinAPI_GetFontMemoryResourceInfo($pMemory, $iFlag = 1)
    Local Const $tagTT_OFFSET_TABLE = "USHORT uMajorVersion;USHORT uMinorVersion;USHORT uNumOfTables;USHORT uSearchRange;USHORT uEntrySelector;USHORT uRangeShift"
    Local Const $tagTT_TABLE_DIRECTORY = "char szTag[4];ULONG uCheckSum;ULONG uOffset;ULONG uLength"
    Local Const $tagTT_NAME_TABLE_HEADER = "USHORT uFSelector;USHORT uNRCount;USHORT uStorageOffset"
    Local Const $tagTT_NAME_RECORD = "USHORT uPlatformID;USHORT uEncodingID;USHORT uLanguageID;USHORT uNameID;USHORT uStringLength;USHORT uStringOffset"

    Local $tTTOffsetTable = DllStructCreate($tagTT_OFFSET_TABLE, $pMemory)
    Local $iNumOfTables = _WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uNumOfTables"))

    ;check is this is a true type font and the version is 1.0
    If Not (_WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uMajorVersion")) = 1 And _WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uMinorVersion")) = 0) Then Return SetError(1, 0, "")

    Local $iTblDirSize = DllStructGetSize(DllStructCreate($tagTT_TABLE_DIRECTORY))
    Local $bFound = False, $iOffset, $tTblDir
    For $i = 0 To $iNumOfTables - 1
        $tTblDir = DllStructCreate($tagTT_TABLE_DIRECTORY, $pMemory + DllStructGetSize($tTTOffsetTable) + $i * $iTblDirSize)
        If StringLeft(DllStructGetData($tTblDir, "szTag"), 4) = "name" Then
            $bFound = True
            $iOffset = _WinAPI_SwapDWord(DllStructGetData($tTblDir, "uOffset"))
            ExitLoop
        EndIf
    Next

    If Not $bFound Then Return SetError(2, 0, "")

    Local $tNTHeader = DllStructCreate($tagTT_NAME_TABLE_HEADER, $pMemory + $iOffset)
    Local $iNTHeaderSize = DllStructGetSize($tNTHeader)
    Local $iNRCount = _WinAPI_SwapWord(DllStructGetData($tNTHeader, "uNRCount"))
    Local $iStorageOffset = _WinAPI_SwapWord(DllStructGetData($tNTHeader, "uStorageOffset"))

    Local $iTTRecordSize = DllStructGetSize(DllStructCreate($tagTT_NAME_RECORD))
    Local $tResult, $sResult, $iStringLength, $iStringOffset, $iEncodingID, $tTTRecord
    For $i = 0 To $iNRCount - 1
        $tTTRecord = DllStructCreate($tagTT_NAME_RECORD, $pMemory + $iOffset + $iNTHeaderSize + $i * $iTTRecordSize)

        If _WinAPI_SwapWord($tTTRecord.uNameID) = $iFlag Then ;1 says that this is font name. 0 for example determines copyright info
            $iStringLength = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uStringLength"))
            $iStringOffset = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uStringOffset"))
            $iEncodingID = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uEncodingID"))

            Local $sWchar = "char"
            If $iEncodingID = 1 Then
                $sWchar = "word"
                $iStringLength = $iStringLength / 2
            EndIf
            $tResult = DllStructCreate($sWchar & " szTTFName[" & $iStringLength & "]", $pMemory + $iOffset + $iStringOffset + $iStorageOffset)

            If $iEncodingID = 1 Then
                $sResult = ""
                For $j = 1 To $iStringLength
                    $sResult &= ChrW(_WinAPI_SwapWord(DllStructGetData($tResult, 1, $j)))
                Next
            Else
                $sResult = $tResult.szTTFName

            EndIf

            If StringLen($sResult) > 0 Then ExitLoop
        EndIf
    Next

    Return $sResult
EndFunc   ;==>_WinAPI_GetFontMemoryResourceInfo


 

the function in my script:

Func FontGetInfoFromFile($sFile, $n, $sElement)

    Local $s = _WinAPI_GetFontResourceInfo($sFile, Default, $n)
    If Not @error And $s Then ConsoleWrite($sElement & " = " & $s & @CRLF)
    If @error Then ConsoleWrite ("ERROR!!!")

EndFunc   ;==>FontGetInfoFromFile

 

and _WinAPI_GetFontResourceInfo uses _WinAPI_GetFontMemoryResourceInfo as you know

 

any help or hints are welcome

 

 

Babylon5.ttf

Bahamas.ttf

Edited by LightningBit
attached 2 example fonts which are giving the problem

Share this post


Link to post
Share on other sites

Can you provide the font file that I can reproduce the error please?

 

THX.


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Hi,

 

I attached 2 example fonts with the problem to my Original post

 

here is my "test" script"

 

#Include <Array.au3>
#Include <File.au3>
#Include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#Include <FontConstants.au3>
#include <GDIPlus.au3>
#include <WinAPIGdi.au3>
#include <WinAPIMisc.au3>


Opt('MustDeclareVars', 1)

; Variable Declaration

Global $FileList = _FileListToArray("C:\DEV\TEST\FONTS\", '*.ttf', 1, True)
Global $FontList[UBound($FileList) - 1][2]
Global $sFile = ""
Global $sFont = ""

; Functions

Func FontGetInfoFromFile($sFile, $n, $sElement)
    Local $s = _WinAPI_GetFontResourceInfo($sFile, Default, $n)
    If Not @error And $s Then ConsoleWrite($sElement & " = " & $s & @CRLF)
    If @error Then ConsoleWrite ("ERROR!!!")
EndFunc   ;==>FontGetInfoFromFile

;Main Application

For $i = 1 To $FileList[0]
    $sFile = $FileList[$i]
    $sFont = _WinAPI_GetFontResourceInfo($sFile, 1)
    If Not $sFont Then
        Exit
    Else
        ConsoleWrite("Debug : Found a font!" & $sFile & @LF)
    EndIf
    ConsoleWrite("Debug : Getting the data .... " & @LF)
    FontGetInfoFromFile($sFile, 0, "Copyright")
    FontGetInfoFromFile($sFile, 1, "Font Family name")
    FontGetInfoFromFile($sFile, 2, "Font SubFamily name")
    FontGetInfoFromFile($sFile, 3, "Unique font identifier")
    FontGetInfoFromFile($sFile, 4, "Font full name")
    FontGetInfoFromFile($sFile, 5, "Version string")
    FontGetInfoFromFile($sFile, 6, "Postscript name")
    FontGetInfoFromFile($sFile, 7, "Trademark")
    FontGetInfoFromFile($sFile, 8, "Manufacturer Name")
    FontGetInfoFromFile($sFile, 9, "Designer")
    FontGetInfoFromFile($sFile, 10, "Description")
    FontGetInfoFromFile($sFile, 11, "URL Vendor")
    FontGetInfoFromFile($sFile, 16, "Preferred Family (Windows only)")
    FontGetInfoFromFile($sFile, 17, "Preferred SubFamily (Windows only)")
    FontGetInfoFromFile($sFile, 18, "Compatible Full (Mac OS only)")
    FontGetInfoFromFile($sFile, 19, "Sample text")
    FontGetInfoFromFile($sFile, 20, "PostScript CID findfont name")
    FontGetInfoFromFile($sFile, 256, "Font-specific names")
    ConsoleWrite("Debug : Done getting the data .... " & @LF & @CRLF)
    ConsoleWrite(_WinAPI_GetLastError & @LF)
Next

 

 

Edited by LightningBit

Share this post


Link to post
Share on other sites

This is a problem with _WinAPI_GetFontMemoryResourceInfo function that is not handling errors which occurs when $iStringLength is 0.

Should be fixed in next release.

 

Thanks.

 

Workaround:

; #FUNCTION# ====================================================================================================================
; Author ........: funkey
; Modified ......: UEZ
; ===============================================================================================================================
Func _WinAPI_GetFontResourceInfo($sFont, $bForce = False, $iFlag = Default)
    If $iFlag = Default Then
        If $bForce Then
            If Not _WinAPI_AddFontResourceEx($sFont, $FR_NOT_ENUM) Then Return SetError(@error + 20, @extended, '')
        EndIf

        Local $iError = 0
        Local $aRet = DllCall('gdi32.dll', 'bool', 'GetFontResourceInfoW', 'wstr', $sFont, 'dword*', 4096, 'wstr', '', 'dword', 0x01)
        If @error Or Not $aRet[0] Then $iError = @error + 10

        If $bForce Then
            _WinAPI_RemoveFontResourceEx($sFont, $FR_NOT_ENUM)
        EndIf
        If $iError Then Return SetError($iError, 0, '')

        Return $aRet[3]
    Else
        If Not FileExists($sFont) Then
            $sFont = RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "Fonts") & "\" & $sFont
            If Not FileExists($sFont) Then Return SetError(31, 0, "")
        EndIf
        Local Const $hFile = _WinAPI_CreateFile($sFont, 2, 2, 2)
        If Not $hFile Then Return SetError(32, _WinAPI_GetLastError(), "")
        Local Const $iFile = FileGetSize($sFont)
        Local Const $tBuffer = DllStructCreate("byte[" & $iFile + 1 & "]")
        Local Const $pFile = DllStructGetPtr($tBuffer)
        Local $iRead
        _WinAPI_ReadFile($hFile, $pFile, $iFile, $iRead)
        _WinAPI_CloseHandle($hFile)
        Local $sTTFName = _WinAPI_GetFontMemoryResourceInfo($pFile, $iFlag)
        If @error Then
            If @error = 1 Then
                $sTTFName = _WinAPI_GetFontResourceInfo($sFont, True)
                Return SetError(@error, @extended, $sTTFName)
            EndIf
            Return SetError(33, @error, "")
        EndIf
        Return $sTTFName
    EndIf
EndFunc   ;==>_WinAPI_GetFontResourceInfo

; #FUNCTION# ====================================================================================================================
; Author ........: funkey
; Modified ......: UEZ, jpm
; ===============================================================================================================================
Func _WinAPI_GetFontMemoryResourceInfo($pMemory, $iFlag = 1)
    Local Const $tagTT_OFFSET_TABLE = "USHORT uMajorVersion;USHORT uMinorVersion;USHORT uNumOfTables;USHORT uSearchRange;USHORT uEntrySelector;USHORT uRangeShift"
    Local Const $tagTT_TABLE_DIRECTORY = "char szTag[4];ULONG uCheckSum;ULONG uOffset;ULONG uLength"
    Local Const $tagTT_NAME_TABLE_HEADER = "USHORT uFSelector;USHORT uNRCount;USHORT uStorageOffset"
    Local Const $tagTT_NAME_RECORD = "USHORT uPlatformID;USHORT uEncodingID;USHORT uLanguageID;USHORT uNameID;USHORT uStringLength;USHORT uStringOffset"

    Local $tTTOffsetTable = DllStructCreate($tagTT_OFFSET_TABLE, $pMemory)
    Local $iNumOfTables = _WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uNumOfTables"))

    ;check is this is a true type font and the version is 1.0
    If Not (_WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uMajorVersion")) = 1 And _
            _WinAPI_SwapWord(DllStructGetData($tTTOffsetTable, "uMinorVersion")) = 0) Then Return SetError(1, 0, "")

    Local $iTblDirSize = DllStructGetSize(DllStructCreate($tagTT_TABLE_DIRECTORY))
    Local $bFound = False, $iOffset, $tTblDir
    For $i = 0 To $iNumOfTables - 1
        $tTblDir = DllStructCreate($tagTT_TABLE_DIRECTORY, $pMemory + DllStructGetSize($tTTOffsetTable) + $i * $iTblDirSize)
        If StringLeft(DllStructGetData($tTblDir, "szTag"), 4) = "name" Then
            $bFound = True
            $iOffset = _WinAPI_SwapDWord(DllStructGetData($tTblDir, "uOffset"))
            ExitLoop
        EndIf
    Next

    If Not $bFound Then Return SetError(2, 0, "")

    Local $tNTHeader = DllStructCreate($tagTT_NAME_TABLE_HEADER, $pMemory + $iOffset)
    Local $iNTHeaderSize = DllStructGetSize($tNTHeader)
    Local $iNRCount = _WinAPI_SwapWord(DllStructGetData($tNTHeader, "uNRCount"))
    Local $iStorageOffset = _WinAPI_SwapWord(DllStructGetData($tNTHeader, "uStorageOffset"))

    Local $iTTRecordSize = DllStructGetSize(DllStructCreate($tagTT_NAME_RECORD))
    Local $tResult, $sResult, $iStringLength = 0, $iStringOffset, $iEncodingID, $tTTRecord, $iError = 0
    For $i = 0 To $iNRCount - 1
        $tTTRecord = DllStructCreate($tagTT_NAME_RECORD, $pMemory + $iOffset + $iNTHeaderSize + $i * $iTTRecordSize)
        If @error Then ContinueLoop

        If _WinAPI_SwapWord($tTTRecord.uNameID) = $iFlag Then ;1 says that this is font name. 0 for example determines copyright info
            $iStringLength = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uStringLength"))
            $iStringOffset = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uStringOffset"))
            $iEncodingID = _WinAPI_SwapWord(DllStructGetData($tTTRecord, "uEncodingID"))

            Local $sWchar = "char"
            If $iEncodingID = 1 Then
                $sWchar = "word"
                $iStringLength /= 2
            EndIf
            If Not $iStringLength Then
                $sResult = ""
                ContinueLoop
            EndIf

            $tResult = DllStructCreate($sWchar & " szTTFName[" & $iStringLength & "]", $pMemory + $iOffset + $iStringOffset + $iStorageOffset)

            If $iEncodingID = 1 Then
                $sResult = ""
                For $j = 1 To $iStringLength
                    $sResult &= ChrW(_WinAPI_SwapWord(DllStructGetData($tResult, 1, $j)))
                Next
            Else
                $sResult = $tResult.szTTFName
            EndIf

            If StringLen($sResult) > 0 Then ExitLoop
        EndIf
    Next
    Return $sResult
EndFunc   ;==>_WinAPI_GetFontMemoryResourceInfo

 

Edited by UEZ
Added workaround

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Hi,

Thanks for looking into it

the error is gone, but is it possible that it now exits the script completely (without error) when it comes across a font with an issue?

when I ran the script, it just stopped after 24 fonts (here are over 4000 in the folder)

I'll try to get more data the next few days

 

--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
 Testing total number of fonts : 4799
Debug : Found a font!C:\DEV\TEST\FONTS\AbductionIV.ttf
Debug : Getting the data .... 1
Font Family name = Abduction IV
Font SubFamily name = Regular
Debug : Done getting the data .... 

Debug : Found a font!C:\DEV\TEST\FONTS\Abe Regular.ttf
Debug : Getting the data .... 2
Font Family name = Abe
Font SubFamily name = Regular
Debug : Done getting the data .... 

+>23:22:38 AutoIt3.exe ended.rc:0
+>23:22:38 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 2.065

 

Olivier

Share this post


Link to post
Share on other sites

I found the problem

 

I had this piece of code in my script

 

$sFont = _WinAPI_GetFontResourceInfo($sFile, 1)
If Not $sFont Then
  Exit
 Else
  ConsoleWrite("Debug : Found a good font!" & $sFile & @LF)
 EndIf

 

this caused the script to exit with some fonts, although the font itself seemed fine

I took it out and even the fonts on which the script did the exit, can be processed ok, so case closed for now I guess

 

The complete testscript:

#Include <Array.au3>
#Include <File.au3>
#Include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#Include <FontConstants.au3>
#include <GDIPlus.au3>
#include <WinAPIGdi.au3>
#include <WinAPIMisc.au3>


Opt('MustDeclareVars', 1)

; Variable Declaration



Global $FileList = _FileListToArray("C:\DEV\TEST\FONTS\", '*.ttf', 1, True)
Global $FontList[UBound($FileList) - 1][2]
Global $sFile = ""
Global $sFont = ""

; Functions



Func FontGetInfoFromFile($sFile, $n, $sElement)
    Local $s = _WinAPI_GetFontResourceInfo($sFile, Default, $n)
    If Not @error And $s Then ConsoleWrite($sElement & " = " & $s & @CRLF)
    If @error Then ConsoleWrite ("ERROR!!!")
EndFunc   ;==>FontGetInfoFromFile



;Main Application

ConsoleWrite(" Testing filelist : " & UBound($FileList) & @LF)

For $i = 1 To $FileList[0]
    $sFile = $FileList[$i]
    $sFont = _WinAPI_GetFontResourceInfo($sFile, 1)
    If Not $sFont Then
        Exit
    Else
        ConsoleWrite("Debug : Found a good font!" & $sFile & @LF)
    EndIf

    ConsoleWrite("Debug : Getting the data .... " & $i & @LF)
    FontGetInfoFromFile($sFile, 0, "Copyright")
    FontGetInfoFromFile($sFile, 1, "Font Family name")
    FontGetInfoFromFile($sFile, 2, "Font SubFamily name")
    FontGetInfoFromFile($sFile, 3, "Unique font identifier")
    FontGetInfoFromFile($sFile, 4, "Font full name")
    FontGetInfoFromFile($sFile, 5, "Version string")
    FontGetInfoFromFile($sFile, 6, "Postscript name")
    FontGetInfoFromFile($sFile, 7, "Trademark")
    FontGetInfoFromFile($sFile, 8, "Manufacturer Name")
    FontGetInfoFromFile($sFile, 9, "Designer")
    FontGetInfoFromFile($sFile, 10, "Description")
    FontGetInfoFromFile($sFile, 11, "URL Vendor")
    FontGetInfoFromFile($sFile, 16, "Preferred Family (Windows only)")
    FontGetInfoFromFile($sFile, 17, "Preferred SubFamily (Windows only)")
    FontGetInfoFromFile($sFile, 18, "Compatible Full (Mac OS only)")
    FontGetInfoFromFile($sFile, 19, "Sample text")
    FontGetInfoFromFile($sFile, 20, "PostScript CID findfont name")
    FontGetInfoFromFile($sFile, 256, "Font-specific names")
    ConsoleWrite("Debug : Done getting the data .... " & @LF & @CRLF)
    ConsoleWrite(_WinAPI_GetLastError & @LF)
Next

 

Edited by LightningBit

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Dwalfware
      Hi Folks
      Can not get my head around this one.
      This function gets the DNS object s
      If you have two DNS entries fine. but if you have only one! Trouble
      $objItem.DNSServerSearchOrder[0] = Primary DNS
      $objItem.DNSServerSearchOrder[1] = Secondry DNS not always there. I need a way to return 0 if not there or the IP if its there.
      Or is there a way to tell how many objects there are in the "[?]"
      I'm terrible at WMI errors, thanks for help in advance.
      Func _GETcurrentNICinfo2() $oErrors = ObjEvent("AutoIt.Error", "Error_Handle") Local $DnsSecondry Local $objWMIService = ObjGet( "winmgmts:\\" & @ComputerName & "\root\CIMV2" ) Local $query = $objWMIService.ExecQuery("SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE Index = " & _GetSelectedNIC(), "WQL", 0x30 ) If @error Then Return 0 If NOT IsObj($query) Then Return 0 Else For $objItem In $query Return $objItem.DNSServerSearchOrder[1] next Endif EndFunc  
    • By Deye
      Hi,
      What should work @ converting the symbol's Unicode point
      included in windows 10:
      https://docs.microsoft.com/en-us/windows/uwp/design/style/segoe-ui-symbol-font
      Some Random Bad example : really Need to jump out  sorry ..
      $hBtn = GUICtrlCreateButton(ChrW(BinaryToString("0xE70E", $SB_UTF16LE) ), 260, 37, 39, 21)
      GUICtrlSetFont(-1, 13, 600, -1, "SegMDL2")
      Thanks
       
    • By vati1011
      Hey, guys.
      Currently, I'm using Opencv UDF and i'm  encountering issues with DLLOPEN(). it is failing and returning -1
      But, I cannot figure out why it is failing.
      I need help from people.
      I'm running windows 10 32bit.
      This's my code.
      #RequireAdmin $fileopen = DllOpen("opencv_core2413.dll") MsgBox(0,"Result",$fileopen) Example.au3opencv_core2413.dll
    • By genius257
      I've made a library, based on AutoItObject UDF with the goal of implementing getter and setter functionality and make it possible to define new object properties in as few steps as possible.
      Thank you to @trancexx for getting me on the right track, and all users in Hooking into the IDispatch interface for the code to get me going.
      If I've forgotten to add credit, please let me know
      Example:
      #include "AutoItObject_Internal.au3" $myCar = IDispatch() $myCar.make = 'Ford' $myCar.model = 'Mustang' $myCar.year = 1969 $myCar.__defineGetter('DisplayCar', DisplayCar) Func DisplayCar($oThis) Return 'A Beautiful ' & $oThis.parent.year & ' ' & $oThis.parent.make & ' ' & $oThis.parent.model EndFunc MsgBox(0, "", $myCar.DisplayCar) More examples: https://github.com/genius257/AutoItObject-Internal/tree/master/Examples
      Version: 2.0.0
      AutoItObject_Internal.au3
      Documentation
      Edit2 (19th March 2017):
      First of all, sorry about the lack of updates on this project. I always start too many projects and end up ignoring old projects, if I run into problems ^^'.
      So I've started moving my AutoIt scripts to GitHub. I will still post the most recent script version here.
    • By xiantez
      This script used to work on an older version of AutoIT. Currently I am running AutoIT v3.3.14.5 and it's failing.
      Func PublicIP() ;Post public facing IP address Local $url = 'https://www.google.com/search?client=opera&q=what+is+my+ip&sourceid=opera&ie=UTF-8&oe=UTF-8' Local $getIPaddress = BinaryToString(InetRead($url)) Local $sStart = 'clamp:2">' Local $sEnd = '</div>' Local $ipaddress = _StringBetween($getIPaddress, $sStart, $sEnd For $i In $ipaddress MsgBox(0, 'External IP', "Your public IP address is " & $i) Next EndFunc ;==>PublicIP The console output shows:
      "C:\Users\user\Documents\AutoIT\Scripts\WSI Tools.au3" (197) : ==> Variable must be of type "Object".: For $i In $ipaddress For $i In $ipaddress^ ERROR ->14:12:16 AutoIt3.exe ended.rc:1 +>14:12:16 AutoIt3Wrapper Finished. >Exit code: 1 Time: 9.811
×
×
  • Create New...