Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

sNej

Frischling

  • »sNej« ist der Autor dieses Themas
  • Private Nachricht senden

1

22.04.2009, 18:02

HWND / HANDLE Informationen

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
BOOL CALLBACK EnumWindowsProc ( HWND hwnd, LPARAM lParam )
{
    if ( hwnd )
    {
        GetWindowText ( hwnd, winName, sizeof(winName) );
        cout << "Window: " << winName << endl;

        return true;
    } else return false;
}


Ist es hierbei möglich über mein HWND zu ermitteln ob die Anwendung ein Fenster hat ?
Weil in dieser Schleife wird mir jede Menge ausgegeben, ich glaube das sind die Steuerelemente der einzelnen Anwendungen.

---------------

Wenn ich ein HWND oder ein HANDLE auf eine Anwendung habe, gibt es dann einen einfachen weg herauszufinden ob dieses Fenster noch aktiv ist (bzw. nicht schon geschlossen wurde) ?
Man könnte es natürlich so machen:

C-/C++-Quelltext

1
2
3
4
5
 winHandle = OpenProcess ( PROCESS_ALL_ACCESS,false,procId);
if ( winHandle )
{ 
....
}


Aber ich glaube z.B. in einer Nachrichtenschleife ist das ganze sehr performancelastig.
Oder ist es möglich über mein HANDLE bzw. HWND eine Datenstruktur zu füllen die mir Information bereit stellt ?
Ich habe da an sowas wie PROCESSENTRY32:
gedacht.http://msdn.microsoft.com/en-us/library/ms684839(VS.85).aspx

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

2

23.04.2009, 20:14

normalerweise enumeriert man nur die anwendungsfenster.
kann sein das die schleife auch verstecke fenster ausgräbt.

natürlich kannst du über GetWindow(hwnd, GW_OWNER) das
parentwindow bekommen.

zu deiner zweiten frage kann ich nur IsWindow(hwnd) sagen :D
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

23.04.2009, 20:20

was genau willst du denn machen?

sNej

Frischling

  • »sNej« ist der Autor dieses Themas
  • Private Nachricht senden

4

24.04.2009, 14:18

Danke gotbread das hat schon geholfen.

Werbeanzeige