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)
{
DWORD pID = NULL;
GetWindowThreadProcessId(hWnd, &pID);
CPerfObject objects(_T("Process"));
objects.Open();
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



Comments

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

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

    Originally posted by: Pabitra Dash

    Hi,
    
    

    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.

    Regards,
    Pabitra

    Reply
  • 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:
    http://support.microsoft.com/support/kb/articles/Q175/0/30.asp

    Have fun, Mathias

    ---
    mathias@thinkred123.com - http://www.thinkred.com
    (Remove '123' in my email address to reply)

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

Top White Papers and Webcasts

  • When individual departments procure cloud service for their own use, they usually don't consider the hazardous organization-wide implications. Read this paper to learn best practices for setting up an internal, IT-based cloud brokerage function that service the entire organization. Find out how this approach enables you to retain top-down visibility and control of network security and manage the impact of cloud traffic on your WAN.

  • 2015 is shaping up to include some of the best innovation the mobile industry has ever experienced. There will be new discoveries, new technologies, and existing giants in the vendor space will test the limits to increase productivity while ensuring the confidentiality, integrity, and availability of data. While all of this innovation is taking place, enterprises must continue to remain vigilant as cybercriminals continue to look for weaknesses to steal company data, and intellectual property by infiltrating …

Most Popular Programming Stories

More for Developers

RSS Feeds

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