Windowhandle probleem

Status
Niet open voor verdere reacties.

mmatteman

Gebruiker
Lid geworden
3 sep 2008
Berichten
287
Is het mogelijk om te zoeken met FindWindow() op slechts een deel van de windowtitle?
zoja, hoe?
 
Niet met 1 functie-aanroep.
Je zou wel een lijst kunnen ophalen met alle windowtitles erin en dan zelf kijken of je zoekterm in 1 van de titels voorkomt..
 
Ok ik heb nu dit, maar hij geeft steeds aan dat het venster niet gevonden is, terwijl die er wel is.
[CPP]
#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
char buffer[100000];
string matchstring(buffer);
string msn = "Steam";
int maximum = sizeof(buffer);
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam) {
GetWindowText(
hwnd,
buffer,
maximum);
cout << buffer << endl;


return TRUE;
}

int main() {


EnumWindows(EnumChildProc, 0);
if (matchstring.find(msn) != string::npos) {
cout << "Steam was found!" << "\n";
} else {
cout << "Steam was not found!" << "\n";
}

cin.get();
return 0;
}
[/CPP]
 
Je moet de controle binnen de EnumChildProc functie plaatsen. (en wanneer hetgeen je zoekt gevonden wordt wil je waarschijnlijk ook nog het bijbehorende handle opslaan om later te gebruiken)
 
Ik verveelde me en heb je even een werkende versie gemaakt.

[cpp]
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;

namespace findwindow{
HWND handle;
bool success;
std::string text;
BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lparam)
{
char buffer[MAX_PATH];
GetWindowText(hwnd, buffer, sizeof(buffer));
success = std::string(buffer).find(text) != std::string::npos;
if (success)
handle = hwnd;
return !success;
}
bool find(const std::string _text)
{
text = _text;
EnumWindows(EnumChildProc, 0);
return success;
}
};

int main()
{
if (findwindow::find("aMSN"))
SetWindowText(findwindow::handle, "blabla");
return 0;
}
[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan