Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 18
Faust Va por buen camino
Saber el ClassNAme de una ventana

Estoy probando la función GetClassName para saber el ClassName de una ventana, pero como no soy muy bueno con los PChar y PAnsiChar, no puedo, ¿alguien me podría ayudar?

Gracias
__________________
Herr Heins Faust
Responder Con Cita
  #2  
Antiguo 29-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var ClassName: array [0..255] of Char;
begin
 GetClassName(Handle, @ClassName, SizeOf(ClassName));
 Caption := ClassName;
end;

un PChar, tambien denominado PAnsiChar es un puntero que apunta una posicion de la memoria que contiene una cadena de texto terminada por #0. Para acceder a ella podrías hacer algo como esto:

Código Delphi [-]
 FindWindow('Progman', nil);
 FindWindow(PChar('Progman')), nil);
 FindWindow(PChar(Str), nil); // Siendo Str un string

Para obtener un valor debes tener muy en cuenta cómo funciona la API, sin embargo aconsejo utilizar mi ejemplo como base.

Saludos.
Responder Con Cita
  #3  
Antiguo 29-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Muy interesante cHackAll, esto del API, siempre me deja perdido.
Se nota la mano del maestro.
saludos
Responder Con Cita
  #4  
Antiguo 29-07-2007
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 18
Faust Va por buen camino
Excelente

Muchas gracias compañero cHackAll, ahora estoy haciendo algunas pruebas

Me armé un programilla con un Edit para anotar el Caption del formulario que quiero saber que ClassName tiene, un botón para ejecutar GetClassName y un memo para guardar los ClassName que vaya viendo, pero ahora noto algo raro:

De mi formulario mi aplicación tiene como ClassName TForm1, pero de otras de mis aplicaciones su ClassName es TApplication, de una aplicación hecha en VB es ThunderRT6FormDC y de una aplicación MFC es Afx:400000:b:10013:6:302a1, con que cosas se encuentra uno, normalmente ¿cuál sería el ClassName de un Form? ¿el del que desciende p. ej. TForm?, ¿pero porque algunas de mis aplicaciones muestran TApplication?, ¿exactamente que es el ClassName que devuelve la función GetClassName?
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 30-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Faust
...¿exactamente que es el ClassName que devuelve la función GetClassName?
GetClassMame retorna el nombre de la clase de la ventana; el problema es que cuando le haces GetClassName(Handle..., estás pidiendo el nombre de la clase de la ventana "actual", cuando le haces GetClassName(Application.Handle... le estas pidiendo el nombre de la clase de la aplicación.

Cuando tu registras una clase puedes ponerle lo que quieras, así que tener una clase que englobe al 100% de las ventanas está un poco dificil.

Saludos
Responder Con Cita
Respuesta


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
¿Como saber si una ventana creada o no? Alcolea Varios 3 12-06-2007 06:32:50
Saber si una ventana esta en primer plano Yaco Varios 0 28-02-2005 02:28:26
saber en k ventana(Form) estoy Rabata Varios 1 04-06-2004 16:22:50


La franja horaria es GMT +2. Ahora son las 15:06:44.


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