SetColor - A Console-Window Color-Changing Tool

This source and application has been released into the public domain by Simon Cooke (spectecjr@getwired.com)

It is provided as is, and no liability is assumed by the author for any problems it may cause. It appears to work fine :)

SetColor

A Win32 console-mode app that allows the user to set the color of following output text. This is somewhat better than the COLOR batch command, which forces the entire console window to change color.

Handy for colorizing batch scripts, and signalling error conditions.

Files

  • SetColor.cpp - source code for setcolor utility.
  • SetColor.exe - setcolor utility

Usage

The app is called with a two-character parameter.
setcolor <foregroundcolor><backgroundcolor>
The parameter is:
  • 0 Black
  • 1 Blue
  • 2 Red
  • 3 Magenta
  • 4 Green
  • 5 Cyan
  • 6 Yellow
  • 7 Gray
  • 8 Dark Gray
  • 9 Bright Blue
  • a Bright Red
  • b Bright Magenta
  • c Bright Green
  • d Bright Cyan
  • e Bright Yellow
  • f Bright White
If foreground = background, the command does nothing.

Examples

c:/>setcolor fa
- all text output following the command will appear in bright white on a red background.
c:/>setcolor D0
- all text output will be in bright cyan, on a black background.

Compilation notes

Does not use the Microsoft C runtime library for space reasons. Imports kernel32.lib ONLY (ignores default libraries); compiled with minimize size, function level linking, debug output as map-file only, release mode turned on. Linker was set to use 32 byte alignment for size reasons [see notes]; compiled executable is 2Kb long.

Note: No usage information is compiled into the app to minimize size; static data entails another segment in the generated executable, which takes up space. Read The Frickin' Manual :)

Notes

May not work as-is on Windows 98; will work fine on Windows 2000/Windows NT4.0. This is because it was compiled with an alignment setting of 32 to minimize the size of the final application.

Downloads

Download demo project - 1 Kb
Download source - 2 Kb


Comments

  • CloseHandle should not be used!

    Posted by qwe98765 on 01/27/2007 04:39pm

    In lines 38 and 45 a call to ::CloseHandle() is made. This is a mistake, because the handle is retrieved using ::GetStdHandle() function, which does not allocate a handle copy and merely retrieves existing handle to standard output. Calling ::CloseHandle() with such handle leads to closing console output for caller process (printf() and similar functions will no longer work). The only reason it works in this little program is because it doesn't output anything after a call to ::CloseHandle() and exits (console attributes persist across the processes for given console, handles don't).

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Java developers know that testing code changes can be a huge pain, and waiting for an application to redeploy after a code fix can take an eternity. Wouldn't it be great if you could see your code changes immediately, fine-tune, debug, explore and deploy code without waiting for ages? In this white paper, find out how that's possible with a Java plugin that drastically changes the way you develop, test and run Java applications. Discover the advantages of this plugin, and the changes you can expect to see …

  • Live Event Date: August 19, 2014 @ 11:00 a.m. ET / 8:00 a.m. PT You deployed your app with the Bluemix PaaS and it's gaining some serious traction, so it's time to make some tweaks. Did you design your application in a way that it can scale in the cloud? Were you even thinking about the cloud when you built the app? If not, chances are your app is going to break. Check out this upcoming eSeminar to learn various techniques for designing applications that will scale successfully in Bluemix, for the …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds