Laden...

Windows 7 - Desktop Handle abfragen

Erstellt von KainPlan vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.413 Views
K
KainPlan Themenstarter:in
133 Beiträge seit 2009
vor 14 Jahren
Windows 7 - Desktop Handle abfragen

Scheint Irgentwie nicht mehr möglich zu sein (Win7) über Progman an das Handle der SysListView32 zu kommen (ich mein das Handle der Desktop-ListView) die ist nun in einem der no-title WorkerW-Class Fenster. Wie komm ich denn jetzt sicher an das Handle???

Ich hab eine Appbar die vermeiden soll das sich ein Fenster "ungreifbar" hinter sie schiebt. Das löse ich z.Z. mit GetForegroundWindow(). Das Problem dabei ist das mit einem click auf den Desktop dieser sich auch verschiebt 😕 . Kann man evtl iwie auf ein "echtes" Fenster Prüfen? So das diese SysListView einfach aus dem Raster fällt?

[EDIT] omg... GetWindowsLong() und WS_CHILDWINDOW... andenkopfklatsch

1.665 Beiträge seit 2006
vor 14 Jahren

[EDIT] omg... GetWindowsLong() und WS_CHILDWINDOW... andenkopfklatsch

Was ist damit? Verfasse bitte eine ausführliche Antwort als Post, wenn du eine Lösung selbst findest.

K
KainPlan Themenstarter:in
133 Beiträge seit 2009
vor 14 Jahren

Öhm ja, die SysListView32 hat halt den Style WS_CHILDWINDOW. Alle Fenster mit diesem stil brauchen logischerweise erst garnicht geprüft werden weil die sich nicht unter die Appbar schieben können.

Doch da gibts jetzt auch schon direkt ein neues Problem:


uint wstyle = (uint)Win32.User32Api.GetWindowLong(hWin, Win32.User32Api.GWL_STYLE);
const uint ws_child = 0x40000000;
if ((ws_child & wstyle) == ws_child)
    return;

greift nicht obwohl hWin 100%ig den WS_CHILDWINDOW hat... so fragt man die bitmaske doch ab oder? :>

1.665 Beiträge seit 2006
vor 14 Jahren

so fragt man die bitmaske doch ab oder? :>

Ja.

K
KainPlan Themenstarter:in
133 Beiträge seit 2009
vor 14 Jahren

hö? wieso geht das denn dann nicht? 😕

[EDIT] aha. nu klappts. ich hab die var-typen von uint nach long umgestellt. GetWindowLong() liefert bei mir einen negativen wert den ich nun negiert habe. keine ahnung warum da ein negativer wert rumkommt...