ComputorEdge AutoHotkey Scripts and Useful Utility Downloads

Post your working scripts, libraries and tools for AHK v1.1 and older
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

ComputorEdge AutoHotkey Scripts and Useful Utility Downloads

23 Sep 2019, 13:47

Note: As I make major additions to the scripts page or significant changes to a script, I add new posts to this thread highlighting the new scripts/functions or changes. See the most recent posts for the latest updates.

The ComputorEdge page "Free AutoHotkey Scripts and Apps for Learning Script Writing and Generating Ideas" offers over 75 AutoHotkey scripts and Windows utilities. Most of them I wrote to demonstrate practical applications for many AutoHotkey commands and functions. A number of them offer alternative downloads for tools written by other AutoHotkey scripters—such as the powerful and useful Regular Expressions (RegEx) Tester by Robert Ryan. Some—such as the no-longer-available Windows XP Clipboard Viewer—give you a way to download a legacy tool.

Image

I attempt to use descriptive script names which give a hint as to its purpose. The page provides more information about each download.

This page acts as the primary script reference for my AutoHotkey books. I discuss how many of these scripts work in detail in my blogs and books. They contain a wealth of tips and tricks accumulated over the years.

Some of these scripts have worked their way into my regular Windows computing habits. I hope to highlight the most addicting ones in this forum. Oné or two scripts may no longer function properly (i.e. Dictionary.ahk) but continue to act as a starting point for some scripts while acting as a reference for the books.

For the most part, the downloads provide the most recent version of the script. I have not done the best job of documenting changes, but I'm trying to get better. (In my defense, almost all of the evolution of the various scripts appear in my blogs and books.)

If you want to compare code between AutoHotkey Version 1.1 with Version 2.0, the scripts marked "(v1,v2)*" offer the app in both formats.

I plan to start adding to this post links for each of my scripts but it will take a little time. That should offer direct access to the code.

AddDate.ahk
AddDate is a demonstration script for adding dates to documents. When loaded, the script uses four different methods demonstrated with Hotkey combinations:

CTRL+WIN+F1 => The datetime stamp (i.e. 20130628103349)
CTRL+WIN+F2 => The date using the FormatTime command (FormatTime, TimeString, %A_NOW%, MMMM d, yyyy)
CTRL+WIN+F3 => The date using built in variables (%A_DDD%, %A_MMM% %A_D%, %A_YYYY%)
CTRL+WIN+D => The MonthCal GUI pop-up calendar (Gui, Add, MonthCal, vDayPick)

Two Hotstrings:

Anow => Instantly add today's date formatted (September 7, 2013)
Adate => Activate MonthCal GUI pop-up

Included in the book A Beginner's Guide to AutoHotkey. Two Hotstrings included in the AutoHotkey Applications e-book.)

AddNextWeekday.ahk creates a series of Hotkeys which insert the next weekday date into any document or editing field.
Use the letter "d" (date) followed by the abbreviation for the weekday and a format number (e.g. dsun2—all lowercase letter)
as the Hotstring. (Currently only two formats— the number 1 for "5-20-18" and the number 2 for "Sunday, May 20, 2018".)
Each Hotstring calls the function Weekday() which calculates the next weekday number, then the date for that day.

AddDate.ahk2 - New AutoHotkey Version 2.0 example script.

AddressBook.ahk Included in the AutoHotkey Applications e-book.

This example of a ListView GUI keeps a database of names and addresses. The script initiates e-mail,
inserts name and address into documents, and calculates ages. A personal address and data book which uses AutoHotkey
ListView to display entries. Right-click on entry to send e-mail, insert the address in any document or calculate ages.

Always_on_Top.ahk—Plus Window Transparency - Included in the book A Beginner's Guide to AutoHotkey

Always_on_Top is a one-line script which toggles any active window always-on-top with the Hotkey combination CTRL+WIN+F8.

Code: Select all

^#F8::WinSet, AlwaysOnTop, toggle, A
In addition, three additional Hotkeys have been added to the Always_on_Top.ahk script for making a window transparent.

CTRL+WIN+F9 for semi-transparent
CTRL+WIN+F10 for opaque
CTRL+WIN+F11 for a menu of four levels of opaqueness

See Section 5.1, "Window Manipulation with the WinSet Command" in the book Jack's Motley Assortment of AutoHotkey Tips
for discussion of the above window transparency Hotkeys.

• AutoHotkey Quick Reference Script

This section of the scripts' page includes various starts on reference scripts for AutoHotkey—both versions 1.1 and 2.0. The original script depends upon an index in the AutoHotkey.com
site—which I now realize supports the "docs" tags in the forums. See this AutoHotkeyQuickRef.ahk script for the original 1.1 version.

For the most recent version of the script (AHKVer2Ref.ahk), select a V1.1 command and use the Hotkey combination CTRL+ALT+J. Currently, a message box pops up displaying key information for both V1.1 and V2.0. (Shown at right for the MsgBox command.) Use the MsgBox buttons to load V1.1 or V2.0 pages. I only made it about halfway through the lookup table. For more information see "Building a Lookup Table with an INI File (AutoHotkey Reference Tip)."

AutoHotkeyControl.ahk

A control center using the ListView GUI control for starting and stopping various independent AutoHotkey scripts,
plus a dropdown menu to use features in each script. (Included in the AutoHotkey Applications e-book.)

AutoStartToggle.ahk discussed in Chapter 13.1.6 "Automatically Launch Apps at Windows Startup" of the book Jack's Motley Assortment of AutoHotkey Tips.

The AutoStartToggle.ahk script creates Windows shortcuts in the StartUp folder for files selected in Windows File Explorer. Select the .exe or .ahk file in Windows File Explorer and use the Hotkey combination CTRL+WIN+3 to either add a shortcut to the target file in the StartUp folder or, if it already exists, remove the shortcut from the StartUp folder.

BackupText.ahk included in the book Digging Deeper Into AutoHotkey

The BackupText.ahk script copies selected text to a text file in the user's Documents folder in a file named SaveEdit.txt. Each time the CTRL+ALT+B Hotkey combination is used, AutoHotkey selects all the text in the document or Web editing field, copies it to the Windows Clipboard, then saves it to the SaveEdit.txt file. This is only for quick, temporary backup of current unsaved work. The old file is overwritten each time the routine is used. To do incremental backup for text see IncrementalSaveText.ahk.

CalorieCount.ahk Included in the AutoHotkey Applications book.

This AutoHotkey script keeps a daily log of calories consumed. It includes a special feature for importing specific food calories directly from the Internet.

ChangeCase.ahk included in the book Jack's New Beginner's Guide to AutoHotkey.

When loaded the ChangeCase script sets up Hotkey combinations which change the case of selected (highlighted) text:

CTRL+U => Change selected text to all upper case (StringUpper)
CTRL+L => Change selected text to all lower case (StringLower)
CTRL+SHIFT+U => Change selected text to all words with an initial capitalized letter (StringUpper with the parameter T)

See the LetterSwap.ahk script for another AutoHotkey editing trick.

ChangeVolume.ahk discussed in Chapter Six of the book AutoHotkey Hotkey Techniques.

One of my favorites, simply scroll the mouse wheel up or down while hovering over Windows Systems Taskbar to adjust Windows' speaker volume. The script uses conditional directives (#If expression) to isolate the mouse scroll wheel as a Hotkey.

New AutoHotkey Version 2.0 example script: ChangeVolume.ahk2

Ten down, sixty-some to go.

January 8, 2020 As I add new scripts or modify old scripts, I'll note the changes in posts added to this thread.
Last edited by jackdunning on 24 Nov 2020, 17:01, edited 12 times in total.
User avatar
kunkel321
Posts: 976
Joined: 30 Nov 2015, 21:19

Re: ComputorEdge AutoHotkey Scripts and Useful Utility Downloads

27 Sep 2019, 14:22

Thanks for putting all these in one place Jack -- Good stuff!
ste(phen|ve) kunkel
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Grandkids and the HowLong() Function

03 Oct 2019, 09:32

I've updated the age-calculating GrandKids.ahk script listed above to use the HowLong() time span function.

Image

Plus, I added a countdown to the upcoming birthday.
Last edited by jackdunning on 24 Nov 2020, 07:46, edited 2 times in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Image2Include.ahk Script

08 Oct 2019, 16:43

ImageI think I need to post more of my individual scripts in this forum (such as this MousePrecise.ahk post) from the free script page. The suggestions from other users open up many more techniques and opportunities.
For example, after I posted the original version of the MousePrecise.ahk script, I was taught by @guest3456 how to embed the Mouse2.ico file in the script. No external file needed to accompany the MousePrecise.ahk script for either running or compiling.
Using the Image2Include.ahk script, the image is now embedded in the function Create_Mouse2_ico()—another old trick I didn't know.

I plan to post the function-creating utility on my scripts page and blog about it in the near future in an effort to help preserve this valuable image embedding technique.
Last edited by jackdunning on 13 Jan 2020, 15:17, edited 1 time in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Image2Include.ahk Script Posted

18 Oct 2019, 17:56

I liked the Image2Include.ahk script well enough to add it to this page of AutoHotkey downloads.
I wrote the supporting blog, "Embed Images Directly in the AHK Script" last week.

Image

I found it simple to use and especially useful for small graphics such as icons.
Last edited by jackdunning on 24 Nov 2020, 08:18, edited 2 times in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Hotstring Menu Function

12 Nov 2019, 17:45

I've added a Hotstring menu function to my free AutoHotkey script page. It allows you to place Hotstring replacement options into pop-up menus for selection.

Image
Last edited by jackdunning on 24 Nov 2020, 08:22, edited 2 times in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Hotstring Menu Function with Variadic Parameter and Menu Column Wrapping

24 Nov 2019, 08:17

I've updated the HotstringMenu.ahk script adding a new function which uses a variadic parameter. This opens up new opportunities to use associative arrays for a variety of Hotstring applications.

It includes a condition for wrapping long menus into columns:

I plan a new blog on this topic tomorrow (November 25, 2019).

Using the following associative array and the HotstringMenuV() function call, the function creates a three-column menu which inserts fraction symbols.

Image

Code: Select all

FractionsA := {⅒: "one-tenth",⅑: "one-ninth",⅛: "one-eight",⅐: "one-seventh",⅙: "one-sixth Brk",⅕: "one-fifth"
                              ,¼: "one-fourth",⅓: "one-third Brk",⅜: "three-eights",⅖: "two-fifths",½: "one-half",⅗: "three-fifths"
                              ,⅝: "five-eights",⅔: "two-thirds",¾: "three-fourths",⅘: "four-fifths",⅚: "five-sixths",⅞: "seven-eights"}

:x*:frct::HotstringMenuV("T","HotstringMenuAction",FractionsA*)
The term "Brk" tells the script to start a new column. The term appears in what seems to be odd locations due to the For Each, Item in MenuArray array sort.
Last edited by jackdunning on 24 Nov 2020, 08:25, edited 2 times in total.
SOTE
Posts: 1426
Joined: 15 Jun 2015, 06:21

Re: ComputorEdge AutoHotkey Scripts and Useful Utility Downloads

01 Dec 2019, 02:37

Great collection of scripts! Good work.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Hotstring Submenus

09 Dec 2019, 15:53

I added a new version of the Hotstring menus script for creating submenus of array-based menus and updated it on this forum.

Image

You can find this new script on the ComputorEdge Free AutoHotkey Scripts page.
Last edited by jackdunning on 24 Nov 2020, 17:06, edited 2 times in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Save To-Do List in INI File or Windows Registry

30 Dec 2019, 14:49

I've rewritten the to-do list script in two forms and added them to my list of sample AutoHotkey scripts:

  1. ToDoListINI.ahk using an INI file to save the data table. (IniRead and IniWrite)
  2. ToDoListReg.ahk using the Windows Registry as a data table. (RegRead and RegWrite)
These scripts use the built-in record level interaction provided by the associated AutoHotkey commands to update and save the individual data items.

Image

You can find a discussion of these scripts, the associated commands, and how to relate these records to Gui ListView rows in the blog "How to Use the Windows Registry to Save Data Table Records."
Last edited by jackdunning on 24 Nov 2020, 17:08, edited 2 times in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Send Email Directly from AutoHotkey

07 Jan 2020, 17:52

I've added the EmailSend.ahk script to my AutoHotkey scripts page. This sample e-mail script is a repost of one found in the archived AutoHotkey Forum by shajul from November 29, 2010. I checked this forum but didn't find this version. It works well enough to add to my scripts page, mention in this forum, and save for posterity. I discuss it in "How to Send E-mail Directly from an AutoHotkey Script."

This script acts as a template for sending e-mail directly from AutoHotkey. You must tailor the code to your own e-mail server, username, password, recipient name and other pertinent data.

Many AutoHotkey scripts merely open the default Windows e-mail program (MailTo:) while inserting the appropriate parameters. This AutoHotkey script bypasses any e-mail programs and directly sends the message using ComObject.

Image

It worked for me and has shown itself to be reliable when run by Window Schedule to deliver a daily horoscope scraped from a Web page (image above). I discuss that horoscope mailing script in "E-mail the Daily Horoscope to Yourself."
Last edited by jackdunning on 24 Nov 2020, 17:09, edited 1 time in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Dynamic TimeDate Submenu for QuickLinks and HotstringSubmenus

21 Jan 2020, 20:12

I've added a dynamic submenu for inserting time and/or date into any documents in a variety of formats to both the QuickLinks menu script and the HotstringSubmenu script.

Image


As I demonstrate in "Add Dynamic Submenus to Static Menus Using Menu, …, DeleteAll", three steps can add a dynamic menu to any static menu:

  1. At the appropriate place in the script, create the TimeDate submenu using a dummy entry and attach it to the parent menu.
  2. Include the subroutines and functions for creating the TimeDate submenu on-the-fly shown in the posted scrips to your script.
  3. Add the appropriate commands and function calls to the main menu’s Menu, …, Show subroutine for updating the TimeDate submenu each time AutoHotkey displays the main menu. These commands first delete the submenu (Menu, TimeDate, DeleteAll), then rebuild the TimeDate submenu using the current datestamp.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Better Icon Loading for QuickLinks.ahk Menu Script

15 Feb 2020, 17:39

I added a new QL_GetIcon() function for inserting icons into the pop-up menu which replaces a number of lines of deprecated code in the QuickLinks.ahk script. For the version of the script which includes this function, see the QuickLinksTimeDateSubMenuSwitch.ahk script. With a little adapting, this function should work for other menus constructed from Windows folders and shortcuts. It uses the new Switch statement, therefore you will need a fairly current version of AutoHotkey (November 2019). It goes through a series of checks to prioritized setting icons. The top priority goes to icons embedded in Windows folders and shortcuts completing checks in the following order.

  1. Check the Desktop.ini file for embedded folder icons.
  2. Check Windows shortcuts for embedded icons.
  3. If a program shortcut, use the program icon.
  4. If an Internet .lnk file, set a globe with mouse icon.
  5. If a .url file, set a globe icon. Embedded icons not allowed.
  6. If a folder shortcut, set folder icon.
  7. Read target file extension to set default icon—if any. Add extensions and icon paths to this section to include more file types. If extension not included, Goto the Label in the Default.
  8. Add default icon.
Image
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Menu of Open Windows for Easy Activation

02 Mar 2020, 13:55

Added a new demonstration script called WindowListMenu.ahk which scans the open windows and builds an activation menu from that list. It includes the process ids in the menu items to ensure unique menu item names. Otherwise, similar menu items (e.g. multiple blank Notepad windows) would only open the topmost window.

The script detects when new windows open, then updates the menu.

