Jump to content
Sign in to follow this  

Hash Algorithm GUI Frontend - md5hash

Recommended Posts


On occasion I have need to get file checksums. I've yet to find a tool I'm totally happy with, so I wrote one that uses the Hash9.dll library included in Ward's UDF. Since hashing and encryption has been done to death, I didn't reinvent the wheel. This library is small and fast.

This post is more about the GUI I built around it. It has some unique features, and does some pretty cool stuff with AutoIt.


- select from 9 hashing algorithms

- UPPERCASE or lowercase hash output

- auto-copies single file's hash to clipboard

- session history for reviewing hashes

- easy dbl-click copy of session data to clipboard

- drag-and-drop support for any number of files

- drop two files, and an automatic comparison is done

- easy integration into the shell context menu (.reg file included, edit path to suit)

AutoIt specific:

- modification of app's system menu

- example of correct usage of WM_SYSCOMMAND message and custom ID's

- system-wide cursor changes I commented out this code as I didn't like the system wide cursor change, instead changed to GUI only cursor change.

- use of WM_DROPFILES message

- use of WM_COPYDATA message

- use of Semaphores to synchronize multiple instances launched from context integration as cool as this was, gave it up in favor of a better (IMO) queueing mechanism

- some commented code used to inculde an animated cursor as a resource (needs Zedna's resource UDF)

All options are available from the GUI's system menu, except the session history max size which is an INI only setting (defaults to 100). Enjoy!


Updated with some optimizations and a small bugfix.

UPDATE 2 (2009/09/04):

I've posted this as a full app in the PortableApps beta forum. The installer contains all the source.

New in this version:

- updated version of ward's DLL, then modified by me to support threading

- small DLL by me to initiate the threaded hashing

- hashing is done in a separate thread so the UI does not get "hung" (UI can still be moved)

UPDATE 3 (2009/09/09):

New in this version:

- optimized internal queueing mechanism

- rewrote the threading DLL in FreeBasic (smaller and easier to compile)

- app is location aware: if it is installed in PortableApps format, it saves its config in the Data directory, if not (ie standalone install) it saves its config in the app directory

Link to md5hash

Edited by wraithdu

Share this post

Link to post
Share on other sites

Lots of little things to learn from. And all well combined in something bigger. I like that.

Nice job! ...but I guess you already knew that.




Share this post

Link to post
Share on other sites

Updated, see first post for details.

Share this post

Link to post
Share on other sites

Updated, see first post.

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
Sign in to follow this