Ayuda con GetWindowText

Iniciado por juancaa, 20 Marzo 2013, 13:10 PM

0 Miembros y 1 Visitante están viendo este tema.

juancaa

Buenas, estoy intentando hacer un codigo en c++ para leer el texto de la ventana maximizada pero por algun motivo el texto no se lee apropiadamente...
Aquí les dejo el codigo:

Código (c++) [Seleccionar]
#include "stdafx.h"
#include <iostream>
#include <Windows.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {
TCHAR title[500];
ZeroMemory(title, sizeof(title));
HWND wnd = GetForegroundWindow();

while (true) {
HWND current = GetForegroundWindow();
if (current!=wnd) {
wnd = current;
GetWindowText(wnd, title, 400);
cout << "Text: " << title << endl;
}
Sleep(50);
}
return 0;
}



Estoy haciendo pruebas con el Visual Studio 2012 pero al ejecutar el programa este siempre me devuelve un valor sin sentido EJ: 01AB8D9 lo cual supongo que debe ser basura... Si alguien puede explicarme que estoy haciendo mal estaria muy agradecido!!
Que tengas un buen dia!

x64core

Estas usando GetWindowText ( #ifdef UNICODE ) Al parecer version Unicode puedes cambiar a GetWindowTextA explicitamente o usar
otra funcion en lugar de cout como por ejemplo wprintf, además seria buena obtener la longitud del titulo de la ventana antes.

juancaa

Gracias x64Core!! Lo logre!! La verdad es que tengo algunos problemas con la gran vairedad de string de c++... que si ansi, unicode... A lo que iba, la solucion:

Código (c++) [Seleccionar]
#include "stdafx.h"
#include <iostream>
#include <Windows.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {
char title[128];
ZeroMemory(title, sizeof(title));
HWND wnd = GetForegroundWindow();

while (true) {
HWND current = GetForegroundWindow();
if (current!=wnd) {
wnd = current;
GetWindowTextA(wnd, (LPSTR)title, 128);
cout << "Text: " << title << endl;
}
Sleep(50);
}

int ans;
cin >> ans;
return 0;
}


Solucion: cambie TCHAR por char, utilize la llamada al metodo GetWindowTextA() como tu dijiste, en formato ansi i como parametro casteo el char a LPSTR...
Gracias por tu ayuda!
Que tengas un buen dia!