Jump to content
MikahS

AuPad - Notepad in AutoIt ; Updated - Oct 26th, 2015

Recommended Posts

MikahS

 

AuPad

 

This is a notepad program written entirely in AutoIt. It has all the basics of notepad that you would expect. This is NOT feature complete, yet.

I have included the source code for your pleasure, and feel free to give me pointers if you'd like to help out development (This is all done

with AutoIt version 3.3.14.0) If you use any code from this, please leave a comment or something linking to this post, thank you.

 

run the install to put the AuPad.exe and AuPad.ico in the program files directory under AuPad.

Also, the install puts the RESH.au3 (all thanks to Beege) UDFs into your include folder for you.

 

Included in the .zip: Install.exe, Install.au3, AuPad.au3, AuPad.exe,

aupad.ico, uninstall.au3, Uninstall.exe, and RESH.au3

 

Current Version: 1.9.5

AuPad V1.9.5.zip

 

## Latest Update ##

---==== 1.9.5 ====---

- Fixed crash when selecting AutoIt Help

- Set version number as 1.9.5

- Updated version history

 
Current Features:

File - New, Open, Save, Save As, Exit, Print

Edit - Undo, Cut, Copy, Paste, Del, Find, Replace, Select All, Tab, Time/Date, Word Count, Line Count, Uppercase Text, Lowercase Text

Format - Word Wrap, Font, Font Color, Background Color

Help - About

---Rich Edit (picture support), Au3 Syntax Highlighting, Drag & Drop support, open any file type, Grey certain menu items if there is txt or sel, print by line support---

Compile scripts, Forum Tags, version history, web search, au3 helpfile search, text to speech, recent files, Syntax highlighting for au3 when opened

Custom Context Menu for Rich Edit and Status Bar

 

Version History:

---==== 1.0.0 ====---

- Basic file features (open, new, save, save as, print, exit, )

- Basic edit features (undo, cut, copy, paste, find, replace, delete, select all, time/date)

- Basic format features (word wrap, font)

- Basic help features (help, about)

 

---==== 1.5.0 ====---

- Took out extra save dialog in the Save() function.

- Drag and drop functionality added (thanks to AZJIO)

- Took out check for txt file when opening

- Fixed open function to delete text already in control and ask to save

- Added $ws_ex_composite to stop flicker on xp machines.

- Added default font

- Set the font in the setWW() function

- added word count functionality with a accelerator key

 

---==== 1.5.1 ====---

- Fixed word count function

- Added line count thanks to DreamVB

- Added uppercase and lowercase thanks to DreamVB

 

---==== 1.6.0 ====---

- Added better text limit

- Fixed the edit control to show the horizontal scrollbar

- Made resizing of the edit control AUTO; making the menu AUTO, instead of just 5 pixel height

- Changed any file over 100 MB to read in as binary

- Changed any file dragged and dropped to read in as binary if over 100 MB in size

- Added accelerator keys for uppercase, lowercase and save as

- Took out unnecarry MsgBox in save function

- Added print by line support

- Added ini file for settings saved

- Added setting in ini for word wrap

 

---==== 1.7.0 ====---

- Added cancel button when quitting

- Took out extra include

- Set default font into font variables

- Set default font when word wrap has been selected

- Set default font when taking off word wrap

- Added RTF files and All files to save dialog

- Added redo functionality

- added character attribute functionality for rich edit

- added rtf files to the open file dialog

- Added color support

- Added picture support

- Added background color support

- Added stream rtf from file support

- Added stream rtf to file support

- Added recent files to menu item

- Added AutoIt syntax highlighting; thanks goes to Beege for RESH UDF

- Took out word wrap function and menu item as RichEdit is word wrapped already

- Took out ini for the word wrap, but want to be very portable anyway

- Added check for character attributes change

- Added au3 file type for open and save dialog boxes

 

---==== 1.8.0 ====---

