Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   tipo Hwnd y string (https://www.clubdelphi.com/foros/showthread.php?t=84567)

delphos1942 05-11-2013 18:21:56

tipo Hwnd y string
 
Hola!

a ver si me guiais un poco:

Tengo un string con un numero hexadecimal, como este : 0002025A
Este numero corresponde a un handle de una ventana,

necesito convertir ese string en una variable tipo hwnd para poder llamar a la funcion getwindowtext, pasarle el hwnd y que me devuelva el titulo de esa ventana.

He intentado con un typecast, pasarlo a traves de longint, y nada me ha funcionado.

Ideas?

gracias.

delphos1942 05-11-2013 18:51:52

Ok, ya lo he conseguido, el tipo hwnd es en realidad un entero sin signo por lo que

var
handle: longword;
ventana:hwnd

begin
handle:=strtoint('$'+stringdondeestaelhexadecimal);
ventana:= HWND(handle);
end


ya tengo un handle a esa ventana.

PEROOO

no logro que me lea el titulo de la ventana.

getwindowtext(ventana,titulo,10)

siendo ventana un hwnd y titulo un pchar.

delphos1942 05-11-2013 19:19:32

ACTUALIZO solucionado
************

Bueno pues parece que el getwindowtext no funciona, hay que hacer otro metodo:

var
buffer:string;
i:integer;
ventana:hwnd; // valor que tenemos del anterior ejemplo

begin
i:=sendmessage(ventana,WM_GETTEXTLENGTH,0,0); // obtengo la longitud del titulo de ventana
setlength(buffer,i); // la defino
i:=sendmessage(ventana,wm_gettext,i+1,Lparam(pchar(buffer))); // obtengo el titulo en buffer
setlength(buffer,i); // otra vez defino
showmessage(buffer); // muestro texto
end;


Gracias a todos los que me han leido.

saludos.

ecfisa 05-11-2013 21:14:11

Hola delphos1942.

Recién leo este hilo y primero que nada, te agradezco por publicar la solución que encontraste (cosa que no todos hacen). ^\||/

Por otro lado me extraña la dificultad que te presenta el uso de la función GetWindowText, en mi caso funciona correctamente.

Ejemplo:
Código Delphi [-]
...
var
  H: HWND;
  Title: array[0..254] of Char;
begin
  H := FindWindow(nil, 'Sin título: Bloc de notas');
  GetWindowText(H, Title, GetWindowTextLength(H)+1);
  ShowMessage(Title);
end;

Aprovecho también para pedirte que cuando agregues código a tu mensaje utilices las etiquetas correspondientes para hacerlo mas legible, el uso es:



Saludos :)


La franja horaria es GMT +2. Ahora son las 00:03:01.

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