undocumented DwmpActivateLivePreview API

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 22-03 13:41
Beste Tweakers,

Ik probeer de windows aero peek functionaliteit in W7 aan te roepen. Met wat graven,decompilen en zoeken ben ik op de volgende API gestuit:
C#:
1
2
[DllImport("dwmapi.dll", EntryPoint = "#113", SetLastError = true)]
    internal static extern uint DwmpActivateLivePreview(uint , uint , uint , uint );


Maar ik heb geen idee wat de functie voor parameters nodig heeft? Ik heb al verschillende API spy/monitor tools geprobeerd met geen succes..

Alvast super bedankt!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 19:30

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Die functie is natuurlijk niet voor niets undocumented ;) Als je nou eens uitlegt wat je probeert te doen en waarom; daar hebben we veel meer aan om je in een juiste richting te wijzen. Je software bouwen op undocumented features is niet echt slim IMHO; er is geen enkele garantie dat 't bij een volgende servicepack/versie of zelfs hotfix nog werkt. De "p" in Dwmp staat dan ook (vermoedelijk) voor private gezien alle Dwmp functies undocumented zijn.

[ Voor 23% gewijzigd door RobIII op 23-06-2011 15:32 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Als je niet weet welke parameters de functie nodig heeft, hoe weet je dan zo zeker dat je deze functie nodig hebt? Je bent op deze API gestuit zeg je, zat daar dan geen (C++) broncode bij dan?

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 22-03 13:41
Wat ik aan het maken ben is een klein side projectje. Ik maak een taskbar voor op het 2e scherm. Waarom? Ik leer er veel van :) Ik wil net als de echte taskbar een knopje rechtsonder toevoegen die de aero peek functie gebruikt om naar het bureaublad te "peeken". Ook wil ik het gebruiken voor het "peeken" naar andere windows als er op de thumbnail wordt gestaan door de muis.

Screentje:

http://jesconsultancy.nl/img/Screens/mm.png

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 19:30

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Niet dat dit veel helpt, maar ik weet dat DisplayFusion dit doet/kan (ik gebruik 't zelf ook). Misschien dat je daar iets uit kan halen, maar dan nog vermoed ik dat je een public (documented) variant van die functie(s) zult moeten gebruiken die intern de Dwmp versie zal/zullen aanroepen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 22-03 13:41
Hahah grappig :P Ik kan je vertellen dat displayfusion ook DwmpActivateLivePreview aanroept ;)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 19:30

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Ik verwacht eigenlijk dat parameter 1 een handle naar 't één of ander is, dan een x en y parameter oid en dan een fade duration (ik roep maar wat). Met een beetje spelen met die parameters kom je misschien ook al een heel eind en misschien kun je wel een educated guess afleiden uit de wél gedocumenteerde functies. Ik vermoed dat, als je er een aantal daarvan bekijkt, je op een gegeven moment wel een patroon ziet.

[ Voor 13% gewijzigd door RobIII op 23-06-2011 21:25 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 22-03 13:41
In ieder geval een van de parameters geeft aan of er in/out gefade wordt denk ik en een Handle naar desbetreffende window indd.. Wordt ff puzzelen..

Acties:
  • 0 Henk 'm!

  • yade
  • Registratie: Mei 2002
  • Laatst online: 05-03 14:57
Heb je hier iets aan om van te leren? MSDN: Windows 7 taskbar: Developer Resources - Home

Acties:
  • 0 Henk 'm!

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 22-03 13:41
Ok, in de source waar ik deze api vond heb ik nu twee aanroepen kunnen vinden:
C#:
1
2
DwmpActivateLivePreview(1, 1, 1, 1);
DwmpActivateLivePreview(0, 1, 1, 1);


Als ik dit probeer in mijn applicatie gebeurt er niks en geeft Marshal.GetLastWin32Error() 0 terug. Vreemd.. :/

Edit:

Na heel wat graven (geen gok werk ;) ) heb ik het aan de praat met 1 probleempje..

C#:
1
DwmpActivateLivePreview(1, 0, 0, 1);


Dit werkt onder een 32 bits versie van windows 7 maar niet onder de 64 bits versie... Weet iemand hoe ik dit kan oplossen?

Edit2:
Ik heb net geprobeerd mijn test applicatie voor het x64 platform te debuggen(stond op x86) en dan werkt de api call wel :/.. Het probleem is dat ik mijn app wel voor x86 moet compilen wegens de hook voor het registreren van de window create/move/destroy/etc messages.

edit3:
(ik blijf bezig:P)

Ik ben erachter dat de 2e parameter de handle naar het te focussen window is:
C#:
1
2
internal static extern bool DwmpActivateLivePreview(uint a, IntPtr b, uint c, uint d);
DwmpActivateLivePreview(1, this.Handle, 0, 1);

[ Voor 66% gewijzigd door jellever op 25-06-2011 22:51 ]

Pagina: 1