- Fixed upper, lower, tab

- Fixed resizing of window and rich edit control

- Fixed recent files

- Fixed time/date at cursor position

- Fixed RESH.au3 comment block functionality (added check in Do..While loop & added -1 to Ubound call)

 

---==== 1.8.2 ====---

- Took out HotkeySets and made GUI accelerator keys (F2 (about), F5 (time/date))

- Fixed Au3 syntax highlighting setting caret position

- Added cancel to New file dialog

- Switched to ASM RESH UDF by Beege (thanks!)

- Added check when Syntax Highlighting to not highlight if there has not been any more user interaction. Cutting down a ton of processing.

- Added check for quotes, due to problem with RESH - It will crash the entire program when trying to syntax highlight an unterminated quote.

- Commented out Addrecent as problems with messageloop and GUI dummy

- F2 was fixed to bring up help instead of about AuPad.

 

---==== 1.8.4 ====---

- added version developed in the about child window

- added tags quote, link, autoit (code). (all thanks for the Idea from The Saint's webpad -

- added GUI Accelerator keys for tags.

- added compiler GUI.

- added ability to compile au3 scripts.

- ability to open aut2exe for more options.

 

---==== 1.8.6 ====---

- fixed tag labels to show gui accelerator keys.

- fixed add recent function.

- ability to open recent files in recent files menu.

- Added text to speech ability (idea from betapad - http://www.autoitscript.com/forum/topic/38353-betapad/

- added menu item for text to speech

- accel key added for text to speech and web search

- added child gui for web search

- fixed tag accelerator keys to ctrl + shft combo.

- added ability to search web using 4 search providers in seperate gui.

- added accelerator keys for web search GUI.

- fixed version number in directives.

- added version history gui.

 

---==== 1.8.8 ====---

- took off $ES_READONLY style on version history edit control.

- fixed view about aupad event. When opening it would call folderpath() in a loop, making it unable to close.

 

---==== 1.9.0 ====---

- added ability to highlight, then websearch the selected text.

- Took out printing UDF by martin

- Took out x86 force directive. Can now be used as x64.

- ability to open AutoIt helpfile.

- ability to highlight and search the AutoIt helpfile with keyword.

- changed _guictrlrichedit_setsel() hide sel to false, instead of true, as it would hide the selection after changing the highlighting.

- printing will print to default printer only. Trying to make more portable, which will exclude print dll and library now. Changing of printer is in the works.

- took out debugging code from last version to fix folderpath() loop.

 

---==== 1.9.1 ====---

- added default style to web search button. - idea by mLipok.

- deleted the child window for web search on successfully opening IE.

- added abillity to open au3 file and have syntax highlighting start automatically. - idea by mLipok.

- added tooltip to show when syntax highlighting for AutoIt has started or ended.

 

---==== 1.9.2 ====---
- added default style to version history "okay" button (un-highlights edit text).
- added dpi awareness to about AuPad GUI. Thanks to mLipok -http://www.autoitscript.com/forum/topic/166479-writing-dpi-awareness-app-workaround/
- added context menu with much thanks to Mat -
- state changing for context menu, just like regular menu items.
- events with context menu use GUI accelerators.
 

---==== 1.9.3 ====---

- Fixed version number in directives
- Used Jefrey's code to cut back aChild function and event loop -
https://www.autoitscript.com/forum/topic/164383-aupad-notepad-in-autoit-updated-march-31th-2015/?do=findComment&comment=1255986
- Added status bar feature to add box at bottom of AuPad window.
- Added checked state to menu item for status bar to show if it is working.
- Added line and column number to status bar.
- Fixed problem with RESH adding lines unintentially during syntax highlighting.
- Added V1.9.3 version history.

 

---==== 1.9.4 ====---

- Fixed text to speech w/ new AutoIt 3.3.14.0 update.
- Fixed version history text.
- Added V1.9.4 version history.

Working on:

find next, page setup, log support, PDFCreator (depending on ease of use)

---==== 1.9.5 ====---

- Fixed crash when selecting AutoIt Help
- Set version number as 1.9.5
- Updated version history

 

If you would like to see any older versions feel free to ask and I will be happy to release them to whomever.

Edited by MikahS
New Version
  • Like 3

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
DreamVB

Nice notepad example I was thinking of making a small HTML editor for my self, and this will give me some ideas as I am only starting out in AutoIt

Thanks you for sharing this code.


On Error Resume Pulling Hair Out.

Share this post


Link to post
Share on other sites
MikahS

Thank you DreamVB!

Glad it will help you out :D

No problem, this was fun ;)


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
mLipok

Good script.

mLipok


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2018-09-20

Share this post


Link to post
Share on other sites
MikahS

Good script.

Thanks mLipok! :D


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

If the string is longer, then you need to do horizontal scrolling

Hmm. Do you mean this for word wrap? I'm sorry I did not quite understand what you meant :sweating:


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

MikahS

Maybe for you it will be interesting to

'?do=embed' frameborder='0' data-embedContent>>

Thank you for sharing this with me, I will say very nice AZJIO! :)