Use Ctrl+Alt+W, Ctrl+Win+M, or XButton2 to open menu. (You may need to assign Hotkey to XButton2 in mouse setup app.)

Click "Rescan Windows" to manually update the list. The Menu appears in most-recently-used order from topmost down.

Image

This version of WindowList.ahk builds both the original GUI DropDownList as well as the pop-up menu.
Last edited by jackdunning on 24 Nov 2020, 17:11, edited 1 time in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Auto-Capitalize Sentences with AutoSentenceCap.ahk Hotstrings

09 Mar 2020, 14:07

In response to one of my blog readers, I wrote a short script creating sentence-capitalizing Hotstrings.

The AutoSentenceCap.ahk script:
  1. Switches any lowercase letter occurring after a period, question mark, or exclamation point with an intervening space into uppercase.
  2. Capitalizes the first letter of a new paragraph—except for the first paragraph in a document or edit field.
  3. Capitalizes the word "I"—if in lowercase.
  4. Uses the CapsLock key as a Hotkey to capitalize any word under the text cursor.
Although it requires over 100 Hotstrings, the script saves a ton of code by using the fairly new Hotstring() function in a loop to create the Hotstrings.

I found other methods using Regular Expressions (RegEx) to do the same thing. The primary advantage of using the RegEx approach is it can account for multiple spaces between the punctuation and the first letter of the next sentence.

You can find the discussion at "Auto-Capitalize the First Letter of Sentences."
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Dynamic RegEx Hotstrings Function

18 Mar 2020, 09:52

I've added a RegExHotstringApp.ahk script which includes both the RegExHotstrings() function as well as examples of how to use it.

It uses a function originally called Hotstrings() (started by polyethene, Feb 4, 2007, and found on the old archived AutoHotkey forum—not to be confused with recently-new built-in AutoHotkey Hotstring() function). I later discovered the version discussed in my blog "Dynamic Regular Expressions (RegEx) for Math Calculating Hotstrings" in the same archived forum (updated by Edd, Sep 9, 2014, the post "RegEx Dynamic Hotstrings"). Other variations of “Dynamic Hotstrings” have appeared since that time but I found that, with the arrival of the new built-in Hotstring() function and the Hotstring X option, I didn’t need the additional complexity. I only planned to use the Regular Expressions (RegEx) capability. (To save confusion with the built-in Hotstring() function, I changed the name of my copy of the function from Hotstrings() to RegExHotstrings().)

RegExHotstringsApps.ahk interprets Regular Expressions (RegEx) and delivers the results as if a Hotstring. It monitors character keystrokes as single-key Hotkeys and activates when it finds a matched pattern.

Enclose subpatterns within parentheses for use as either text replacements or Label subroutines. Call the replacement values with $1, $2, $3, respective to their order in the RegEx. Unlike the AutoHotkey RegExReplace() function. The variable $0 does not return the entire matching expression. (Use Ryan's RegEx Tester to view values.)

You can now easily replicate many of the Hotstring text replacement examples with the built-in AutoHotkey Hotstring() function using the X (execute) option. However, the Hotstring() function does not accept Regular Expressions. Therefore, the RegExHotstrings() function allows the activating of creative Hotstrings—such as calculating percentages or addition and subtraction as shown in the examples.

You can download a separate file containing only the RegExHotstrings() function for inclusion in any script or placement in an AutoHotkey library (..\Lib).

Plus, you'll find a recent article (March 16, 2020) at Jack's AutoHotkey Blog highlighting the RegExHotstrings() function.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

The Classic Eval() Function for Doing Math and On-the-fly Evaluation of AutoHotkey Expressions and Functions

28 Mar 2020, 14:10

I've added the classic Eval() function (Pulover's version) to this list of AutoHotkey Scripts and Useful Utilities.

The Eval() function evaluates one or more AutoHotkey string expressions on-the-fly. Rather than returning a result by writing complex parsing and pasting routines, simply enter the expression into Eval() as the first parameter:

Total := Eval("23+34-345/9")

