Ir al contenido


Foto

Obtener las aplicaciones abiertas con ventana


  • Por favor identifícate para responder
No hay respuestas en este tema

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 01 julio 2009 - 05:42

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.