Leaderboard
Popular Content
Showing content with the highest reputation on 08/31/2016 in all areas
-
A UDF to connect to IRC using TCP Functions, as well as perform actions once connected. WANTED: Technical Writer able to create / maintain a helpfile (.chm) using the Autoit helpfile layout for an negotiated rate. Notes: Originally created by Chip. UDF Headers updated compared to old script. Error and Parameter Handling updated compared to old script. If you need to bypass the RFC compliance of this UDF, use _IRCRaw. The majority of the old functions have been modified. It will break most, if not all, scripts using the old UDF. These commands should work on every server following either RFC 1459 (legacy) or RFC 2812 (preferred). Potential Uses: IRC Chat Clients Chatroom Integration for software IRC Bots for Channel / Server Administration IRC Bots for Games such as Hangman, Mafia, and WereWolf Remote Administration without having to setup your own AutoIt server Functions: _IRCChannelInvite _IRCChannelJoin _IRCChannelKick _IRCChannelPart _IRCChannelTopic _IRCConnect _IRCDisconnect _IRCGetMsg _IRCMultiMode _IRCMultiSendMsg _IRCRaw _IRCSelfOper _IRCSelfSetNick _IRCSelfSetStatus _IRCServerPing _IRCServerPong _IRCServerTime _IRCServerVersion Extra Functions: _IRCReplyTo (IRCExtras.au3) _IRCStripSpecial (IRCExtras.au3) Downloads: Additional Links: Chips' Old UDF Topic: DISCLAIMER: While these downloads are more stable than the ones above, I do not have time to thoroughly test all functions and variable entries. If something doesn't work as expected or gives you an error please check @error and @extended variables then create a reply to this topic. Changelog: 09/06/2016: IRC.au3 Fixed : Updated Headers to UDF-spec (- instead of =) _IRCGetMsg Fixed : Incorrect Return Value On Error _IRCStripSpecial Added : Better documentation of Flags _IRCMultiSendMsg Added : Better documentation of Flags _IRCMultiSendMsg Fixed : Max Message Size based on https://forums.unrealircd.org/viewtopic.php?t=6811 Updated all files to consider themselves a standalone install by default All Functions that didn't Return anything now return Number of bytes sent Slight Performance Improvements by using Parameter Gating instead of Single Input Single Output 07/21/2016: Example.au3 Fixed : Includes Example.au3 Renamed: IRC_Example.au3 IRC.au3 Changed: Minor Performance Improvements 04/18/2016: IRCConstants.au3 Updated: A Ton of New Constants added IRCMultiSendMsg Added : Color Example Increased TCP Timeout in all Examples 04/13/2016: CUI.au3 Updated: Errors now output to Error Stream in Console (C/G)UI.au3 Fixed : Userlists (FOR REAL THIS TIME) by being sure to get the current channel Removed: Duplicate Constants File Include Removed: Local Declaration inside of While loop for Performance Updated: TCPTimeout Increased Updated: $sTemp renamed $sStrip for Readibility Example.au3 Updated: TCPTimeout Increased GUI_Client.au3 Renamed: GUI.au3 _IRCStripSpecial Added : Parameter Checking Updated: Documentation _IRCMultiSendMsg Added : Additional flags for Message Type (POSSIBLY SCRIPT BREAKING if using $_bTrim!) Updated: Example to show new flags Updated: Increase Max Message Size from 368 To 436 04/09/2016: IRC.au3 Updated: All Documentation Added : Now has a Constaznts file _IRCConnnect Fixed : Now PROPERLY returns any errors _IRCGetMsg Removed: $_iChars parameter since it gets one packet at a time and parsing is easier _IRCReplyTo Fixed : Now properly returns username _IRCStripSpecial Added : Now uses Constants File All files are now in a single ZIP Includes 2 basic IRC "clients", a CUI, and a GUI 07/15/2015: Example.au3 Added : Improved Debugging Updated: All Space Indents to Tab Idents IRC.au3 Removed: Exception skipping @error = -1 in IRCGetMsg() as 3.3.14.0 fixed it 07/15/2015: Example.au3 Added : Ping Timeout Fixed : Userlist clipping of last user IRC.au3 Fixed : IRCGetMsg() Hang 07/08/2015: Example.au3 Fixed : User Lists Fixed : Nickname now switches to backup nickname if first choice is already in use IRC.au3 Added : UDF Index Added : #include-once Updated: All Functions updated to Single Entry, Single Exit Updated: Now passes Au3Check on -q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7 01/15/2015: Example.au3 Fixed : Ampersand channels causing a crash 12/20/2014: Example.au3 Fixed : Nicks not updating on all channel lists when a user changed their nick Fixed : Nicks not deleting on all channel lists when a user quits the network 12/19/2014: Example.au3 Added : User lists Added : Channel lists Added : Bot keeps track of own nick Added : Secondary nick in case first nick choice is in use. Added : Extremely Minor performance improvements _IRCConnect Added : Improved parameter checking _IRCGetMsg Updated: Now only retrieves one packet by default (MAY be script breaking) 10/14/2014: Example.au3 Added : Shutdown TCP on exit Fixed : $Recipient now gets the actual Recipient instead of the 3rd message Added : Now exits when told to quit. IRC.au3 Added : Improved Error Reporting (Includes @extended on error) _IRCDisconnect Added : Close Socket on Disconnect _IRCStripSpecial Added : Improved Color Stripping 09/28/2014: _IRCConnect Fixed : Checking if Mode was blank. _IRCGetMsg Fixed : Spamming of 0 and incorrectly thinking there was an error. 09/28/2014: IRC.au3 Fixed : All functions now return when errors are encountered instead of continuing _IRCConnect Added : Now returns an error if optional password failed to send _IRCGetMsg Added : Now returns an error if it failed to receive a custom amount of data _IRCServerVersion Fixed : Capitalized "Version" 09/26/2014: Example.au3 Fixed : Pings not ending with @CRLF IRCExtras.au3 Added : _IRCStripSpecial(), Cleans special characters sometimes seen in IRC 09/24/2014: Example.au3 Added : Checking for PrivMsg Fixed : Infinite loop if you removed _IRCDisconnect Updated: Bot now disconnects when receiving "!quit" instead of automatically Discontinuted BETA UDF project. 04/20/2014: IRCExtras.au3 Added : Additional IRC Functions _IRChangeNick Renamed: _IRCSelfSetNick (SCRIPT BREAKING! Fix: Replace _IRCChangeNick with _IRCSelfSetNick) _IRCGetMsg Fixed : Now no longer Splits Packets if Default option is used _IRCChannelInvite Added : Invites a User to a Channel _IRCChannelKick Added : Kick a User from a channel _IRCJoinChannel Renamed: _IRCChannelJoin (SCRIPT BREAKING! Fix: Replace _IRCJoinChannel with _IRCChannelJoin) _IRCMode Renamed: _IRCMultiMode (SCRIPT BREAKING! Fix: Replace _IRCMode with _IRCMultiMode) _IRCOper Renamed: _IRCSelfOper (SCRIPT BREAKING! Fix: Replace _IRCOper with _IRCSelfOper) _IRCPartChannel Renamed: _IRCChannelPart (SCRIPT BREAKING! Fix: Replace _IRCPartChannel with _IRCChannelPart) _IRCPing Renamed: _IRCServerPing (SCRIPT BREAKING! Fix: Replace _IRCPing with _IRCServerPing) _IRCPong Renamed: _IRCServerPong (SCRIPT BREAKING! Fix: Replace _IRCPong with _IRCServerPong) _IRCSelfSetStatus Added : Sets you AFK and un-AFK _IRCSendMessage Renamed: Renamed _IRCMultiSendMsg. (SCRIPT BREAKING Fix: Replace IRCSendMessage with IRCMultiSendMsg) _IRCSendMessageRaw Renamed: Renamed _IRCRaw (SCRIPT BREAKING! Fix: Replace _IRCSendMessageRaw with _IRCRaw) _IRCServerTime Added : Get time from a Server _IRCServerVersion Added : Get Software Version from a Server _IRCTopic Renamed: _IRCChannelTopic (SCRIPT BREAKING! Fix: Replace _IRCTopic with _IRCChannelTopic) Improved Parameter detection in all Functions Renamed Functions to show who/what they effect, MASSIVE Script Breaking. Sorry! :/ 04/06/2014: _IRCGetMsg Added : Use to get IRC Messages. _IRCSetTopic Changed: Now named _IRCTopic (SCRIPT BREAKING! Fix: Replace _IRCSetTopic with _IRCTopic) Changed: Can now be used to query topic and does so by default. Use "" to blank the topic All functions now thoroughly check their parameters Updated all functions to use @extended to some errors Fixed @error returning 0 by starting all errors at 1 instead of 0 03/20/2014: _IRCChangeMode Changed: Now named _IRCMode (SCRIPT BREAKING! Fix: Replace _IRCChangeMode with _IRCMode) Changed: $_sMode is now OPTIONAL. Allowing the command to be used to Query current mode as well _IRCConnect Fixed : Missing Colon Before $_sRealName. It should now allow Real Names with spaces _IRCDisconnect Fixed : Issue with Blank Messages. Should now properly blank to Default _IRCPing Changed: $_Server is now REQUIRED. (SCRIPT BREAKING! Fix: Specify a server as Parameter 2) _IRCSendMessage Added : $_bTrim, Trims message if too long instead of breaking up the message, Default is true _IRCSetTopic Added : Command for setting a Channel Topic Updated Most Functions to include better error checking Updated Most Channel Related Functions to check for valid channels 03/16/2014: _IRCChangeMode Added : Optional parameters for channel modes Changed: Parameter ordering Target is now before Mode (SCRIPT BREAKING! Fix: Swap Parameters 2 and 3) _IRCConnect Changed: No longer exits the script on error, instead returns TCPConnect Error Code _IRCJoinChannel Added : Now Supports Channel Passwords _IRCOper Added : Command for IRC Server Operator Login Updated All Functions to have UDF standard error codes 02/24/2014: _IRCSendMessage Changed: Split Into _IRCSendMessage and _IRCSendMessageRaw (SCRIPT BREAKING! No Simple Fix Available) 02/23/2014: Made variables comply to UDF Standards http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm Removed MsgBoxes left over from old UDF Updated / Uploaded IRC.au3 Known and Reported Bugs: Message output only displays ANSI characters in CUI. (Can't Fix) Freenode requires registration for part messages thus the part message in example doesn't show up (Can't fix) Messages (e.g. PRIVMSG) are not forwarded?, when it contains umlauts/german mutations and when the message only contains a dot '.' (Unconfirmed) Warnings: Do NOT send a lot of messages at once. MOST networks will disconnect you. SOME networks will permanently ban you. A MINORITY will harshly retailiate. Do NOT use the Sleep() function in your scripts. It prevents you from receiving any new data, can disconnect your from the network, and have other undesired consequences. Use the TimerInit() and TimerDiff() functions and possibly a message queue. To Do: Possibly add in SSL functionality Create More Functions for IRC commands An entire IRC daemon written in AutoIt Possibly Include Kips TCP UDF for ASync Port Listening in Example Create Additional UDFs for extras such as CTCP, DCC, and Error Lookup Experiment with having functions check for the reply and see if reliable. Upcoming Changes: To Be Decided Support: Support for this UDF can be obtained in my Discord Server1 point
-
You can use _GUICtrlComboBoxEx_InsertString for insert at specific position.1 point
-
Directory Enquiries Challenge
stamandster reacted to czardas for a topic
@markyrocks Thanks for your contribution.1 point -
Wordperfect conversion to Word
argumentum reacted to jguinch for a topic
Another sample . I tried to open each file with Word 2013. Then v4 cannot be converted, but v8 and v11 can. Hello World from WordPerfect v8.wpd1 point -
Directory Enquiries Challenge
stamandster reacted to markyrocks for a topic
i been working on this for days..... its still not quite right but i just FINALLY got it to do remotely what i wanted it to. Its a mess and damn near impossible to decipher. But im proud of it. It finds all the matches i believe. I didn't get into partial matches. I just matched the search criteria to the phone number that all the numbers were there and in the correct order? I'm sure i could clean it up and refine it even further but i've already spent too much time on this. I was not able to do this without using 2d arrays. I will say i'm much better at using and understanding arrays. I tried to use ALOT of notes so that anyone that looks at it has some kinda guide. #include <Array.au3> Local $aArray = _ ['+262 692 12 03 00', '1800 251 996', '+1 994 951 0197', _ '091 535 98 91 61', '2397865', '08457 128276', _ '348476300192', '05842 361774', '0-800-022-5649', _ '15499514891', '0096 363 0949', '04813137349', _ '06620 220168', '07766 554433', '047 845 44 22 94', _ '0435 773 4859', '(01) 882 8565', '00441619346434', _ '09314 367090', '0 164 268 0887', '0590995603', _ '991', '0267 746 3393', '064157526153', _ '0 719 829 7756', '+1-541-754-3012', '+441347543010', _ '03890 978398', '(31) 10 7765420', '020 8568 6646', _ '0161 934 6534', '0 637 915 1283', '+44 207 882 8565', _ '0800 275002', '0750 646 9746', '982-714-3119', _ '000 300 74 52 40', '023077529227', '1 758 441 0611', _ '0183 233 0151', '02047092863', '+44 20 7946 0321', _ '04935 410618', '048 257 67 60 79'] Global $data local $search=['882 8565', '123 8762', '7543010', '07843 543287', '00441619346534', '+44208', '0015417543012'] Local $compare='0123456789',$bool,$temp,$newtemp='',$bs,$result for $x=0 to UBound($aArray) -1 ;shuffle through array $aArray[$x]=_Sort($aArray[$x]) Next for $x=0 to UBound($search) -1 ;shuffle through array $search[$x]=_Sort($search[$x]) Next ;~ _ArrayDisplay($search) ;so so now everything is broken down lets compare for $x=0 to UBound($aArray)-1 for $y=0 to UBound($search)-1 $stringinstr=StringInStr($aArray[$x],$search[$y]) if $stringinstr<>0 Then ;success MsgBox('','success','search criteria=' & $search[$y] & 'phone number result=' & $aArray[$x]) EndIf Next Next ;search for missing numbers..... _RefinedSort(1) Func _RefinedSort($data) Local $newsearcharray[ubound($search)][1] ;$newsearcharray[$x][0]=number of digits in the search criteria ;~ _ArrayDisplay($search) for $x=0 to UBound($search)-1 for $y=0 to StringLen($search[$x]) if stringlen($search[$x]) > UBound($newsearcharray, 2) Then ReDim $newsearcharray[UBound($search)][StringLen($search[$x])+1] ;this section breaks down the search criteria into individual digits and also saves the length EndIf ;~ MsgBox('','',stringlen($search[$x])) ;~ msgbox('','',UBound($newsearcharray,2)) if $y=0 Then $newsearcharray[$x][$y]=StringLen($search[$x]) EndIf if $y>=1 Then $newsearcharray[$x][$y]=StringMid($search[$x],$y,1) EndIf Next Next ;~ _ArrayDisplay($newsearcharray) ;working good to here... ;~ _ArrayDisplay($aArray) Local $temparray[UBound($aArray)] ;this just saves the original array to a temp that can be manipulated for $x=0 to UBound($aArray)-1 $temparray[$x]=$aArray[$x] Next ;lets search the temparray to see if the search numbers actually exist in the aArray for $w=0 to UBound($temparray)-1 Local $count=0 for $x=0 to UBound($newsearcharray,1) for $y=1 to UBound($newsearcharray,2) $stringinstr=StringInStr($temparray[$w],$newsearcharray[$x][$y]) if $stringinstr<>0 Then $count+=1 Else $temparray[$w]='' ExitLoop 2 EndIf if $count=$newsearcharray[$x][0] Then ;~ msgbox('','','partial match found.....') ExitLoop 2 EndIf Next Next Next ;the temp array should be at least trimmed down at this point..... ;~ _ArrayDisplay($temparray) ;good good not sure how accurate the result is to this point but progress nonetheless ;*************************************************************************************************************************************** for $w=0 to UBound($temparray)-1 ;starts the loop to shuffle through $temparray(trimmed) for $x=0 to UBound($newsearcharray,1)-1 ;starts the loop to shuffle through $newsearcharray[search criterial][digit], $newsearcharray[$x][0]=number of digits in the search ;~ MsgBox('','',$newsearcharray[$x][0]) ;testing area ;~ _ArrayDisplay($newsearcharray) ;~ _ArrayDisplay($charpos) Local $occurrence=0, $count=0, $tempoccurrence=1, $temp="" Local $charpos[2][$newsearcharray[$x][0]] $occurrence=0 if $newsearcharray[$x][0]>UBound($charpos) Then ReDim $charpos[2][$newsearcharray[$x][0]] ;the row saves how many times the digit occurs in the possible match EndIf $occurrence=0 for $y=1 to $newsearcharray[$x][0] ; shuffles through the digits in the search criteria $newsearcharray[$x][0]=number of digits in the search if $temparray[$w]='' then ;skips any entry in temparray that is blank ExitLoop 2 EndIf ;~ _ArrayDisplay($newsearcharray) for $k=1 to $newsearcharray[$x][0] ;can probably make it so this is skipped if its already verified that the digits exist $stringinstr=StringInStr($temparray[$w],$newsearcharray[$x][$y],0,$k) ;this should figure out if a particular digit occurs more than once ;~ MsgBox('','stringinstr, temparray,newsearcharray', $stringinstr & ' ' & $temparray[$w] & ' ' & $newsearcharray[$x][$y]) if $stringinstr=0 Then ExitLoop EndIf if $stringinstr<>0 then $occurrence+=1 ;~ MsgBox('','','occurrence +1') EndIf next ;~ _ArrayDisplay($charpos) if $occurrence=0 Then ;this should make it so if the digit doesn't exist at this point then exit loop and move on to the next search term ExitLoop EndIf ;so at this point we should be sure that all digits in the search term exist $charpos[0][$y-1]=StringInStr($temparray[$w],$newsearcharray[$x][$y],0,$tempoccurrence) ;the digit exists and saves its position ;~ _ArrayDisplay($charpos) $charpos[1][$y-1]=$occurrence ;saves how many times the digit occurs ;~ _ArrayDisplay($charpos) $occurrence=0 ; fucking variable ;*****************************************looks good to this point&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ;if a position is listed More than once but only has 1 occurrence then that means its in the search criteria more than once so it is not possible to be a match if $y=$newsearcharray[$x][0] Then $jesuschrist=1 for $a=0 to UBound($charpos,2)-1 ;first position............ $jesuschrist=1 for $b=$a+1 to UBound($charpos,2)-1 if $charpos[0][$a]=$charpos[0][$b] then $jesuschrist+=1 ;~ _ArrayDisplay($charpos) EndIf if $charpos[0][$a]=$charpos[0][$b] and $jesuschrist>$charpos[1][$a] then ;~ MsgBox('','charA, charB, char[1][a], Jesuschrist', $charpos[0][$a] & ' ' & $charpos[0][$b] & ' ' & $charpos[1][$a] & ' ' & $jesuschrist) ;~ MsgBox('','','exiting loop') ExitLoop 3 EndIf Next $jesuschrist=1 Next EndIf ;**********************************************looks good to here...............jezzzzz===================================================================== if $y=$newsearcharray[$x][0] Then $pp=2 for $a=0 to UBound($charpos,2)-1 ;this basicly sorts through the positions and makes sure that each occurrence of a number has a unique position...lol wtf for $b=$a+1 to UBound($charpos,2)-1 if $charpos[1][$a]=1 Then ;exits the loop if the occurrence is one ExitLoop endif ;~ _ArrayDisplay($charpos) if $charpos[0][$a]=$charpos[0][$b] Then ;~ MsgBox('','charpos[0][$b] newsearcharray temparray, pp', $charpos[0][$b] & " " & $newsearcharray[$x][$a+1] & " " & $temparray[$w] & ' ' & $pp) $charpos[0][$b]=StringInStr($temparray[$w],$newsearcharray[$x][$a+1],0,$pp) ;this is so that if a digit occurs more than once ;~ MsgBox('','charpos[0][$b] newsearcharray temparray, pp', $charpos[0][$b] & " " & $newsearcharray[$x][$a+1] & " " & $temparray[$w] & ' ' & $pp) EndIf if $charpos[0][$b]=0 then ;~ MsgBox('','','exiting loop') ExitLoop 3 EndIf ;~ _ArrayDisplay($charpos) if $charpos[1][$a]>$pp Then $pp+=1 EndIf Next $pp=2 Next ;~ MsgBox('','','made it') EndIf ; so now that every digit is accounted for and has a unique position... where getting really close..... ;~ MsgBox('','',$temparray[$w]) if $y=$newsearcharray[$x][0] Then for $a=UBound($charpos,2)-1 to 0 step -1 for $b=$a-1 to 0 step -1 ;charpos cooresponds with the digits in search in order charpos[0][0] is the first digit in newsearcharray ;~ MsgBox('','charposA, charposB',$charpos[0][$a] & ' ' & $charpos[0][$b]) if $charpos[0][$a]<$charpos[0][$b] Then ;looks at the last digit first so if any of the digits behind it are positioned ahead of then theyre out of order ;~ MsgBox('','','exiting loop') ExitLoop 3 EndIf ;~ MsgBox("","",$temparray[$w]) if $a=1 Then ;if it makes it this far then we should have a result........... for $g=1 to UBound($newsearcharray,2)-1 ;this puts the matching search criteria back together $temp&=$newsearcharray[$x][$g] Next ;~ MsgBox('','',$w) ;~ _ArrayDisplay($temparray) MsgBox('','Match','search criteria=' & $temp & 'match=' & $temparray[$w]) EndIf ;~ MsgBox('','a',$a) Next Next EndIf Next ;end of the digit shuffle loop ****************************************************************** Next Next EndFunc ;******************************************************************************************** Func _Sort($data) local $length=StringLen($data) ;finds the length of the string Local $temp[$length+1] for $y=1 to $length $temp[$y]=stringmid($data,$y,1) ;breaks the string down to individual chars Next ;_ArrayDisplay($temp) ;seems good to here for $z=1 to $length $stringinstr=StringInStr('0123456789',$temp[$z]) ;working to here...... if $stringinstr <> 0 Then ;saves the numbers to a new string with no spaces or random characters $newtemp &= $temp[$z] EndIf $data=$newtemp Next $newtemp="" Return $data EndFunc1 point -
Directory Enquiries Challenge
stamandster reacted to czardas for a topic
Just one more day left for late entries. Those who submitted more than one code example will have the last version taken to be their official entry. Thanks to all those participating and for the support of others. Good luck to everyone.1 point -
Process + Thread + DLL Functions UDFs Fully tested on O/S's from Windows 2000 -> Windows 7, in both 32-bit and 64-bit modes. *Note: the dropdown box in the GUI has issues in Windows 2000 - workaround - type 1st letter of process. Also, RemoteThreads may not start if Terminal Services is not installed on Win2000. This is a compilation of all my Process, Thread, and DLL functions (and now Driver functions) into a number of UDF modules. Most every and anything useful can be done with these functions. The best part is the GUI interfaces (ProcessFunctionsTest, ThreadFunctionsTest) which let you experiment with what functions do without even touching a line of code. And whats that? Oh yes - it creates Threads. Even 'Wow64' threads, which requires a new way of thinking =) Bundled with the core Process, Thread, and DLL UDF's are numerous support functions, examples, and even a DLL Injection module. A comparison program 'ProcessListPropertiesTest' is also included for comparison against PsaltyDS's _ProcessListProperties UDF). The GUI's pictured above are the best way to explore the possible uses of the Process + Thread functions included, but the functionality extends beyond those default function calls. For example, there are more filters for the 'List' functions, plus other functionality that is not exposed in the GUI examples. There's also the DLL Functions which aren't even touched on (but are made use of nonetheless). *For another example use of the Process Functions UDF see the ProcessGetWinPEImportExports UDF. Below is a list of all the functions available (check the function headers for more info): ProcessFunctions UDF's Thread Functions UDF's DLL Functions UDF's DriverList.au3 UDF: ; _DriverList() ; Returns a list of Drivers that were loaded by the O/S This is now a very comprehensive suite. Most everything a programmer or user would find useful is included. If by chance you can think of *any* other (useful) functions to add to this project, however, let me know. For those that need to measure a Process's CPU Usage, please see my PDH Performance Counters UDF, another comprehensive UDF suite. Special note: For most all _Process* functions that require a 'QUERY' info handle, use the constant $PROCESS_QUERY_LIMITED_INFO, which is set based on O/S. There's only one exception to this that I can think of: _ProcessMemoryVirtualQuery() which requires full Query access no matter what O/S (0x400). Thread* functions can make use of 2 constants which are set based on O/S - $THREAD_QUERY_LIMITED_INFO and $THREAD_SET_LIMITED_INFO. Experiment with the GUI's on Vista+ O/S's to see what's the minimum req's. Download the Source and/or GUI Exe's from my site Optional addition: Special NomadMemory UDF designed to work with ProcessFunctions: NomadMemoryPF.au3 Ascend4nt's AutoIT Code License agreement: While I provide this source code freely, if you do use the code in your projects, all I ask is that: If you provide source, keep the header as I have put it, OR, if you expand it, then at least acknowledge me as the original author, and any other authors I creditIf the program is released, acknowledge me in your credits (it doesn't have to state which functions came from me, though again if the source is provided - see #1)The source on it's own (as opposed to part of a project) can not be posted unless a link to the page(s) where the code were retrieved from is provided and a message stating that the latest updates will be available on the page(s) linked to.Pieces of the code can however be discussed on the threads where Ascend4nt has posted the code without worrying about further linking.UPDATES:1 point