Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ventanas activas -> FindWindow

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ventanas activas -> FindWindow Responder citando

Buen día,
leyendo el foro, me he creado una aplicación para saber el nombre de las aplicaiones activas.

Mas aún, de las ventanas activas, pero ese es el problema , ke se supone ke me debe mostrar solo las aplicaciones en la barra de tareas, pero me muestra otras ke no lo estan,. alguien sabe como "limpiar" eso ? y dejar solo las que veo en la barra de tareas?

Este es el Código ke uso de ejemplo :

Código:
bool __stdcall TForm1::EnumWindowsProc(HWND hWnd, LPARAM lParam)
{
    TForm1 *frm = reinterpret_cast<TForm1>(lParam);
    char pszTitulo[256];
    if ( GetWindowText(hWnd, pszTitulo, sizeof(pszTitulo)) )
        frm->ListBox1->Items->Add( pszTitulo );
    return true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  EnumWindows( reinterpret_cast<WNDENUMPROC>(EnumWindowsProc), reinterpret_cast<LPARAM>(this) );
for(int i=0;i<ListBox1>Count;i++)
 {
     HWND vent;
     String Window=ListBox1->Items->Strings[i];
     vent = FindWindow(NULL,Window.c_str());
     if (vent != NULL)
     {
      if(IsWindowVisible(vent)/*||IsIconic(vent) */)
      {
       ListBox2->Items->Add(ListBox1->Items->Strings[i]);
      }
     }
 }

}


Y este es el resultado (donde se muestran mas aplicaciones de las que hay en la barra de tareas, es el ListBox de la derecha):

_________________
Sin pena, ni gloria
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Código:
//---------------------------------------------------------------------------
#include <Tlhelp32.h>
//---------------------------------------------------------------------------
String GetExeNameByWnd(HWND hWnd)
{
   HANDLE snp;
   PROCESSENTRY32 lppe;
   DWORD dwProcessId;

   String Result = "";
   GetWindowThreadProcessId(hWnd, &dwProcessId);
   snp = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   try{
     lppe.dwSize = sizeof(lppe);
     if(Process32First(snp, &lppe)){
       do{
         if(lppe.th32ProcessID == dwProcessId){
           Result = AnsiString(lppe.szExeFile);
           break;
         }
       }while(Process32Next(snp, &lppe));
     }
   }
   __finally{
     CloseHandle(snp);
   }
   return Result;
}

typedef BOOL (__stdcall *TP)();

BOOL CALLBACK GetWindows(HWND hWnd, TStrings* List)
{
    String Name = GetExeNameByWnd(hWnd);
    if(Name != "" && List->IndexOf(Name) == - 1 && IsWindowVisible(hWnd) && stricmp(Name.c_str(), "explorer.exe"))
       List->Add(Name);
    return true;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   EnumWindows((TP)GetWindows, LPARAM(Form1->ListBox1->Items));
}


Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.