elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [?] HWND a String (Otra Cosita)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [?] HWND a String (Otra Cosita)  (Leído 6,417 veces)
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
[?] HWND a String (Otra Cosita)
« en: 26 Julio 2013, 21:07 pm »

Buenas, como el titulo dice, solo quiero saber como convertir de HWND a String, me explico, yo tengo este source sacado de aquí: https://foro.elhacker.net/programacion_cc/source_cambiar_el_titulo_de_todas_las_ventanas_por_el_titulo_que_queramos_xd-t202613.0.html

Ahora lo que quiero, es que al cambiar el titulo de la ventana activa, que se añada lo que yo quiero al final, es decir, si la ventana activa pone Hola, y yo quiero añadir Adiós, quede Hola - Adiós, es decir, Añadir - Adios, el codigo es este:

Código
  1.  
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
  6. {
  7.      HWND activa;
  8.      HWND nonactive = NULL;
  9.  
  10.      activa=GetForegroundWindow();
  11.  
  12.      while(1)
  13.      {
  14.         if(activa != nonactive)
  15.           {
  16.                SetWindowText(activa," - Adios\0");
  17.                nonactive=activa;
  18.           }
  19.         activa=GetForegroundWindow();
  20.         Sleep(1000);
  21.      }
  22.      return 0;
  23. }
  24.  

He probado a crear un string e intentar igualarlos para hacer esto:

Código
  1. string Cadena_String;
  2.  
  3. Cadena_String = activa;
  4.  
  5. SetWindowText(activa, Cadena_String + " - Adios\0");

pero me manda a...  ;D

Alguien sabría como podría hacerlo?

Saludos y gracias  ;-)


« Última modificación: 29 Julio 2013, 14:41 pm por MeCraniDOS » En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #1 en: 26 Julio 2013, 22:49 pm »

Tenes que obtener el texto del titulo, un HWND es un HANDLER de ventana y no una cadena, asi como llamas a SetWindowText podes llamar a GetWindowText.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [?] HWND a String
« Respuesta #2 en: 26 Julio 2013, 23:43 pm »

Me salta error, la cago en algo... el error esta al usar la función que me has dicho, pero no se como cambiarlo...

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
  5. {
  6.    HWND activa; //Ventana Activa
  7.    HWND nonactive = NULL; //Ventana a modificar
  8.  
  9.    string Nombre_Ventana;
  10.  
  11.    activa = GetForegroundWindow(); //Obtenemos el nombre de la ventana activa
  12.  
  13.    int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa
  14.  
  15.    wchar_t Nombre_Array[nCharacters]; //Creamos un Array con el numero de caracteres calculado anteriormente
  16.  
  17.    GetWindowText(HWND, Nombre_Array, nCharacters); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior
  18.  
  19.    while(1) //Bucle Infinito
  20.        {
  21.            if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar seguimos
  22.            {
  23.                SetWindowText(activa, Nombre_Array + "- Adios\0"); //Cambiamos el nombre de la ventana activa
  24.  
  25.                nonactive = activa; //La ventana a modificar es ahora la ventana activa
  26.            }
  27.  
  28.            activa = GetForegroundWindow(); //Vovemos a obtener el nombre de la ventana activa
  29.  
  30.            Sleep(1000); //Esperamos...
  31.  
  32.        }
  33.  
  34. }

PD: Creo que el problema esta al pasar los datos al array  :silbar: :silbar:

Editado

Me salen estos errores:

|17|error: expected primary-expression before ',' token|

|25|error: invalid operands of types 'wchar_t [(((sizetype)(((ssizetype)nCharacters) + -1)) + 1)]' and 'const char [9]' to binary 'operator+'|

 :-\ :-\
« Última modificación: 26 Julio 2013, 23:53 pm por MeCraniDOS » En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #3 en: 27 Julio 2013, 00:00 am »

