Autor
|
Tema: [?] HWND a String (Otra Cosita) (Leído 6,997 veces)
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
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: #include <stdio.h> #include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow) { HWND activa; HWND nonactive = NULL; activa=GetForegroundWindow(); while(1) { if(activa != nonactive) { SetWindowText(activa," - Adios\0"); nonactive=activa; } activa=GetForegroundWindow(); Sleep(1000); } return 0; }
He probado a crear un string e intentar igualarlos para hacer esto:string Cadena_String; Cadena_String = activa; SetWindowText(activa, Cadena_String + " - Adios\0");
pero me manda a...
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 337
Sr. Glass
|
Me salta error, la cago en algo... el error esta al usar la función que me has dicho, pero no se como cambiarlo...#include <stdio.h> #include <windows.h> 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 wchar_t Nombre_Array[nCharacters]; //Creamos un Array con el numero de caracteres calculado anteriormente GetWindowText(HWND, Nombre_Array, nCharacters); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior while(1) //Bucle Infinito { if(activa != nonactive) //Bucle: Si la ventana activa es diferente de la ventana a modificar seguimos { SetWindowText(activa, Nombre_Array + "- Adios\0"); //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 Sleep(1000); //Esperamos... } }
PD: Creo que el problema esta al pasar los datos al array 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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
GetWindowText( HWND deberia ser activa. Ya estas usando cadenas asi que no seria muy dificil hacer esto: std::wstring Nombre_Ventana = Nombre_Array; Nombre_Ventana += L"- Adios"; SetWindowText(activa, Nombre_Ventana.c_str()); //Cambiamos el nombre de la ventana activa
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
Mensajes: 337
Sr. Glass
|
GetWindowText(HWND deberia ser activa.
Me sigue dando error... Tengo ahora este code:#include <stdio.h> #include <windows.h> 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 char Nombre_Array[nCharacters]; //Creamos un Array con el numero de caracteres calculado anteriormente Nombre_Ventana = Nombre_Array; // Nombre_Ventana pasa a tener lo que tenia Nombre_Array Nombre_Ventana += " - Adios"; GetWindowText(HWND, activa, nCharacters); //Obtenemos el nombre de la ventana activa y lo almacenamos en el array anterior while(Infinito) //Bucle Infinito { 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 Sleep(1000); //Esperamos... } }
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Lo que estaba mal era pasarle HWND que es un tipo ... presta mas atencion la proxima vez: 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
Mensajes: 337
Sr. Glass
|
|
|
|
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.
|
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
Mensajes: 378
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
|
|
|
|
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
|
|