Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 18-12-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por yelian Ver Mensaje
Otra duda es posible saber el titulo de otra aplicacion , es decir el titulo de un juego por ejemplo...
Pues sí. Es sencillo si conoces el HANDLE de la ventana principal o la clase de la misma, siempre que sea única o específica de la aplicación y esté registrada.

Código:
GetWindowText(hWnd, AppTitle, sizeof(AppTitle)-1);
Si no conoces nada más que el nombre del ejecutable, es mas complicado pero también se puede te pongo este ejemplo:
Código:
// Encuentra el título de la aplicación que primero encuentre del notepad.exe
// Podrás adaptarlo para otros exename e incluso para todos los procesos abiertos de ese exemane.   
HANDLE GetWindowFromProcessId(DWORD ProcessId, char* WindowName);
DWORD GetProcessId(char* ExeName);

DWORD Pid = GetProcessId("notepad.exe");
HANDLE hWnd = GetWindowFromProcessId(Pid, 0);
char AppTitle[256]; // El titulo buscado
GetWindowText(hWnd, AppTitle, sizeof(AppTitle)-1);
Funciones usadas:
Código:
DWORD GetProcessId(char* FileName)
{
   DWORD Result = 0;
   PROCESSENTRY32 proc = { sizeof(proc) };
   HANDLE hSysSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   if(hSysSnapshot != reinterpret_cast<HANDLE>(-1) && Process32First(hSysSnapshot, &proc)){
     do{
        if(!stricmp(proc.szExeFile, FileName)){
           Result = proc.th32ProcessID;
        }
     }while(Process32Next(hSysSnapshot, &proc));
   }
   CloseHandle(hSysSnapshot);
   return Result;
}
y
Código:
//---------------------------------------------------------------------------
// Traducción y adaptación a C++ del código de seoane
//---------------------------------------------------------------------------
struct TWindowRec{
   HANDLE Handle;
   DWORD  ProcessId;
   char*  WindowName;
};

BOOL CALLBACK EnumWindowsProc(HANDLE Handle, LPARAM lParam)
{
  DWORD ProcessId;
  char* Buffer;
  int   Size;

  bool Result = true;
  ProcessId = 0;
  GetWindowThreadProcessId(Handle, &ProcessId);
  if(ProcessId == ((TWindowRec*)(lParam))->ProcessId){
    if(((TWindowRec*)(lParam))->WindowName != 0){
      Size = GetWindowTextLength(Handle) + 1;
      Buffer = new char[Size];
      try{
        GetWindowText(Handle, Buffer, Size);
        if(stricmp(((TWindowRec*)(lParam))->WindowName, Buffer) == 0){
          ((TWindowRec*)(lParam))->Handle = Handle;
          Result = false;
        }
      }
      __finally{
        delete Buffer;
      }
    }else{
      ((TWindowRec*)(lParam))->Handle = Handle;
      Result = false;
    }
  }
  return Result;
}

typedef BOOL (__stdcall *TP)();
HANDLE GetWindowFromProcessId(DWORD ProcessId, char* WindowName)
{
  TWindowRec WindowRec;

//  setmem(&WindowRec, sizeof(WindowRec), 0);
  WindowRec.ProcessId = ProcessId;
  WindowRec.WindowName = WindowName;
  EnumWindows((TP)EnumWindowsProc, LPARAM(&WindowRec));
  return WindowRec.Handle;
}
Saludos.

Última edición por escafandra fecha: 18-12-2008 a las 08:19:07.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Procesos Interbase berfer Firebird e Interbase 6 07-09-2006 20:28:57
Procesos en un servidor... Berto2003 API de Windows 0 31-07-2006 10:26:30
Procesos lentos...., Luis Castillo Conexión con bases de datos 4 22-12-2005 00:20:47
Monitorear procesos victork_py Firebird e Interbase 7 27-08-2003 12:06:29


La franja horaria es GMT +2. Ahora son las 19:59:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi