Window Title herausfinden

06/24/2014 22:36 Whaaat?#1
Hey
Ich möchte gerne den Window Title von einem Programm herausfinden.
Mein Code bis jetzt:
Code:
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <ostream>
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{	
	HWND hWnd = FindWindow(NULL, L"VLC Media Player");
	cout << hWnd << endl;
	int length = GetWindowTextLength(hWnd);
	string WndwTitle[sizeof(length)];
	GetWindowText(hWnd, (LPWSTR)WndwTitle, length);
	cout << WndwTitle << endl;
	cin.get();
	
	return 0;
}
Nun ich bekomm aber bei dem cout nur ein Pointer heraus anstatt den Text bzw. Inhalt vom Window Title.
Das soll mal ein Programme werden, dass mir den Song in eine .txt datei schreibt der grade abgespielt wird also wundert euch nicht über die Includes und warum ich den Title herausfinden will.
06/24/2014 22:50 snow#2
std::vector<wchar_t> windowTitleBuffer{ length, '\0' };
GetWindowText(hWnd, reinterpret_cast<LPWSTR>(windowTitleBuffer.data()) );
std::wcout << std::wstring{ reinterpret_cast<LPWSTR>(windowTitleBuffer.data()) } << std::endl;

so ungefähr sollte es funktionieren, ich habe gerade keinen C++ Compiler offen, kann es also nicht testen.
Du legst ein Array von strings an, dessen Größe sizeof(length) = 4 beträgt, damit kannst du hier nicht wirklich was anfangen. Was du brauchst, ist ein Buffer mit length * sizeof(wchar_t) Bytes Platz, den du GetWindowText übergeben kannst. Um einen std::wstring auszugeben, musst du übrigens auf std::wcout zurückgreifen.
06/24/2014 23:04 Thr!ce#3
PHP Code:
int main()
{
    
HWND hWnd FindWindow(NULLL"VLC Media Player");
    
cout << hWnd << endl;
    
int length GetWindowTextLength(hWnd);
    
wchar_t *WndwTitle = new wchar_t[length];
    
GetWindowText(hWndWndwTitlelength);
    
wcout << WndwTitle << endl;
    
cin.get();

    return 
0;


Wieso willst du bei GetWindowText den WndwTitle casten?
Machs einfach gleich richtig.

sizeof(length) gibt übrigens immer 4 zurück.


Ob das alles was bringt, ist übrigens fraglich.
Afaik musst du schon den genauen WindowTitle bei FindWindow übergeben, und wenn du diesen schon weißt, brauchste ihn mit GetWindowText nicht auszulesen.
06/25/2014 06:54 Whaaat?#4
Quote:
Originally Posted by Thr!ce View Post
PHP Code:
int main()
{
    
HWND hWnd FindWindow(NULLL"VLC Media Player");
    
cout << hWnd << endl;
    
int length GetWindowTextLength(hWnd);
    
wchar_t *WndwTitle = new wchar_t[length];
    
GetWindowText(hWndWndwTitlelength);
    
wcout << WndwTitle << endl;
    
cin.get();

    return 
0;


Wieso willst du bei GetWindowText den WndwTitle casten?
Machs einfach gleich richtig.

sizeof(length) gibt übrigens immer 4 zurück.


Ob das alles was bringt, ist übrigens fraglich.
Afaik musst du schon den genauen WindowTitle bei FindWindow übergeben, und wenn du diesen schon weißt, brauchste ihn mit GetWindowText nicht auszulesen.
Ja ich möchte ihn aber wenn ein Song abspielt nochmal den Title herauslesen lassen, da beim VLC Player sich der Window Title zum Song Name ändert.
Und somit kann ich den dann in eine Datei ausgeben.
06/25/2014 20:48 KingwondA#5
Warum 2x iostream?
#include <iostream> <------
#include <ostream>
#include <iostream> <----