[.NET]Window handle popup menu

Pagina: 1
Acties:
  • 110 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
Ik ben bezig aan een tooltje dat vensters horizontaal/verticaal tilet.
Er staat een icon in de system tray. Een context menuutje geeft enkele opties waaronder "tile horizontal" en "tile vertical".

Wanneer een van beide geklikt wordt, installeer ik een globale mouse-hook. Aan de hand van waar de gebruiker klikt haal ik een window handle op. Naast het installeren van de mouse hook verandert ook het menuutje zodat je kunt annuleren. (door opnieuw rechts te klikken op de icon en dan "Cancel" te kiezen).

Het probleem is nu dat wanneer je cancel klikt, ook de globale mouse-hook geactiveerd wordt. Ik krijg dus een window handle terug. Zowiezo moet ik elke window handle valideren (om bvb de startbalk en de desktop eruit te filteren etc). Ik kan maar nergens die windows handle terug vinden om em eruit te filteren. (Niet in mijn eigen objecten zoals context menu, main form, enz. of in andere)

De VC6 Spy++ geeft aan "Popup menu"/window class 32768.
De WinAPI GetAncestor() functie geeft dezelfde waarde terug en IsMenu() is false.

Heeft iemand een idee waar ik aan die handle kan komen of als ik ze op een andere manier kan filteren?

stukje relevante code:
C#:
1
2
3
4
5
6
7
8
IntPtr taskbar = GetAncestor(FindWindow("Shell_TrayWnd", null),3);
IntPtr self = GetAncestor(this.Handle, 3);
return  handle != IntPtr.Zero && //geen NULL
    handle != taskbar && 
    handle != self &&
    IsWindow(handle) && 
    !IsMenu(handle) &&
    (handles.Count == 0 || (handles.Count == 1 && (IntPtr)handles[0] != handle)); // geen reeds gekende handle

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

Verwijderd

32768? In signed int16 is dat -1...

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
handles zijn afhankelijk van platform 32/64bit

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
H!GHGuY schreef op vrijdag 22 december 2006 @ 23:59:
Ik ben bezig aan een tooltje dat vensters horizontaal/verticaal tilet.
Er staat een icon in de system tray. Een context menuutje geeft enkele opties waaronder "tile horizontal" en "tile vertical".
Niet direct een antwoord op je vraag, maar zijn dit niet standaard opties in Windows wanneer je rechtsklikt op de taakbalk?

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
was ik ondertussen ook achtergekomen.
Mijn tooltje heeft echter wel nog enkele andere voordelen ;)

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Volgens mij worden de systray icons in een apart venstertje getoond. Soort van je ziet het niet maar het is er toch :)
Je kunt er met spy++ volgens mij wel achterkomen hoe dat zit. Ik denk dat de handle die je wil hebben dus van dat venstertje is.

Edit:
Winspector laat dit zien:
Afbeeldingslocatie: http://www.barad-dur.nl/~sauron/winspector.jpg

[ Voor 16% gewijzigd door MTWZZ op 24-12-2006 11:32 ]

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
MTWZZ schreef op zondag 24 december 2006 @ 11:26:
Volgens mij worden de systray icons in een apart venstertje getoond. Soort van je ziet het niet maar het is er toch :)
Je kunt er met spy++ volgens mij wel achterkomen hoe dat zit. Ik denk dat de handle die je wil hebben dus van dat venstertje is.

Edit:
Winspector laat dit zien:
[afbeelding]
juist en zo filter ik er ook de tray uit zoals de code aangeeft. Maar nu krijg ik helemaal geen gekende handle bij die popup-menu. Ook de parents en owners brengen geen nieuws onder de zon.
Het lijkt alsof die popup menu uit het niets komt.

ASSUME makes an ASS out of U and ME

Pagina: 1