Eval() places the value of the first parameter in array item Total[1]:

Total[1] 18.666667

To evaluate multiple expressions, place a comma between the items inside the quotes:

Total := Eval("23+34-345/9,Round(Sqrt(64))")

The function saves the value of the second expression in Total[2]:

Total[1] ⇒ 18.666667
Total[2] 8

Eval() also works for string functions:

Total := Eval("23+34-345/9,Round(Sqrt(64)),SubStr("Hello",1,4)")

The variable Total[3] returns the first four letters of the word "Hello":

Total[1] ⇒ 18.666667
Total[2] ⇒ 8
Total[3] Hell

In order to view a result, you must display one of the array items—often the first (i.e. Total[1]).

I wrote a short Hotkey routine for evaluating selected text:

Image

Code: Select all

!=::       ; "Alt=" key combination
  OldClipboard := ClipboardAll
  Clipboard := "" ; Clears the Clipboard
  SendInput ^c ; Copy text
  ClipWait 0 ;pause for Clipboard data
  If ErrorLevel
  {
    MsgBox, No text selected!
  }
  Value := Eval(Clipboard) ; Evaluate expression
  Sleep, 100
  MsgBox,4,Eval("%Clipboard%"), % "The value of " 
                   . Clipboard . " is " . Value[1] 
                   . "!`r`rReplace? (Y/N)"
  IfMsgBox Yes
    SendInput % Value[1]
  Clipboard := OldClipboard
Return
See the blog "The Eval() Function for Hotkey Math Calculations and Text Manipulation" for more information.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Auto-Dup Delete, Swap Words, Repeat Word/Phrase and Word Cap RegExHotstrings

21 Apr 2020, 15:16

I've expanded the examples for the RegExHotstringsApp.ahk script to include examples for word swapping, auto-dup word delete, repeat word/phrase and word cap RegEx Hotstrings. Each of these examples makes good use of the Regular Expressions (RegEx) capability of the RegExHotstrings() function.

Image

While most Hotstrings only require either the traditional double-colon format or the Hotstring function, these examples depend upon Regular Expressions to do the work. The RegExHotstrings() function makes it relatively easy.

See the blogs "Repeat Words and Phrases with RegEx Hotstrings" and "Repeat Words and Phrases with RegEx Hotstrings" for more detailed information.
Last edited by jackdunning on 24 Nov 2020, 17:13, edited 1 time in total.
User avatar
jackdunning
Posts: 126
Joined: 01 Aug 2016, 18:17
Contact:

Scrape Links from Web Page and Put Hotlinks into Tabbed GUI

16 May 2020, 19:26

I've added a new script (WebLinkFindURL.ahk) which combines a number of techniques to extract external text links from a Web page and insert them with a GUI Link control inside GUI Tab controls.

The script uses the GetActiveBrowserURL() function by Antonio Bueno to capture the URL of the current (active) browser tab.

Run the WebLinkFindURL.ahk script, open any Web page in one of the compatible browsers (most work), and use the Hotkey combination CTRL+WIN+ALT+L. The routine captures the URL (GetActiveBrowserURL() function mentioned above required), downloads the page HTML code, uses RegExMatch() function to extract external text Web links and the RegExReplace() function to clean up those links, then it places each in a GUI pop-up window as a hotlink using GUI Link controls for activation and Tab controls to wrap long lists.

The image below shows a GUI with the almost 200 links found in my AutoHotkey Scripts page.

Image

This might be useful for checking Web page links or, with a little modification, it could automatically check for broken links.

Find a discussion of "Cull Web Links from a Web Page and Activate Each in a Pop-up GUI" at Jack's AutoHotkey Blog.
Last edited by jackdunning on 24 Nov 2020, 17:14, edited 1 time in total.
User avatar
SirSocks
Posts: 360
Joined: 26 Oct 2018, 08:14

Re: ComputorEdge AutoHotkey Scripts and Useful Utility Downloads

17 May 2020, 08:51

This is an excellent library! Thank you for sharing!

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: No registered users and 127 guests