GetWindowText(HWND deberia ser activa.

Ya estas usando cadenas asi que no seria muy dificil hacer esto:
Código
  1. std::wstring Nombre_Ventana = Nombre_Array;
  2. Nombre_Ventana += L"- Adios";
  3. SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa
  4.  

Las cadenas (entre "") implican un 0 terminador.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [?] HWND a String
« Respuesta #4 en: 27 Julio 2013, 00:11 am »

GetWindowText(HWND deberia ser activa.

Me sigue dando error... Tengo ahora este code:

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
  5. {
  6.    HWND activa; //Ventana Activa
  7.    HWND nonactive = NULL; //Ventana a modificar
  8.  
  9.    string Nombre_Ventana;
  10.  
  11.    activa = GetForegroundWindow(); //Obtenemos el nombre de la ventana activa
  12.  
  13.    int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa
  14.  
  15.    char Nombre_Array[nCharacters]; //Creamos un Array con el numero de caracteres calculado anteriormente
  16.  
  17.    Nombre_Ventana = Nombre_Array; // Nombre_Ventana pasa a tener lo que tenia Nombre_Array
  18.  
  19.    Nombre_Ventana += " - Adios";
  20.  
  21.    GetWindowText(HWND, activa, nCharacters); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior
  22.  
  23.    while(Infinito) //Bucle Infinito
  24.        {
  25.            if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar...
  26.            {
  27.                SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa
  28.  
  29.                nonactive = activa; //La ventana a modificar es ahora la ventana activa
  30.            }
  31.  
  32.            activa = GetForegroundWindow(); //Vovemos a obtener el nombre de la ventana activa
  33.  
  34.            Sleep(1000); //Esperamos...
  35.  
  36.        }
  37.  
  38. }

Y me tira este error...

|21|error: expected primary-expression before ',' token|
« Última modificación: 27 Julio 2013, 00:15 am por MeCraniDOS » En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #5 en: 27 Julio 2013, 00:15 am »

Lo que estaba mal era pasarle HWND que es un tipo ... presta mas atencion la proxima vez:

Código
  1. GetWindowText(activa, Nombre_Array, nCharacters + 1);

PD. Reserva con un espacio de mas para el 0 terminador, GetWindowText pide la cantidad maxima de caracteres incluyendo en 0 terminador.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [?] HWND a String
« Respuesta #6 en: 27 Julio 2013, 00:19 am »

Lo que estaba mal era pasarle HWND que es un tipo ... presta mas atencion la proxima vez:

Vaya cagada  ;D ;D  Ahora ya si que va  :silbar: :silbar:

Saludos y gracias
En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #7 en: 27 Julio 2013, 00:20 am »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
aguml


Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: [?] HWND a String
« Respuesta #8 en: 27 Julio 2013, 19:01 pm »

una cosa, veo que haces algo como char cadena(nCaracteres) (con corchetes que mi movil no los tiene) y nCaracteres no es una constante sino que es una variable. Eso a mi no me dejaria ni compilar. Deberias usar calloc, malloc, o new en c++) o VirtualAlloc en windows para reservar memoria en tiempo de ejecucion ya que de la manera que lo haces, al ejecutarse no sabe cuanto ocupará el array y sqbrá dios que te está reservando. Si me eqivoco que me corrijan.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #9 en: 27 Julio 2013, 19:40 pm »

En si ese codigo no es standard seguro, yo para compilarlo con VC++ use new (HeapAlloc "seria" el malloc de Windows).
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Solucionado] Comparar un String con cada una de las partes de otro String « 1 2 »
.NET (C#, VB.NET, ASP)
Segurida 13 11,605 Último mensaje 14 Mayo 2011, 18:52 pm
por Segurida
como puedo hacer q mi JTextArea me imprima mas de un dato string datos string
Dudas Generales
alda19 1 5,138 Último mensaje 15 Junio 2011, 03:18 am
por Novlucker
Saber una cosita
Programación C/C++
Yugget 2 1,721 Último mensaje 18 Febrero 2014, 21:27 pm
por Yugget
otra forma de manejo de string en masm
ASM
Drewermerc 8 3,712 Último mensaje 16 Septiembre 2014, 09:17 am
por Drewermerc
Saber si una string esta contenida en otra
Programación C/C++
angelderonda 1 1,281 Último mensaje 29 Enero 2019, 21:18 pm
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines