Jump to content


Photo

Obtener las aplicaciones abiertas con ventana


  • Please log in to reply
No replies to this topic

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4107 posts
  • LocationMadrid - España

Posted 01 July 2009 - 05:42 AM

Alguien preguntó como obtener una lista de los procesos abiertos, pero sólo aquellos que se representan como aplicaciones con ventana. El siguiente ejemplo muestra como conseguir esa lista de aplicaciones, esté o no oculta su ventana principal:



cpp
  1. //---------------------------------------------------------------------------
  2. String GetExeNameByWnd(HWND hWnd)
  3. {
  4.   HANDLE snp;
  5.   PROCESSENTRY32 lppe;
  6.   DWORD dwProcessId;
  7.  
  8.   String Result = "";
  9.   GetWindowThreadProcessId(hWnd, &dwProcessId);
  10.   snp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  11.   try{
  12.     lppe.dwSize = sizeof(lppe);
  13.     if(Process32First(snp, &lppe)){
  14.       do{
  15.         if(lppe.th32ProcessID == dwProcessId){
  16.           Result = AnsiString(lppe.szExeFile);
  17.           break;
  18.         }
  19.       }while(Process32Next(snp, &lppe));
  20.     }
  21.   }
  22.   __finally{
  23.     CloseHandle(snp);
  24.   }
  25.   return Result;
  26. }
  27.  
  28. typedef BOOL (__stdcall *TP)();
  29.  
  30. BOOL CALLBACK GetWindows(HWND hWnd, TStrings* List)
  31. {
  32.     String Name = GetExeNameByWnd(hWnd);
  33.     if(Name != "" && List->IndexOf(Name) == - 1)
  34.       List->Add(Name);
  35.     return true;
  36. }
  37.  
  38. TStringList *List = new TStringList;
  39. EnumWindows((TP)GetWindows, LPARAM(List));



Saludos.
  • 0




IP.Board spam blocked by CleanTalk.