I think the only thing that you haven't done was the word wrap, which you can easily take from mine. ;)

EDIT: And the printing support

Edited by MikahS
  • Like 1

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

Update! Big thanks to AZJIO for many ideas and concepts

---==== 1.5.0 ====---
- Took out extra save dialog in the Save() function.
- Drag and drop functionality added (thanks to AZJIO)
- Took out check for txt file when opening
- Fixed open function to delete text already in control and ask to save
- Added $ws_ex_composite to stop flicker on xp machines.
- Added default font
- Set the font in the setWW() function
- added word count functionality with a accelerator key


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
DreamVB

Thanks for the cool update I really like this editor and I started to use it instead of Notepad Keep up the good work.

Also seems everyone else has give you ideas If you do not mind I like to also add some.

1. Auto Indent text

2. Inset file this be cool in the edit menu

3. You got word count how about Line Count.

4. Goto options.

5. Options in edit menu to uppercase lowercase, invert case.

6. How about a tools menu, that can use something like INI files to be able to allow uses to add compilers to compile there code.

Here an example of the INI  say for a plug in like C#

[Plugin]

Caption=C# Compiler

CommandLine=<Path To Compiler>

ShowStdResults=1

 

 
 
anyway I hope I give you some ideas.
  • Like 1

On Error Resume Pulling Hair Out.

Share this post


Link to post
Share on other sites
MikahS

---==== 1.5.1 ====---
- Fixed word count function
- Added line count thanks to DreamVB
- Added uppercase and lowercase thanks to DreamVB


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
AZJIO

MikahS

word wrap? not "word wrap" = +$WS_HSCROLL

I've been trying to figure out how to do it without restarting

 

Using the "Tab" I add indent. Select multiple rows and check the operation of these items

DreamVB

uppercase lowercase

For these operations, I use an external application that works with any object (TextCorrection). Edited by AZJIO

Share this post


Link to post
Share on other sites
MikahS

MikahS

word wrap? not "word wrap" = +$WS_HSCROLL

I've been trying to figure out how to do it without restarting

 

Not sure what you mean.  :geek:  I do have Word Wrap in my script, and it does work correctly with horizontal scrolling.

You'll have to actually remake the Edit Control with hscroll style and when you turn it off you'll need to remake it again.

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
AZJIO

MikahS
where? (I few times switched)
99420f3cad91t.jpg

WinXP.

$aRect = _GUICtrlMenu_GetMenuBarInfo($hGui, 0, 1) ; Specifies the height of the menu to calculate the height of the Edit

Font size is different on other computers. If the menu does not fit, it is moved to the second line.

Edited by AZJIO

Share this post


Link to post
Share on other sites
MikahS

MikahS

where? (I few times switched)

WinXP.

 

I will look at this on an XP machine when I get to the office, thank you for letting me know. ^_^

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

I have not tested it with any file of that magnitude, so I cannot give a definitive answer. :(

I will try to look around for a file of a large size and test it, but if you would like to do the same I would appreciate it greatly. :D


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

MikahS

where? (I few times switched)

99420f3cad91t.jpg

WinXP.

 

I will look at this on an XP machine when I get to the office, thank you for letting me know. ^_^

 

Okay, I tested this on a WinXP with SP 3 and it works perfectly, so I'm not sure how you are having trouble switching. Are you sure you are going into Format -> Word Wrap?

Here is a screenshot of the test that worked:

post-86910-0-15106700-1411398601_thumb.p


Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
MikahS

how good can it handle large files of > 100 gigabyte?

 

I just tested the time it took for the windows notepad to open a 159mb file and my AuPad as well.

Notepad took 5 minutes and 58 seconds to open it, and it came up with this:

Had word wrap on. Notepad took 47 seconds to open it, but still came up with the incorrect characters as seen in the screenshot below:

post-86910-0-70302200-1411401179_thumb.p

AuPad tried to open the same file and took 32 seconds and came up with the text in its entirety:

post-86910-0-84111500-1411401361_thumb.p

I'm pretty sure it is safe to say AuPad handled this task better. :)

Edited by MikahS

Snips & Scripts


My Snips: graphCPUTemp ~ getENVvars
My Scripts: Short-Order Encrypter - message and file encryption V1.6.1 ~ AuPad - Notepad written entirely in AutoIt V1.9.4

Feel free to use any of my code for your own use.                                                                                                                                                           Forum FAQ

 

Share this post


Link to post
Share on other sites
DreamVB

Looking good dude., Hay how about for tabs multiple files. should not be to hard to implant using the tab control. just an idea for you.


On Error Resume Pulling Hair Out.

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

    • nooneclose
      By nooneclose
      Hey. I'm working on a new project and was wondering if there is a better way to "update" my Column E array. 
      Here is my code: 
      Local $nI  = 0                                                            ;Creates a name index of 0: nI = Name index Local $nII = 1                                                            ;Creates a name index of 1 for second loop: nII = Name Index 2 For    $iN = 0 To $IndexRows Step 1                                       ;Checks the roster for any names that appear twice      For $iN2 = 0 To $IndexRows Step 1          if $d_Names[$nI] == $d_Names[$nII] And $d_Names[$nII] <> "" Then              Local $timeSheetName = _ArraySearch($e_Names, $d_Names[$nI], 0, 0, 0, 0, 1)              ;MsgBox($MB_SYSTEMMODAL, "Found it", $d_Names[$nI] & " In column E on Row " & $timeSheetName)              Local $eI  = $timeSheetName + 1              ;ConsoleWrite($timeSheetName & @CRLF)              ;ConsoleWrite($eI & @CRLF)              ;ConsoleWrite(@CRLF)              _Excel_RangeInsert($OpenWorkbook.ActiveSheet, "E" & $eI & ":F" & $eI, $xlShiftDown)                                                                          ;Inserts a empty cell in columns E and F.              _Excel_RangeWrite($OpenWorkbook, $OpenWorkbook.ActiveSheet, $d_Names[$nII], "E" & $eI)                                                                         ;Fills the empty cell in columns E with the doubled name              $aArray_Index = 2                                           ;Array element counter              For $Index = 2 To $IndexRows Step 1                        ;Loops through every row in the Excel file unto no rows are found or a null row is found                  $Array_Value_E = _Excel_RangeRead($OpenWorkbook, Default, "E"&$Index)                  $e_names[$aArray_Index] = $Array_Value_E                ;While the code loops every value in column E is stored in the E array (updating the array)                  $aArray_Index += 1              Next              ExitLoop          EndIf      Next      $nI  += 1      $nII += 1 Next Basically, It checks a roster for people whose name appears twice then inserts a new "row" for that person because they work in two different departments.
      I have to find that name however in Column E if two appear in column D. My code works but I think it is not as efficient as it could be. 
      Any ideas on how to improve the "update" for my array?
      (once it finds the double names in Column D it then searches for that name by going name by name in the Column E array and once it finds it inserts a new row. However, the E array doesn't have that new row stored in it so I have to "update" the array to properly find the next name)
      Any and all tips would be greatly appreciated. 
       
      NOTE: Just assume I'm opening the excel file properly please do not add that code in, it only complicates your answer. 
    • Miliardsto
      By Miliardsto
      Hello Im wondering if using this https://ohtejera.github.io/ImperiusAutoIt/#started
      UDF can i make that I can control my windows application with phone?
      like for example click button Start on android phone and then something would be done in my windows app?
    • nooneclose
      By nooneclose
      How do I properly convert this to Autoit? This is a VBA macro that I recorded in Excel.
       ActiveSheet.Outline.ShowLevels RowLevels:=2 I need this to close my subtotal once it is finished. 
      any help will be greatly appreciated. 
    • iMacg3
      By iMacg3
      Hi,
      I was looking into a way to delete a registry key (not a specific value, an entire key) if it is present. I was considering using RegRead and RegDelete. However, RegRead appears to only read values, not just keys. Is there a way to delete an entire registry key if it is present? I have heard that the below function may help.
       
      #include-once ; #UDF# ======================================================================================================================= ; Title .........: Reads\Search the name of a Key\Subkey\Value ; AutoIt Version : 3.3.8.1 ; Language ......: English ; Description ...: Lists all Keys\Subkeys\Values in a specified registry key ; Author(s) .....: DXRW4E ; Notes .........: ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ;~ _RegEnumKeyEx ;~ _RegEnumValEx ; =============================================================================================================================== #Region ;**** Global constants and vars **** Global Const $sValueTypes[12] = ["REG_NONE","REG_SZ","REG_EXPAND_SZ","REG_BINARY","REG_DWORD","REG_DWORD_BIG_ENDIAN","REG_LINK","REG_MULTI_SZ","REG_RESOURCE_LIST","REG_FULL_RESOURCE_DESCRIPTOR","REG_RESOURCE_REQUIREMENTS_LIST","REG_QWORD"] #EndRegion ;**** Global constants and vars **** ; #FUNCTION# ======================================================================================================================== ; Name...........: _RegEnumKeyEx ; Description ...: Lists all subkeys in a specified registry key ; Syntax.........: _RegEnumKeyEx($KeyName[, $iFlag = 0[, $sFilter = "*"]]) ; Parameters ....: $KeyName - The registry key to read. ; $iFlag - Optional specifies Recursion (add the flags together for multiple operations): ; |$iFlag = 0 (Default) All Key-SubKeys Recursive Mod ; |$iFlag = 1 All SubKeys Not Recursive Mod ; |$iFlag = 2 Include in ArrayList in the first element $KeyName ; |$iFlag = 16 $sFilter do Case-Sensitive matching (By Default $sFilter do Case-Insensitive matching) ; |$iFlag = 32 Disable the return the count in the first element - effectively makes the array 0-based (must use UBound() to get the size in this case). ; By Default the first element ($array[0]) contains the number of strings returned, the remaining elements ($array[1], $array[2], etc.) ; |$iFlag = 64 $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp ; |$iFlag = 128 Enum value's name (_RegEnumKeyEx Return a 2D array, maximum Array Size limit is 3999744 Key\Value) ; |$iFlag = 256 Reads a value data, this flag will be ignored if the $iFlag = 128 is not set ; $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") ; Search the Autoit3 helpfile for the word "WildCards" For details. ; $vFilter - Optional the filter to use for ValueName, $vFilter will be ignored if the $iFlag = 128 is not set ; default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") Search the Autoit3 helpfile for the word "WildCards" For details. ; $iValueTypes - Optional, set Value Types to search (Default $iValueTypes = 0 Read All), $iValueTypes will be ignored if the $iFlag = 128 is not set ; (add the flags together for multiple operations): ; 1 = REG_SZ ; 2 = REG_EXPAND_SZ ; 3 = REG_BINARY ; 4 = REG_DWORD ; 5 = REG_DWORD_BIG_ENDIAN ; 6 = REG_LINK ; 7 = REG_MULTI_SZ ; 8 = REG_RESOURCE_LIST ; 9 = REG_FULL_RESOURCE_DESCRIPTOR ; 10 = REG_RESOURCE_REQUIREMENTS_LIST ; 11 = REG_QWORD ; Return values .: Success - Return Array List (See Remarks) ; Failure - @Error ; |1 = Invalid $sFilter ; |2 = No Key-SubKey(s) Found ; |3 = Invalid $vFilter ; |4 = No Value-Name(s) Found ; Author ........: DXRW4E ; Modified.......: ; Remarks .......: The array returned is one-dimensional and is made up as follows: ; $array[0] = Number of Key-SubKeys returned ; $array[1] = 1st Key\SubKeys ; $array[2] = 2nd Key\SubKeys ; $array[3] = 3rd Key\SubKeys ; $array[n] = nth Key\SubKeys ; ; If is set the $iFlag = 128 The array returned is 2D array and is made up as follows: ; $array[0][0] = Number of Key-SubKeys returned ; $array[1][0] = 1st Key\SubKeys ; $array[1][1] = 1st Value name ; $array[1][2] = 1st Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[1][3] = 1st Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[2][0] = 2nd Key\SubKeys ; $array[2][1] = 2nd Value name ; $array[2][2] = 2nd Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[2][3] = 2nd Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[n][0] = nth Key\SubKeys ; Related .......: _RegEnumValEx() ; Link ..........: ; Example .......: _RegEnumKeyEx("HKEY_CURRENT_USER\Software\AutoIt v3") ; Note ..........: ; =================================================================================================================================== Func _RegEnumKeyEx($KeyName, $iFlag = 0, $sFilter = "*", $vFilter = "*", $iValueTypes = 0) If StringRegExp($sFilter, StringReplace("^\s*$|\v|\\|^\||\|\||\|$", Chr(BitAND($iFlag, 64) + 28) & "\|^\||\|\||\|$", "\\\\")) Then Return SetError(1, 0, "") Local $IndexSubKey[101] = [100], $SubKeyName, $BS = "\", $sKeyList, $I = 1, $sKeyFlag = BitAND($iFlag, 1), $sKeyFilter = StringReplace($sFilter, "*", "") If BitAND($iFlag, 2) Then $sKeyList = @LF & $KeyName If Not BitAND($iFlag, 64) Then $sFilter = StringRegExpReplace(BitAND($iFlag, 16) & "(?i)(", "16\(\?\i\)|\d+", "") & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sFilter, "[^*?|]+", "\\Q$0\\E"), "\\E(?=\||$)", "$0\$"), "(?<=^|\|)\\Q", "^$0"), "\*+", ".*") & ")" While $I $IndexSubKey[$I] += 1 $SubKeyName = RegEnumKey($KeyName, $IndexSubKey[$I]) If @error Then $IndexSubKey[$I] = 0 $I -= 1 $KeyName = StringLeft($KeyName, StringInStr($KeyName, "\", 1, -1) - 1) ContinueLoop EndIf If $sKeyFilter Then If StringRegExp($SubKeyName, $sFilter) Then $sKeyList &= @LF & $KeyName & $BS & $SubKeyName Else $sKeyList &= @LF & $KeyName & $BS & $SubKeyName EndIf If $sKeyFlag Then ContinueLoop $I += 1 If $I > $IndexSubKey[0] Then $IndexSubKey[0] += 100 ReDim $IndexSubKey[$IndexSubKey[0] + 1] EndIf $KeyName &= $BS & $SubKeyName WEnd If Not $sKeyList Then Return SetError(2, 0, "") If BitAND($iFlag, 128) <> 128 Then Return StringSplit(StringTrimLeft($sKeyList, 1), @LF, StringReplace(BitAND($iFlag, 32), "32", 2)) $sKeyList = _RegEnumValEx(StringSplit(StringTrimLeft($sKeyList, 1), @LF), $iFlag, $vFilter, $iValueTypes) Return SetError(@Error, 0, $sKeyList) EndFunc ; #FUNCTION# ======================================================================================================================== ; Name...........: _RegEnumValEx ; Description ...: Lists all values in a specified registry key ; Syntax.........: _RegEnumValEx($KeyName[, $iFlag = 0[, $sFilter = "*"]]) ; Parameters ....: $KeyName - The registry key to read Or one-dimensional array RegKeyList ; use _RegEnumKeyEx() to get $RegKeyList (example $RegKeyList = [3, 1st Key\SubKeys, 2st Key\SubKeys, nth Key\SubKeys]) ; |$iFlag = 16 $sFilter do Case-Sensitive matching (By Default $sFilter do Case-Insensitive matching) ; |$iFlag = 32 Disable the return the count in the first element - effectively makes the array 0-based (must use UBound() to get the size in this case). ; By Default the first element ($array[0]) contains the number of strings returned, the remaining elements ($array[1], $array[2], etc.) ; |$iFlag = 64 $sFilter is REGEXP Mod, See Pattern Parameters in StringRegExp ; |$iFlag = 256 Reads a value data ; $sFilter - Optional the filter to use, default is *. (Multiple filter groups such as "All "*.XXx|*.YYY|*.ZZZ") ; Search the Autoit3 helpfile for the word "WildCards" For details. ; $iValueTypes - Optional, set Value Types to search (Default $iValueTypes = 0 Read All) ; (add the flags together for multiple operations): ; 1 = REG_SZ ; 2 = REG_EXPAND_SZ ; 3 = REG_BINARY ; 4 = REG_DWORD ; 5 = REG_DWORD_BIG_ENDIAN ; 6 = REG_LINK ; 7 = REG_MULTI_SZ ; 8 = REG_RESOURCE_LIST ; 9 = REG_FULL_RESOURCE_DESCRIPTOR ; 10 = REG_RESOURCE_REQUIREMENTS_LIST ; 11 = REG_QWORD ; Return values .: Success - Return Array List (See Remarks) ; Failure - @Error ; |3 = Invalid $sFilter ; |4 = No Value-Name(s) Found ; Author ........: DXRW4E ; Modified.......: ; Remarks .......: The array returned is 2D array and is made up as follows: ; $array[0][0] = Number of Key-SubKeys returned ; $array[1][0] = 1st Key\SubKeys ; $array[1][1] = 1st Value name ; $array[1][2] = 1st Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[1][3] = 1st Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[2][0] = 2nd Key\SubKeys ; $array[2][1] = 2nd Value name ; $array[2][2] = 2nd Value Type (REG_NONE or REG_SZ or REG_EXPAND_SZ ect ect) ; $array[2][3] = 2nd Value Data (If is set $iFlag = 256 Else Value Data = "") ; $array[n][0] = nth Key\SubKeys ; Related .......: _RegEnumKeyEx() ; Link ..........: ; Example .......: _RegEnumValEx("HKEY_CURRENT_USER\Software\AutoIt v3") ; Note ..........: ; =================================================================================================================================== Func _RegEnumValEx($aKeyList, $iFlag = 0, $sFilter = "*", $iValueTypes = 0) If StringRegExp($sFilter, "\v") Then Return SetError(3, 0, "") If Not IsArray($aKeyList) Then $aKeyList = StringSplit($aKeyList, @LF) Local $aKeyValList[1954][4], $iKeyVal = Int(BitAND($iFlag, 32) = 0), $sKeyVal = 1953, $sRegEnumVal, $iRegEnumVal, $RegRead = BitAND($iFlag, 256), $vFilter = StringReplace($sFilter, "*", "") If Not BitAND($iFlag, 64) Then $sFilter = StringRegExpReplace(BitAND($iFlag, 16) & "(?i)(", "16\(\?\i\)|\d+", "") & StringRegExpReplace(StringRegExpReplace(StringRegExpReplace(StringRegExpReplace($sFilter, "[^*?|]+", "\\Q$0\\E"), "\\E(?=\||$)", "$0\$"), "(?<=^|\|)\\Q", "^$0"), "\*+", ".*") & ")" For $i = 1 To $aKeyList[0] $iRegEnumVal = 0 While 1 If $iKeyVal = $sKeyVal Then If $sKeyVal = 3999744 Then ExitLoop $sKeyVal *= 2 ReDim $aKeyValList[$sKeyVal + 1][4] EndIf $aKeyValList[$iKeyVal][0] = $aKeyList[$i] $iRegEnumVal += 1 $sRegEnumVal = RegEnumVal($aKeyList[$i], $iRegEnumVal) If @Error <> 0 Then If $iRegEnumVal = 1 And $vFilter = "" Then $iKeyVal += 1 ExitLoop EndIf $aKeyValList[$iKeyVal][2] = $sValueTypes[@Extended] If BitAND(@Extended, $iValueTypes) <> $iValueTypes Then ContinueLoop If $vFilter And Not StringRegExp($sRegEnumVal, $sFilter) Then ContinueLoop $aKeyValList[$iKeyVal][1] = $sRegEnumVal If $RegRead Then $aKeyValList[$iKeyVal][3] = RegRead($aKeyList[$i], $sRegEnumVal) $iKeyVal += 1 WEnd Next $sRegEnumVal = $iKeyVal - Int(BitAND($iFlag, 32) = 0) If Not $sRegEnumVal Or ($sRegEnumVal = 1 And $vFilter = "" And $aKeyValList[$iKeyVal - $sRegEnumVal][2] = "") Then Return SetError(4, 0, "") ReDim $aKeyValList[$iKeyVal][4] If Not BitAND($iFlag, 32) Then $aKeyValList[0][0] = $iKeyVal - 1 Return $aKeyValList EndFunc Thanks.
       
    • great77
      By great77
      ; put the root in a variable $sRoot = "C:\Project\PHexample\" Global $sCurrentTime = _NowCalc() ; We can use that variable here Global $aList = _FileListToArray($sRoot, Default, 2) If @error Then Exit ;;;;;;MsgBox(0, "Error", "_FileListToArray returned @error = " & @error) ;;;;;;;;;;;This is a loop that runs from 1 to the number of items listed in the first element of the returned  array For $i = 1 To UBound($aList) - 1     MsgBox(0, "Folder date", $sRoot & "" & $aList[$i] & @CRLF & @CRLF & FileGetTime($sRoot & "" & $aList[$i], 1, 1))     MsgBox(0, "Folder date", FileGetTime($sRoot & "" & $aList[$i], 1, 1))      $a_filenew = StringReplace(StringReplace(StringReplace(_NowCalc(), "/", ""), ":", ""), " ", "")       MsgBox(0, "Folder date", $a_filenew) $adex =  _DateDiff('D', FileGetTime($sRoot & "" & $aList[$i], 1, 1), $a_filenew)  MsgBox(0,"ade", $adex) Next I have a code as seen above, but the difference in time is returning zero. I understand that the date yyyymmddhhmmss but how can I find the difference.
      The purpose is to try find the difference in days. Any suggestion?  
×