Jump to content

Netstat in AutoIt - GetTcpTable (iphlpapi.dll)


x42x4b
 Share

Recommended Posts

Hello,

I was searching on forum, but didn't find it - netstat in autoit. So, I decided to make it :-).

Getting solution via "netstat.exe" isn't good for real AutoIt app maker ;).

I've started debuging netstat.exe and I found source here:

http://msdn.microsoft.com/library/default....gettcptable.asp

I took this code from @cojms1 (http://www.autoitscript.com/forum/index.php?showtopic=28617&hl=iphlpapi.dll). This code is very... hmm... honestly, I don't know why it works. I don't understand, why it crashes:

Global Const $TCP_STATE_CLOSED = 1
  Global Const  $TCP_STATE_LISTEN = 2
  Global Const  $TCP_STATE_SYN_SENT = 3
  Global Const  $TCP_STATE_SYN_RCVD = 4
  Global Const  $TCP_STATE_ESTAB = 5
  Global Const  $TCP_STATE_FIN_WAIT1 = 6
  Global Const  $TCP_STATE_FIN_WAIT2 = 7
  Global Const  $TCP_STATE_CLOSE_WAIT = 8
  Global Const  $TCP_STATE_CLOSING = 9
  Global Const  $TCP_STATE_LAST_ACK = 10
  Global Const  $TCP_STATE_TIME_WAIT = 11
  Global Const  $TCP_STATE_DELETE_TCB = 12
  
  #comments-start
Public Enum tcpStates
    TCP_STATE_CLOSED = 1
    TCP_STATE_LISTEN = 2
    TCP_STATE_SYN_SENT = 3
    TCP_STATE_SYN_RCVD = 4
    TCP_STATE_ESTAB = 5
    TCP_STATE_FIN_WAIT1 = 6
    TCP_STATE_FIN_WAIT2 = 7
    TCP_STATE_CLOSE_WAIT = 8
    TCP_STATE_CLOSING = 9
    TCP_STATE_LAST_ACK = 10
    TCP_STATE_TIME_WAIT = 11
    TCP_STATE_DELETE_TCB = 12
End Enum
#comments-end



#comments-start
'Winapi structures
Private Type MIB_TCPROW
  dwState As tcpStates
  dwLocalAddr(0 To 3) As Byte
  dwLocalPort As String * 4
  dwRemoteAddr(0 To 3) As Byte
  dwRemotePort As String * 4
End Type    

typedef struct _MIB_TCPROW {

  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
} MIB_TCPROW, 

 *PMIB_TCPROW;

#comments-end   
        
        
    $numElements = 6  
$MIB_TCPROW = "dword;dword;dword;dword;dword"
$MIB_TCPTABLE = DllStructCreate("dword;" & $MIB_TCPROW)
$lngSize = 40 * 100 + 4
$dwSize = DllStructCreate("dword")

$ret = DllCall("IPHLPAPI.DLL", "int", "GetTcpTable", "ptr", DllStructGetPtr($MIB_TCPTABLE), "ptr", $lngSize, "int", 0);get the size
;msgbox(0, "dllcall", @error)
$ret = DllCall("IPHLPAPI.DLL", "int", "GetTcpTable", "ptr", DllStructGetPtr($MIB_TCPTABLE), "ptr", $lngSize, "int", 0);get the size
;msgbox(0, "dllcall", @error)
$numEntries = DllStructGetData($MIB_TCPTABLE , 1)
msgbox(0, "dllcall", $numEntries)

;create the structure string
$strTemp = ""
for $i = 1 to $numEntries
   $strTemp &= $strStruct & ";"
next
$strTemp = StringTrimRight($strTemp, 1)
$_MIB_TCPROW = 0
$_MIB_TCPROW = DllStructCreate("dword;" & $strTemp)
$ret = DllCall("IPHLPAPI.DLL", "int", "GetTcpTable", "ptr", DllStructGetPtr($_MIB_TCPROW), "ptr", DllStructGetPtr($dwSize), "int", 0);get the size
msgbox(0, "dllcall", $ret[0])

if $ret[0] = 0 then
    $strd = DllStructGetData($_MIB_TCPROW,  1)
   for $i = 1 to 28
      $strMsg = ""
     ;$offset = (($i -1) * $numElements)
      $offset = $i - 1
      $strState = DllStructGetData($_MIB_TCPROW, $offset + 1)
     ;$strState = $ret[0]
      $strLocalIP = DllStructGetData($_MIB_TCPROW, $offset + 2)
      $ret = DllCall("wsock32.dll", "str", "inet_ntoa", "int", $strLocalIP)
      $strLocalIP = $ret[0]
      $strMask = DllStructGetData($_MIB_TCPROW, $offset + 3)
            $ret = DllCall("wsock32.dll", "str", "inet_ntoa", "int", $strMask)
      $strMask = $ret[0]
      $strBAddr = DllStructGetData($_MIB_TCPROW, $offset + 4)
      $ret = DllCall("wsock32.dll", "str", "inet_ntoa", "int", $strBAddr)
      $strBAddr = $ret[0]     
      $dwReasmSize = DllStructGetData($_MIB_TCPROW, $offset + 5)
      $unused1 = DllStructGetData($_MIB_TCPROW, $offset + 6)
      msgbox(0, $i, $strMsg)
      $strMsg = $strState & @crlf & $strLocalIP  & @crlf & $strMask & @crlf & $strBAddr & @crlf & $dwReasmSize & @crlf & $unused1 & @crlf  
      msgbox(0, $i, $strMsg) 
      
   next
endif

After working on it for 3hours, i've decided to make it clean:

; TCP list

#include <Array.au3>

Dim $number_of_elements

Const $TCP_STATE_CLOSED = 1
Const $TCP_STATE_LISTEN = 2
Const $TCP_STATE_SYN_SENT = 3
Const $TCP_STATE_SYN_RCVD = 4
Const $TCP_STATE_ESTAB = 5
Const $TCP_STATE_FIN_WAIT1 = 6
Const $TCP_STATE_FIN_WAIT2 = 7
Const $TCP_STATE_CLOSE_WAIT = 8
Const $TCP_STATE_CLOSING = 9
Const $TCP_STATE_LAST_ACK = 10
Const $TCP_STATE_TIME_WAIT = 11
Const $TCP_STATE_DELETE_TCB = 12
  

#cs
typedef struct _MIB_TCPROW { //the structure that represent 
//a single row in the tcp table
DWORD dwState;  
DWORD dwLocalAddr;  
DWORD dwLocalPort;  
DWORD dwRemoteAddr;  
DWORD dwRemotePort;
} MIB_TCPROW, *PMIB_TCPROW
#ce

$_MIB_TCPROW = "dword;dword;dword;dword;dword"

#cs
typedef struct _MIB_TCPTABLE { // The top level structure 
//that hold an array of the second structure 
DWORD   dwNumEntries; 
MIB_TCPROW table[ANY_SIZE]; //an array of undefined size
} MIB_TCPTABLE, *PMIB_TCPTABLE;
#ce

$_MIB_TCPTABLE = DllStructCreate("dword;" & $_MIB_TCPROW)

#cs

DWORD GetTcpTable(PMIB_TCPTABLE pTcpTable,PDWORD pdwSize,BOOL bOrder);
#ce
$dwSize = DllStructCreate("dword")


$lngReturn = DllCall("iphlpapi.dll", "int", "GetTcpTable", "ptr", DllStructGetPtr($_MIB_TCPTABLE), "ptr", DllStructGetPtr($dwSize), "int", 0)
msgbox(0, $lngReturn[0] & "/" & $lngReturn[1] & "/" & $lngReturn[2] , @error); for sure we have size to small :D, but we now know correct value
$lngReturn = DllCall("iphlpapi.dll", "int", "GetTcpTable", "ptr", DllStructGetPtr($_MIB_TCPTABLE), "int", $lngReturn[2], "int", 0)

if $lngReturn[0] == 0 Then
    msgbox(0, "Everything is OK", @error)
EndIf

if $lngReturn[0] == 87 Then
    msgbox(0, "Incorrect parameter", @error)
EndIf

if $lngReturn[0] == 122 Then
    msgbox(0, "Structure too small, can't gather", @error)
EndIf 

if $lngReturn[0] == 232 Then
    msgbox(0, "Not connected to a network.", @error)
EndIf

$number_of_elements = DllStructGetData($_MIB_TCPTABLE, 1)
msgbox(0, @error, $number_of_elements); number of all connections/open ports TCP

msgbox(0, "why this...", "crashes????")

The results are:

- retrives correct number of TCP connections (all)

- it crashes when connections number is changing (i think so)

I need help in:

- retrive details for connections (from $_MIB_TCPROW)

- stop crashing

Wanna be pr0? :-)

