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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  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,998 veces)
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [?] HWND a String
« Respuesta #10 en: 28 Julio 2013, 13:37 pm »

al ejecutarse no sabe cuanto ocupará el array y sqbrá dios que te está reservando.

Yo tampoco lo veo tan claro, pero supongo que al poner esto:

Código
  1. int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa
  2.  
  3. char Nombre_Array[nCharacters]; //Creamos un Array con el numero de caracteres calculado anteriormente

Lo que hace es calcular la longitud del nombre de la ventana activa, y si vale 5, el array se crea reservando 5  :-\ :-\

Lo compilo con CodeBlocks y MinGW, como lo puedo hacer standard?  :-\


En línea

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

Mensajes: 5.966


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


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #11 en: 28 Julio 2013, 13:40 pm »

Código
  1. wchar_t *Nombre_Array = new wchar_t[nCharacters + 1];
  2. //usar
  3. delete[] Nombre_Array;


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 #12 en: 28 Julio 2013, 13:59 pm »

Quedaría así?

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

ERRORES

|24|error: cannot convert 'wchar_t*' to 'LPSTR {aka char*}' for argument '2' to 'int GetWindowTextA(HWND, LPSTR, int)'|

|28|error: invalid conversion from 'wchar_t*' to 'char' [-fpermissive]|

*codeblocks\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|562|error:   initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]' [-fpermissive]|
« Última modificación: 28 Julio 2013, 14:05 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.966


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


Ver Perfil WWW
Re: [?] HWND a String
« Respuesta #13 en: 28 Julio 2013, 15:09 pm »

Usa char en lugar de wchar_t ya que no estas en Unicode.
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 (Otra Cosita)
« Respuesta #14 en: 28 Julio 2013, 15:51 pm »

Usa char en lugar de wchar_t ya que no estas en Unicode.
Solucionado, si no hay ningún otro fallo donde la haya cagado..  :silbar: :silbar:

Saludos


EDITO

Lo que quiero implementar ahora es una comprobacion de la ventana activa, es decir, si la ventana no es, por ejemplo, "Hola", que no añada el "- Adios" al final...

Tengo esto:


Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <iostream>
  6.  
  7. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
  8. {
  9.    HWND activa; //Ventana Activa
  10.    HWND nonactive = NULL; //Ventana a modificar
  11.  
  12.    string Nombre_Ventana;
  13.  
  14.    activa = GetForegroundWindow(); //Obtenemos el nombre de la ventana activa
  15.  
  16.    int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa
  17.  
  18.    while(1) //Bucle Infinito
  19.        {
  20.  
  21.            nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa
  22.  
  23.            char *Nombre_Array = new char[nCharacters + 1]; //Creamos un Array con el numero de caracteres calculado anteriormente
  24.  
  25.  
  26.            GetWindowText(activa, Nombre_Array, nCharacters + 1); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior
  27.  
  28.            Nombre_Ventana = "";
  29.  
  30.            if (Nombre_Array = "Hola")
  31.            {
  32.  
  33.                Nombre_Ventana = Nombre_Array; // Nombre_Ventana pasa a tener lo que tenia Nombre_Array
  34.  
  35.                printf("Cambiado Correctamente!");
  36.  
  37.                Nombre_Ventana += " - Adios!"; //Añadimos una cadena a la ventana activa
  38.  
  39.                if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar...
  40.                {
  41.                    SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa
  42.  
  43.                    nonactive = activa; //La ventana a modificar es ahora la ventana activa
  44.                }
  45.  
  46.                activa = GetForegroundWindow(); //Vovemos a obtener el nombre de la ventana activa
  47.  
  48.                delete[] Nombre_Array;
  49.  
  50.                Sleep(1000); //Esperamos...
  51.  
  52.            }
  53.  
  54.            else
  55.            {
  56.                printf("Fallo al Cambiar!");
  57.  
  58. return -1;
  59.            }
  60.  
  61.        }
  62.  
  63.    return 0;
  64. }
« Ú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.966


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


Ver Perfil WWW
Re: [?] HWND a String (Otra Cosita)
« Respuesta #15 en: 29 Julio 2013, 17:05 pm »

Esto es incorrecto:
Código
  1. if (Nombre_Array = "Hola")

Es una asignacion y no la comparacion que vos queres en realidad, tenes que depurar tus programas para ver que hacen linea por linea.
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 (Otra Cosita)
« Respuesta #16 en: 29 Julio 2013, 18:37 pm »

Esto es incorrecto:
Código
  1. if (Nombre_Array = "Hola")

Es una asignacion y no la comparacion que vos queres en realidad, tenes que depurar tus programas para ver que hacen linea por linea.

Ya... cuando lo ejecuto me cambia el nombre completo de la ventana a "Hola - Adiós", pero es que no se como compararlo con la que cojo... ya me estoy liando  :huh: :huh:
En línea

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

Mensajes: 5.966


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


Ver Perfil WWW
Re: [?] HWND a String (Otra Cosita)
« Respuesta #17 en: 29 Julio 2013, 18:49 pm »

Una comparacion en C/C++ se hace con ==.

Busca informacion como esta para ir practicando por tu propia cuenta:
http://www.cplusplus.com/reference/string/string/compare/
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 (Otra Cosita)
« Respuesta #18 en: 29 Julio 2013, 21:19 pm »

Una comparacion en C/C++ se hace con ==.

Vale... Otra de mis cagadas tontas por ir rápido...  :¬¬ :¬¬

Gracias  :silbar:
En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
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 12,441 Ú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,591 Último mensaje 15 Junio 2011, 03:18 am
por Novlucker
Saber una cosita
Programación C/C++
Yugget 2 1,886 Último mensaje 18 Febrero 2014, 21:27 pm
por Yugget
otra forma de manejo de string en masm
ASM
Drewermerc 8 3,981 Ú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,475 Último mensaje 29 Enero 2019, 21:18 pm
por BloodSharp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines