Toon posts:

undocumented DwmpActivateLivePreview API

Pagina: 1
Acties:

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 28-05 19:17
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!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 01:15

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 22-05 23:04

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..


  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 28-05 19:17
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

  • RobIII
  • Registratie: December 2001
  • Laatst online: 01:15

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 28-05 19:17
Hahah grappig :P Ik kan je vertellen dat displayfusion ook DwmpActivateLivePreview aanroept ;)

  • RobIII
  • Registratie: December 2001
  • Laatst online: 01:15

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.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 28-05 19:17
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..

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

  • jellever
  • Registratie: Oktober 2008
  • Laatst online: 28-05 19:17
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee