1 Screenshot

About This File

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 If you use any code from this, please leave a comment or something linking to this post, thank you.

Prev dls from old forum: 783

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 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 -
- 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 update.
- Fixed version history text.
- Added V1.9.4 version history.

What's New in Version 1.9.5


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

- Fixed crash when selecting AutoIt Help

- Set version number as 1.9.5

- Updated version history

2 people like this

User Feedback

You may only provide a review once you have downloaded the file.


  • 4
   1 of 1 member found this review helpful 1 / 1 member

Good job, It has all the basic functionality + some extra options

I am giving it 4 stars, requires a little cleanup in the code side...

Share this review

Link to review
  • Similar Content

    • marcoauto
      By marcoauto
      I need to scale an outlined GDI text in a GUI. The problem is that I can't do this. The outline is often out of the GUI
      I started from this script:
      that fit a string to windows and I changed
       $aBounds = _GDIPlus_PathGetWorldBounds($hPath) ;Get bounding rectangle of the path
      $aBounds = _GDIPlus_PathGetWorldBounds($hPath) ;Get bounding rectangle of the path with 
      $aBounds = _GDIPlus_PathGetWorldBounds($hPath,$hMatrix,$hPen) ;Get bounding rectangle of the path with pen size but doesn't work
      so, I tried to change other thins, but nothing... Sometimes works, but if I change the string often result change
      This is my script:
      #include <GUIConstantsEx.au3> #include <GDIPlus.au3> #include <array.au3> Example() Func Example() Local $iW, $iH, $hGUI, $hGraphic, $hBrush, $hPen, $hPath, $hFamily, $tLayout, $hMatrix, $aBounds ; Create GUI $iW = 650 $iH = 300 $hGUI = GUICreate("GDI+", $iW, $iH) GUISetState(@SW_SHOW) ; Draw a string using path _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;Create a graphics object from a window handle _GDIPlus_GraphicsSetSmoothingMode($hGraphic, $GDIP_SMOOTHINGMODE_HIGHQUALITY) ;Sets the graphics object rendering quality (antialiasing) ;~ _GDIPlus_GraphicsClear($hGraphic, 0xFF000000) $MergedImageBackgroundColor = 0x00000000 _GDIPlus_GraphicsClear($hGraphic, $MergedImageBackgroundColor) $hBrush = _GDIPlus_BrushCreateSolid(0xFFDD2200) $stroke_size = 15 $hPen = _GDIPlus_PenCreate(0xFFFFBB00, $stroke_size) ;stroke size in pixel $hPen2 = _GDIPlus_PenCreate(0xFFFFff00, 2) ;stroke size in pixel _GDIPlus_PenSetLineJoin($hPen,$GDIP_PENSETLINEJOIN_ROUND) $hPath = _GDIPlus_PathCreate() ;Create new path object ;~ $fSize = 20 $hFamily = _GDIPlus_FontFamilyCreate("Myriad Pro") ;Create font family object $tLayout = _GDIPlus_RectFCreate() ;Create string bounding rectangle X=0, Y=0 Local $hFormat = _GDIPlus_StringFormatCreate() _GDIPlus_PathAddString($hPath, "autoitForeverLollipop", $tLayout, $hFamily);, 0, $fSize, $hFormat) ;Add the outline of the string to the path ;~ _GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $fSize, $hFormat) ; Tranform Path to fit to window $aBounds = _GDIPlus_PathGetWorldBounds($hPath) ;Get bounding rectangle of the path $aPoints = _GDIPlus_PathGetPoints($hPath) ConsoleWrite($aBounds[0] & @CRLF) ConsoleWrite($aBounds[1] & @CRLF) ConsoleWrite($aBounds[2] & @CRLF) ConsoleWrite($aBounds[3] & @CRLF) ConsoleWrite($aPoints[$aPoints[0][0]][0] & " - " & $aPoints[1][0] & " + 2*" & $stroke_size & " = " & $aPoints[$aPoints[0][0]][0]-$aPoints[1][0]+2*$stroke_size & @CRLF) ;~ $aBounds[0] = $aBounds[0] $aBoundsNp = _GDIPlus_PathGetWorldBounds($hPath,0,$hPen) ;Get bounding rectangle of the path with pen ConsoleWrite($aBoundsNp[0] & @CRLF) ConsoleWrite($aBoundsNp[1] & @CRLF) ConsoleWrite($aBoundsNp[2] & @CRLF) ConsoleWrite($aBoundsNp[3] & @CRLF) ConsoleWrite($iW & " / 2 = " & $iW / 2 & @CRLF) ConsoleWrite("$ih / 2 = " & $iH / 2 & @CRLF) ;~ ConsoleWrite($iW & " $aBounds[2] = " & $iW / $aBounds[2] & @CRLF) ConsoleWrite($iW & " $aBoundsNp[2] = " & $iW / $aBoundsNp[2] & @CRLF) ConsoleWrite($iH & " $aBoundsNp[3] = " & $iH / $aBoundsNp[3] & @CRLF) ;~ _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;Draw path to graphics handle (GUI) ;~ _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;Fill path to graphics handle (GUI) $hMatrix = _GDIPlus_MatrixCreate() $iW = $iW - $stroke_size ;+ $stroke_size $iH = $iH - $stroke_size ConsoleWrite(" -$aBounds[0]+1*$stroke_size/72 = " & -$aBounds[0]+1*$stroke_size/72 & @CRLF) ConsoleWrite(" -1.8+1*$stroke_size/72 = " & -1.8+1*$stroke_size/72 & @CRLF) _GDIPlus_MatrixTranslate($hMatrix, -$aBounds[0]+2*$stroke_size/72, -$aBounds[1]+1*$stroke_size/72) ;Translate Matrix to the offset of the bounding rectangle ;~ _GDIPlus_MatrixTranslate($hMatrix, -1.59166666666667+0*($stroke_size/72), -$aBounds[1]+1*$stroke_size/72) ;Translate Matrix to the offset of the bounding rectangle ;~ _GDIPlus_MatrixScale($hMatrix, $iW / $aBounds[2], $iH / $aBounds[3], True) ;Scale Matrix _GDIPlus_MatrixScale($hMatrix, $iW / $aBounds[2], $iH / $aBounds[3], True) ;Scale Matrix _GDIPlus_PathTransform($hPath, $hMatrix) ;Translate and Scale Path $aBoundsNp = _GDIPlus_PathGetWorldBounds($hPath,0,$hPen) ;Get bounding rectangle of the path with pen ConsoleWrite($aBoundsNp[0] & @CRLF) ConsoleWrite($aBoundsNp[1] & @CRLF) ConsoleWrite($aBoundsNp[2] & @CRLF) ConsoleWrite($aBoundsNp[3] & @CRLF) ;~ _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;Fill path to graphics handle (GUI) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ;Draw path to graphics handle (GUI) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) ;Fill path to graphics handle (GUI) ; Loop until the user exits. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Clean up resources _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_PathDispose($hPath) _GDIPlus_PenDispose($hPen) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() EndFunc ;==>Example if you change the line 
      _GDIPlus_PathAddString($hPath, "autoitForeverLollipop", $tLayout, $hFamily);, 0, $fSize, $hFormat) ;Add the outline of the string to the path with a smaller string
      _GDIPlus_PathAddString($hPath, "autoitFitted", $tLayout, $hFamily);, 0, $fSize, $hFormat) ;Add the outline of the string to the path the result is ok
      Can someone can help me?
    • marcoauto
      By marcoauto
      Is there a function to create a stroke text?
      I have found the solution to fill the text with a texture, to make a shadow and to make a text with glow , but I can't reproduce the stoke effect.)
      I have attached an example image of what I would like to reproduce
      I have tried to adapt this script of Malkey but with no result
      The Malkey script is this (I have edit some line) and the original post is here: 
      #include <GDIPlus.au3> #include <WinAPI.au3> #include <GuiConstants.au3> #include <WindowsConstants.au3> Global $nPI = 3.1415926535897932384626433832795 Global $ghGDIPDll $hWnd = GUICreate("GDI+ Example", 800, 150) $iGlow = 2; <== Amount of Glow min = 1 Max about 5 _GDIPlus_Startup() $hGraphicGUI = _GDIPlus_GraphicsCreateFromHWND($hWnd) $hBMPBuff = _GDIPlus_BitmapCreateFromGraphics(800, 150, $hGraphicGUI) $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBMPBuff) _GDIPlus_GraphicsClear($hGraphics, 0xff003000) ; Black-green background ;~ _GDIPlus_GraphicsClear($hGraphics, 0xffffffff) ; White Background _AntiAlias($hGraphics, 4) $hFamily = _GDIPlus_FontFamilyCreate("Arial Black") $hFont = _GDIPlus_FontCreate($hFamily, 80) $hLayout = _GDIPlus_RectFCreate(0, 0, 800, 150) $hStringFormat = _GDIPlus_StringFormatCreate() _GDIPlus_StringFormatSetAlign($hStringFormat, 1) For $i = 1 To 15 Step 3 $hBrush3 = _GDIPlus_BrushCreateSolid("0x" & hex($iGlow,2) & "00ff00"); <====== Glow (Transparency) For $x = 0 To 360 Step 3 DllStructSetData($hLayout, "Y", ((18 - $i)) * Sin($x * $nPI / 180)) DllStructSetData($hLayout, "X", ((18 - $i)) * Cos($x * $nPI / 180)) $hStringFormat = _GDIPlus_StringFormatCreate() _GDIPlus_GraphicsDrawStringEx($hGraphics, "AutoIt Rocks", $hFont, $hLayout, $hStringFormat, $hBrush3) Next Next DllStructSetData($hLayout, "Y", 0) DllStructSetData($hLayout, "X", 0) $hStringFormat = _GDIPlus_StringFormatCreate() $hBrush3 = _GDIPlus_BrushCreateSolid("0xfF00FF00") _GDIPlus_GraphicsDrawStringEx($hGraphics, "AutoIt Rocks", $hFont, $hLayout, $hStringFormat, $hBrush3) GUISetState() GUIRegisterMsg(0xF, "MY_PAINT"); Register PAINT-Event 0x000F = $WM_PAINT (WindowsConstants.au3) GUIRegisterMsg(0x85, "MY_PAINT") ; $WM_NCPAINT = 0x0085 (WindowsConstants.au3)Restore after Minimize. _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBMPBuff, 0, 0) Do $msg = GUIGetMsg() Until $msg = $GUI_EVENT_CLOSE _GDIPlus_BrushDispose($hBrush3) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_FontDispose($hFont) _GDIPlus_StringFormatDispose($hStringFormat) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_GraphicsDispose($hGraphicGUI) _WinAPI_DeleteObject($hBMPBuff) _GDIPlus_Shutdown() Func _AntiAlias($hGraphics, $iMode) Local $aResult $aResult = DllCall($ghGDIPDll, "int", "GdipSetSmoothingMode", "hwnd", $hGraphics, "int", $iMode) If @error Then Return SetError(@error, @extended, False) Return SetError($aResult[0], 0, $aResult[0] = 0) EndFunc ;==>_AntiAlias ;Func to redraw on PAINT MSG Func MY_PAINT($hWnd, $msg, $wParam, $lParam) _GDIPlus_GraphicsDrawImage($hGraphicGUI, $hBMPBuff, 0, 0) _WinAPI_RedrawWindow($hWnd, "", "", BitOR($RDW_INVALIDATE, $RDW_UPDATENOW, $RDW_FRAME)) ; , $RDW_ALLCHILDREN Return $GUI_RUNDEFMSG EndFunc ;==>MY_PAINT Thank you very much,

    • Blueman
      By Blueman
      Hey Guys,
      I am Struggling with a issue that i cannot seem to fix.
      I hope that you guys can help me with this.
      I have a GUI with some text attributes, for all i use the following code;
      $Label_ts_Header = GUICtrlCreateLabel("Manual Adress", 60, 10, 500, 50) GUICtrlSetBkColor($Label_ts_Header, $COLOR_WHITE) GUICtrlSetFont ($Label_ts_Header, 26, 800, 0, "Calibri") This is all working like it should, but when i activate the GUI on another pc the text size is bigger and the GUI size is somewhat smaller.
      The problem is that it isn't on all computers, i can't seem to find the problem,..
      If i make it fit on one pc it is to small on another or to big,..
      What am i doing wrong?
      Is there some kind of attribute that i need to add to the top of my script to normalize text sizes in the script?
      EDIT: Found the problem guys, some computers has changed the text size to 125% // Can i force 100% for my GUI somehow ?
      EDIT2: Fixed it guys! // I used the Function Below to get the DPI Setting and used that to determine the text size (example below)
      Func _GDIPlus_GraphicsGetDPIRatio($iDPIDef = 96) _GDIPlus_Startup() Local $hGfx = _GDIPlus_GraphicsCreateFromHWND(0) If @error Then Return SetError(1, @extended, 0) Local $aResult #forcedef $__g_hGDIPDll, $ghGDIPDll $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetDpiX", "handle", $hGfx, "float*", 0) If @error Then Return SetError(2, @extended, 0) Local $iDPI = $aResult[2] Local $aresults[2] = [$iDPIDef / $iDPI, $iDPI / $iDPIDef] _GDIPlus_GraphicsDispose($hGfx) _GDIPlus_Shutdown() Return $aresults EndFunc ;==>_GDIPlus_GraphicsGetDPIRatio  
      $Label_S2 = GUICtrlCreateLabel("Data from The Base", 10, 300, 400, 20) GUICtrlSetBkColor($Label_S2, $COLOR_WHITE) GUICtrlSetFont ($Label_S2, 13 * _GDIPlus_GraphicsGetDPIRatio()[0])  
    • Sandy89
      By Sandy89
      Hello all,
      I have seen many solutions to get text of list items from GUI. but I need a solution to retrieve text of list items from an existing GUI, not from a newly created one. 
      there is no definite control ID or handle for each items.
      I was using navigation keys to select the list item which is not reliable. Somebody please help!
    • MuffinMan
      By MuffinMan
      I am trying to rebuild an old single signon script that has been giving us a bit of trouble lately.  I didn't write it and it was written in another script language.  If the target program is already open it will have the current user's last name as part of the window text, which I am trying to compare against the user name to see if I should just WinActivate or Process Close and start the program over.  I will be provided the username like "jones", or "smith" and the title check works fine for last names (with no spaces), but if the last name DOES contains spaces, say "Nom De Plume", then all I will be given as a username is "nomdeplume".  Is there any way (via a regex maybe) that I can still check the text on the screen and somehow ?  I have been reading about the Advanced (4) mode of WinTitleMatchMode, but it is over my head.  Any help is appreciated.  Here is a small reproducer script:
      Opt("WinTitleMatchMode", -1) Run("Notepad") WinWait("[CLASS:Notepad]", "", 10) Send ("Smith" & @CRLF & "Jones" & @CRLF & "Nom De Plume" & @CRLF) If WinExists("[CLASS:Notepad]", "jones") Then MsgBox(0,"FOUND","Found Jones") EndIf If WinExists("[CLASS:Notepad]", "nomdeplume") Then MsgBox(0,"FOUND","Found Nom De Plume") EndIf