 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
yao_13 Master


Registrado: 29 Jul 2003Mensajes: 226
|
Publicado: Vie 15 Ene, 2010 8:21 pm Asunto: Ventanas activas -> FindWindow |
|
|
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 |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Sab 16 Ene, 2010 12:20 am Asunto: |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|