I've found something what is just great:

http://www.codeproject.com/cs/internet/iphlpapi.asp

There you'll find "IpHelperApi Undocumented functions" - GetTcpConnexion() and GetUdpConnexion().

Using those funcs gives you extra information about connection - it is PID :-).

I know, there are people on this forum, who can solve this problem.

The problem is:

AllocateAndGetTcpExTableFromStack(PMIB_TCPTABLE_EX*,

BOOL,HANDLE,DWORD,DWORD);

Please, don't think I am lazy or something... Honestly, I really don't know how to do it...

Thanks for reading this post.

1. RTFM | /dev/LOL2. RTFS | /dev/OMG3. FGI | /dev/WTF4. /dev/BBQ :)

Link to comment
Share on other sites

  • 1 month later...

have you found any solution?

Paul

What do you think :P

@x42x4b

I think it may have something to do with that code you got of netstat.exe

EDIT: This is the code in AutoIt syntax:

; TCP list

#include <Array.au3>

Dim $number_of_elements

Const $TCP_STATE_CLOSED = 1
Const $TCP_STATE_LISTEN = 2
Const $TCP_STATE_SYN_SENT = 3
Const $TCP_STATE_SYN_RCVD = 4
Const $TCP_STATE_ESTAB = 5
Const $TCP_STATE_FIN_WAIT1 = 6
Const $TCP_STATE_FIN_WAIT2 = 7
Const $TCP_STATE_CLOSE_WAIT = 8
Const $TCP_STATE_CLOSING = 9
Const $TCP_STATE_LAST_ACK = 10
Const $TCP_STATE_TIME_WAIT = 11
Const $TCP_STATE_DELETE_TCB = 12
  

#cs
typedef struct _MIB_TCPROW { //the structure that represent
//a single row in the tcp table
DWORD dwState;  
DWORD dwLocalAddr;  
DWORD dwLocalPort;  
DWORD dwRemoteAddr;  
DWORD dwRemotePort;
} MIB_TCPROW, *PMIB_TCPROW
#ce

$_MIB_TCPROW = "dword;dword;dword;dword;dword"

#cs
typedef struct _MIB_TCPTABLE { // The top level structure
//that hold an array of the second structure
DWORD    dwNumEntries;
MIB_TCPROW table[ANY_SIZE]; //an array of undefined size
} MIB_TCPTABLE, *PMIB_TCPTABLE;
#ce

$_MIB_TCPTABLE = DllStructCreate("dword;" & $_MIB_TCPROW)

#cs

DWORD GetTcpTable(PMIB_TCPTABLE pTcpTable,PDWORD pdwSize,BOOL bOrder);
#ce
$dwSize = DllStructCreate("dword")


$lngReturn = DllCall("iphlpapi.dll", "int", "GetTcpTable", "ptr", DllStructGetPtr($_MIB_TCPTABLE), "ptr", DllStructGetPtr($dwSize), "int", 0)
msgbox(0, $lngReturn[0] & "/" & $lngReturn[1] & "/" & $lngReturn[2] , @error); for sure we have size to small :D, but we now know correct value
$lngReturn = DllCall("iphlpapi.dll", "int", "GetTcpTable", "ptr", DllStructGetPtr($_MIB_TCPTABLE), "int", $lngReturn[2], "int", 0)

if $lngReturn[0] == 0 Then
    msgbox(0, "Everything is OK", @error)
EndIf

if $lngReturn[0] == 87 Then
    msgbox(0, "Incorrect parameter", @error)
EndIf

if $lngReturn[0] == 122 Then
    msgbox(0, "Structure too small, can't gather", @error)
EndIf

if $lngReturn[0] == 232 Then
    msgbox(0, "Not connected to a network.", @error)
EndIf

$number_of_elements = DllStructGetData($_MIB_TCPTABLE, 1)
msgbox(0, @error, $number_of_elements); number of all connections/open ports TCP

msgbox(0, "why this...", "crashes????")

Notice how some of it isn't colored :D

Edited by BALA
[font="Comic Sans MS"]BA-LA[/font]http://ba-la.110mb.comJoin my community, CLICK HEREAlternative links to my site:http://www.ba-la.tkhttp://www.ba-la.co.nrContact me if you would like to help with some of my projects: joeythepirate@gmail.com
Link to comment
Share on other sites

@BALA

The code that isn't colored is clearly commented out and used for reference(#cs & #ce). The syntax highlighting on the forum for autoit doesn't work perfectly, but you can clearly see that he commented out the C/C++ datatype structures. He is using them for reference when he creates the structures in AutoIt using the DllStructCreate function.

"So man has sown the wind and reaped the world. Perhaps in the next few hours there will no remembrance of the past and no hope for the future that might have been." & _"All the works of man will be consumed in the great fire after which he was created." & _"And if there is a future for man, insensitive as he is, proud and defiant in his pursuit of power, let him resolve to live it lovingly, for he knows well how to do so." & _"Then he may say once more, 'Truly the light is sweet, and what a pleasant thing it is for the eyes to see the sun.'" - The Day the Earth Caught Fire

Link to comment
Share on other sites

  • 2 weeks later...

@BALA

The code that isn't colored is clearly commented out and used for reference(#cs & #ce). The syntax highlighting on the forum for autoit doesn't work perfectly, but you can clearly see that he commented out the C/C++ datatype structures. He is using them for reference when he creates the structures in AutoIt using the DllStructCreate function.

Thank you. :) Your answer is so... complete :D.

I had some troubles with my PC, but now I going to solve this issue.

1. RTFM | /dev/LOL2. RTFS | /dev/OMG3. FGI | /dev/WTF4. /dev/BBQ :)

Link to comment
Share on other sites

  • 1 month later...

First post on this forum. This might help:

;~  _GetTCPtable( [optional handle to "ws2_32.dll" [, optional handle to "iphlpapi.dll" ] ] )
;~
;~  Return Value
;~  Success:    TCPtable[][] = 2-D array
;~                  [0][0] = number of connections
;~              for connection n:
;~                  [n][0] = connection state (integer)
;~                  [n][1] = local IP
;~                  [n][2] = local port
;~                  [n][3] = remote IP
;~                  [n][4] = remote port
;~                  [n][5] = connection state (informative text)
;~  Failure:    TCPtable[0][0] = -1

