Getting The Filename Given A Window Handle

I consulted article Article ID: Q119163 from Knowledge Base, and I think that it's too complex code. Therefore I designed and implemented three classes for this: CPerfObject, CPerfInstance and CPerfCounter. Here the code for solve the subject problem, of course with help of classes called before. Classes can be improved. Function GetNameProcess can be easly transform to give all thread from one process by searching object "Thread" and give all instances for given "ID Process". I propose hWnd window for which I must to found the process file name.
CString GetNameProcess(HWND hWnd)
GetWindowThreadProcessId(hWnd, &pID);
CPerfObject objects(_T("Process"));
int i = NULL;
if (CPerfCounter* pCounter = objects.GetCounter(_T("ID Process"), i))
 int nInstances = objects.GetNoInstances();
 for (i = 0; i < nInstances; i++)
  if (pCounter->GetValue(objects.GetInstance(i)) == pID)
   return objects.GetInstance(i)->GetName();
 return _T("unknown");

Download source - 5KB


  • How to get bitmap/icon info of a file?

    Posted by Legacy on 10/06/1999 12:00am

    Originally posted by: Pabitra Dash


    I want to know the icon/bitmap information about a file which is attached to it. When we choose properties by right clicking on a file it shows the file icon. Or in Win NT Exploerer for every file a icon is shown left to the file. This icon/bitmap info
    (ICON handle or Icon ID) I want to access in my program using win32 APIs or MFC.

    Please help.


  • A simplified version for NT and a better one for Win 9x

    Posted by Legacy on 08/24/1999 12:00am

    Originally posted by: Mathias Roth

    Hi all,

    under NT you can make good use of the GetModuleFileNameEx
    function in the PSAPI.dll, which does exactly that, what the
    old GetModuleFileName did in Win 3.1 .

    For Win 9x, it is my experience that the use of
    GetModuleFileName gives you not always the path name of
    the main executable (why?). AFAIK the only reliable
    way is here to loop over all processes (using the ToolHelp functions) until you find the process ID that matches the
    one of your window.

    For both approaches you can find all the coding you
    basically need in the KB Article #Q175030 (which deals
    with enumerationg processes, but can be easily adapted).

    Here is the link:

    Have fun, Mathias

    --- -
    (Remove '123' in my email address to reply)

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

Top White Papers and Webcasts

  • Protect Your Business against Today's Rapidly Growing Threats Your business, employees, partners, and customers are depending more and more on network connectivity, and protecting data and infrastructure has moved to the top of the IT agenda. You can't arm yourself against today's rapidly increasing threats unless you understand how they work. Read this ebook to learn more about the top 10 DNS attacks that can target your external and internal DNS infrastructure, the impact they can have on the DNS server …

  • The open source cloud computing project OpenStack has come a long way since NASA and Rackspace launched it in 2010. Backed by leading technology infrastructure providers including Cisco, Dell, EMC, HP, IBM, Intel, and VMware, OpenStack underpins significant workloads at an increasingly diverse set of organizations, including BWM, CERN, Comcast, eBay, and Wal-Mart. For CIOs engaged in broader programs to win, serve, and retain customers -- and refocus business technology (BT) spend -- a planned and pragmatic …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date