Autor
|
Tema: [?] HWND a String (Otra Cosita) (Leído 6,998 veces)
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
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:int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa 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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
wchar_t *Nombre_Array = new wchar_t[nCharacters + 1]; //usar 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
Mensajes: 337
Sr. Glass
|
Quedaría así?#include <stdio.h> #include <windows.h> #include <iostream> using namespace std; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { HWND activa; //Ventana Activa HWND nonactive = NULL; //Ventana a modificar string Nombre_Ventana; activa = GetForegroundWindow(); //Obtenemos el nombre de la ventana activa int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa while(1) //Bucle Infinito { nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa wchar_t *Nombre_Array = new wchar_t[nCharacters + 1]; //Creamos un Array con el numero de caracteres calculado anteriormente GetWindowText(activa, Nombre_Array, nCharacters + 1); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior Nombre_Ventana = ""; Nombre_Ventana = Nombre_Array; // Nombre_Ventana pasa a tener lo que tenia Nombre_Array Nombre_Ventana += " - Adios"; //Añadimos una cadena a la ventana activa if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar... { SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa nonactive = activa; //La ventana a modificar es ahora la ventana activa } activa = GetForegroundWindow(); //Vovemos a obtener el nombre de la ventana activa delete[] Nombre_Array; Sleep(1000); //Esperamos... } return 0; }
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 337
Sr. Glass
|
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..
SaludosEDITOLo 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:#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <iostream> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { HWND activa; //Ventana Activa HWND nonactive = NULL; //Ventana a modificar string Nombre_Ventana; activa = GetForegroundWindow(); //Obtenemos el nombre de la ventana activa int nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa while(1) //Bucle Infinito { nCharacters = GetWindowTextLength(activa); //Calculamos el numero de caracteres del nombre de la ventana activa char *Nombre_Array = new char[nCharacters + 1]; //Creamos un Array con el numero de caracteres calculado anteriormente GetWindowText(activa, Nombre_Array, nCharacters + 1); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior Nombre_Ventana = ""; if (Nombre_Array = "Hola") { Nombre_Ventana = Nombre_Array; // Nombre_Ventana pasa a tener lo que tenia Nombre_Array printf("Cambiado Correctamente!"); Nombre_Ventana += " - Adios!"; //Añadimos una cadena a la ventana activa if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar... { SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa nonactive = activa; //La ventana a modificar es ahora la ventana activa } activa = GetForegroundWindow(); //Vovemos a obtener el nombre de la ventana activa delete[] Nombre_Array; Sleep(1000); //Esperamos... } else { printf("Fallo al Cambiar!"); return -1; } } return 0; }
|
|
« Ú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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Esto es incorrecto: 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
Mensajes: 337
Sr. Glass
|
Esto es incorrecto: 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
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 337
Sr. Glass
|
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
|
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
|
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
|
15 Junio 2011, 03:18 am
por Novlucker
|
|
|
Saber una cosita
Programación C/C++
|
Yugget
|
2
|
1,886
|
18 Febrero 2014, 21:27 pm
por Yugget
|
|
|
otra forma de manejo de string en masm
ASM
|
Drewermerc
|
8
|
3,981
|
16 Septiembre 2014, 09:17 am
por Drewermerc
|
|
|
Saber si una string esta contenida en otra
Programación C/C++
|
angelderonda
|
1
|
1,475
|
29 Enero 2019, 21:18 pm
por BloodSharp
|
|