[Home] [Puzzles & Projects] [Delphi Techniques] [Math topics] [Library] [Utilities]
|
| Here is a program that uses the Windows API function EnumWindows to find and return all top-level windows or running programs. Calls to EnumWindows take two parameters, a pointer to a callback procedure which is passed the handle of each top-level window and an arbitrary parameter which I use to pass the address of a Tstringlist to hold the results. I made three versions of the callback procedure called from three different buttons - NextWindow builds a list window titles, NextProgram builds a list running programs, and NextBoth builds a list with both. Callback procedures must be specified with stdcall so that parameters passed by EnumWindows are interpreted correctly. The code to retrieve the program associated with a window handle is contained in function GetWindowExeName which returns a string representing the executable name. The details of this function are a mystery to me - I lifted it from the Delphi section of experts-exchange.com with a minor correction or two. I filter out duplicate occurrences so that only each program only appears once in the resulting list. A final button tests the main motivation for this program; an IsRunning function which takes a program name as a parameter and returns true or false depending on whether that program is currently running.
|
[Feedback] [Newsletters (subscribe/view)] [About me]Copyright © 2000-2018, Gary Darby All rights reserved. |