Func _GetTCPtable($WSdll = "ws2_32.dll", $IHdll = "iphlpapi.dll")

    Local Const $connState[12] = ["CLOSED", "LISTENING", "SYN_SENT", "SYN_RCVD", "ESTABLISHED", "FIN_WAIT1", _
            "FIN_WAIT2", "CLOSE_WAIT", "CLOSING", "LAST_ACK", "TIME_WAIT", "DELETE_TCB"]
    
    Local $TCPtable[1][1] = [[ -1]] ; preset to "failed"
    $dwSize = DllStructCreate("dword") ; for MIB_TCPTABLE buffer size

    $MIB_TCPTABLE = DllStructCreate("dword") ; nominal struct initially
    DllStructSetData($dwSize, 1, 0) ; force zero size
    $ret = DllCall($IHdll, "int", "GetTcpTable", "ptr", DllStructGetPtr($MIB_TCPTABLE), "ptr", DllStructGetPtr($dwSize), "int", 1) ; get size
    If @error Or $ret[0] <> 122 Then Return $TCPtable ; dllCall error or RC is *not* ERROR_INSUFFICIENT_BUFFER = 122

    $MIB_TCPTABLE = ""
    For $i = 1 To DllStructGetData($dwSize, 1) / 4 ; make to requested size of buffer
        $MIB_TCPTABLE &= "dword;"
    Next
    $MIB_TCPTABLE = DllStructCreate(StringTrimRight($MIB_TCPTABLE, 1)) ; requested struct
    DllStructSetData($dwSize, 1, DllStructGetSize($MIB_TCPTABLE)) ; recheck its size
    $ret = DllCall($IHdll, "int", "GetTcpTable", "ptr", DllStructGetPtr($MIB_TCPTABLE), "ptr", DllStructGetPtr($dwSize), "int", 1) ; get data
    If @error Or $ret[0] Then Return $TCPtable ; dllCall error or RC is Error

    $numTCPentries = DllStructGetData($MIB_TCPTABLE, 1) ; number of entries
    ReDim $TCPtable[$numTCPentries + 1][6]
    
    For $i = 1 To $numTCPentries
        $offset = ($i - 1) * 5 + 1 ; dword offset into struct
        $TCPtable[$i][0] = DllStructGetData($MIB_TCPTABLE, $offset + 1) ; integer connection state
        $TCPtable[$i][5] = $connState[$TCPtable[$i][0] - 1] ; connection state text
        
        $ret = DllCall($WSdll, "str", "inet_ntoa", "uint", DllStructGetData($MIB_TCPTABLE, $offset + 2)) ; local IP / translate
        If @error Then Return $TCPtable ; dllCall error
        $TCPtable[$i][1] = $ret[0]
        $ret = DllCall($WSdll, "ushort", "ntohs", "uint", DllStructGetData($MIB_TCPTABLE, $offset + 3)) ; local port / translate
        If @error Then Return $TCPtable ; dllCall error
        $TCPtable[$i][2] = $ret[0]
        
        If $TCPtable[$i][0] <= 2 Then ; CLOSED or LISTENING state
            $TCPtable[$i][3] = "0.0.0.0"
            $TCPtable[$i][4] = 0
        Else
            $ret = DllCall($WSdll, "str", "inet_ntoa", "uint", DllStructGetData($MIB_TCPTABLE, $offset + 4)) ; remote IP / translate
            If @error Then Return $TCPtable ; dllCall error
            $TCPtable[$i][3] = $ret[0]
            $ret = DllCall($WSdll, "ushort", "ntohs", "uint", DllStructGetData($MIB_TCPTABLE, $offset + 5)) ; remote port / translate
            If @error Then Return $TCPtable ; dllCall error
            $TCPtable[$i][4] = $ret[0]
        EndIf
    Next

    $dwSize = 0
    $MIB_TCPTABLE = 0
    $TCPtable[0][0] = $numTCPentries ; success
    Return $TCPtable
    
EndFunc   ;==>_GetTCPtable

;~  _CloseTCPconnection( LocalIP, LocalPort, RemoteIP, RemotePort, [optional handle to "ws2_32.dll" [, optional handle to "iphlpapi.dll"]] )
;~
;~  Return Value
;~  Success:    1
;~  Failure:    0

Func _CloseTCPconnection($localIP, $localPort, $remoteIP, $remotePort, $WSdll = "ws2_32.dll", $IHdll = "iphlpapi.dll")

    $MIB_TCPROW = DllStructCreate("dword;dword;dword;dword;dword") ; connection struct
    DllStructSetData($MIB_TCPROW, 1, 12) ; set to DELETE_TCB state = 12
    
    $ret = DllCall($WSdll, "uint", "inet_addr", "str", $localIP) ; local IP / translate
    If Not @error Then DllStructSetData($MIB_TCPROW, 2, $ret[0])
    $ret = DllCall($WSdll, "uint", "htons", "ushort", $localPort) ; local port / translate
    If Not @error Then DllStructSetData($MIB_TCPROW, 3, $ret[0])

    $ret = DllCall($WSdll, "uint", "inet_addr", "str", $remoteIP) ; remote IP / translate
    If Not @error Then DllStructSetData($MIB_TCPROW, 4, $ret[0])
    $ret = DllCall($WSdll, "uint", "htons", "ushort", $remotePort) ; remote port / translate
    If Not @error Then DllStructSetData($MIB_TCPROW, 5, $ret[0])

    $ret = DllCall($IHdll, "int", "SetTcpEntry", "ptr", DllStructGetPtr($MIB_TCPROW)) ; close connection
    If @error Or $ret[0] Then Return 0 ; dllCall error or RC is Error
    
    $MIB_TCPROW = 0
    Return 1 ; success
    
EndFunc   ;==>_CloseTCPconnection
Link to comment
Share on other sites

  • 2 months later...
  • 2 years later...

The code sent by Giltree is working fine, but I really want to use AllocateAndGetTcpExTableFromStack (or something else) to get the PID info, but I'm not familiar with requests to DLL... someone else have sucessfully get PID info related to a specific port?

Link to comment
Share on other sites

  • 2 years later...
  • 11 months later...

You do realize you have just resurrected the long since dead with this gem of a post? The original post was from 2006, it was necro-posted to in 2009, 2011, and now again. Someone PLEASE stop the stupidity!.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

You do realize you have just resurrected the long since dead with this gem of a post? The original post was from 2006, it was necro-posted to in 2009, 2011, and now again. Someone PLEASE stop the stupidity!.

im dont see in forum rules "forbidden bump old threads"

found this thread by google

so im really want post something

what im should do?

open new thread only for small fix?

so people find old thread and confuse again?

also nothing change since 2006

no point open new thread

only solution all "old" threads should be deleted

but then too many useful info will be gone

ps

better solution than with PID info

Edited by macwcodvs
Link to comment
Share on other sites

open new thread only for small fix?

so people find old thread and confuse again?

Yes, because common sense dictates that if you have a problem you open your own support query and not hijack someone else's. Plus, as this is a language that is being actively developed, it's constantly changing all the time, new functions, wne standards. So opening old threads can lead to confusion with outdated code being present and especially when the original poster hasn't signed in since Feb 11.

Oh, and it's BrewManNH. I think they know what they're talking about considering their reputation on the Forum. So a simple sorry (don't post that) and move on is suffice.

Edited by guinness

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Plus, as this is a language that is being actively developed, it's constantly changing all the time, new functions, wne standards.

script work nothing change since 2007

So opening old threads can lead to confusion with outdated code being present and especially when the original poster hasn't signed in since Feb 11.

really?

we answer only for "original poster"?

and 3,319 views dont mean anything?

Edited by macwcodvs
Link to comment
Share on other sites

im dont see in forum rules "forbidden bump old threads"

There should be one.

found this thread by google

So?

so im really want post something

what im should do?

open new thread only for small fix?

so people find old thread and confuse again?

Where was the confusion? Most people are not using Windows XP in this day and age.

As to whether you should have posted a response or not, my feeling is that what you posted was unhelpful to anyone and not needed. No, you shouldn't have posted in a 6 year old thread just to refute something someone said over a year ago in a thread HE shouldn't have posted in.

also nothing change since 2006

no point open new thread

No point in posting at all.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

Where was the confusion? Most people are not using Windows XP in this day and age.

http://www.netmarketshare.com/operating-system-market-share.aspx?qprid=11&qpcustomb=0

a bit more<>most

As to whether you should have posted a response or not, my feeling is that what you posted was unhelpful to anyone and not needed.

so ur feeling more important than mine?

u troll sir

No point in posting at all.

no sense talk with troll

and dont will continue

Edited by macwcodvs
Link to comment
Share on other sites

More than means most. If you have 10 things and one person has 6 and the other has 4 than the guy with 6 has most of the items.

http://dictionary.reference.com/browse/most

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...