Toon posts:

'Overlay feedback' gebruiken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo, ik wilde graag een programma maken die gebruik maakt van 'overlay feedback' (zo noem ik het zelf maar even voor het gemak). Wat ik wil doen is dat het programma berichten kan weergeven dat overal overheen gaat, zeg maar wat sommige pc's hebben voor de volume control (die groene tekst).

Het is echter voornamelijk de bedoeling dat het ook over fullscreen applicaties gebruikt kan worden (zoals films, spellen, presentaties, etc), omdat anders ook wel met andere vormen van feedback gebruikt kunnen worden.
Ook zal de tekst niet mogen bestaan voor de gebruiker in de zin dat het de focus van een programma niet veranderd mag worden naar het feedback-prog, dat de mousecursor veranderd in een handje ofzo of dat het programma of dat de keyboard input verloren gaat.

En nog een vraag die zichzelf wel zal beantwoorden zodra ik er mee aan het stoeien ga, dus deze is niet zo van belang om er antwoord op te krijgen: hoe zou het gaan met b.v. spellen die in een andere resolutie draaien dan de desktop? Zal dit invloed hebben op de locatie en de grote van de feedback?

Erg bedankt voor jullie reacties. Uiteraard heb ik rondgezocht op google en GoT, en kon wel wat vinden, maar de topics op GoT bleven onbeantwoord, en de google-search gaf me geen oplossing voor de spellen/films/presentaties.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:08
Maar, wat is je vraag nu precies ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Wat kan ik gebruiken om dit voor elkaar kan krijgen (die feedback dus). Ik kan niet een 'transparant' window gebruiken omdat die input/focus veranderd, en ik betwijfel dat win32 paint functies werken onder een spel (of heb ik dit verkeerd aangenomen?). Dus of jullie een techniek weten die wel zal gaan werken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:08
Ik geloof dat dit beter in PRG past dan in SE&A

-> PRG

https://fgheysels.github.io/


  • DrivinUCrazy
  • Registratie: Oktober 2004
  • Nu online

DrivinUCrazy

Vechte, valle en opstoan

Ik denk dat je de zoekterm OSD (On Screen Display) eens moet gebruiken. De eerste hit in google op on screen display geeft namelijk dit: The Code Project

't Is een kwestie van geduld, rustig wachten op de dag, dat heel Holland Limburgs lult.


Verwijderd

Topicstarter
DrivinUCrazy schreef op dinsdag 18 april 2006 @ 10:50:
Ik denk dat je de zoekterm OSD (On Screen Display) eens moet gebruiken. De eerste hit in google op on screen display geeft namelijk dit: The Code Project
Deze staat inderdaad ook op codeproject (zelfde techniek als die jij vond, alleen c#). Werkt prima voor in windows, maar niet voor fullscreen applicaties... Film geeft hij het overheen, maar niet zodra deze fullscreen draait. En fullscreen spel geeft hij het ook niet overheen.

Zou dat komen doordat het spel en de film meer topmost is dan de OSD? Want nu ik er over na denk, geldt hetzelfde voor bijvoorbeeld Windows taakbeheer en error messages. Die gaan ook overal overheen, maar films en spellen gaan daar tóch weer overheen...

En dit maakt het lastig :) ... Als het niet over films/games heen hoeft, is het niet zo moeilijk :)

P.s. Hoe werkt b.v. directx? Draait een directx programma ook gewoon in een window? of schrijft deze direct naar het scherm?

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Voorzover ik weet hebben fullscreen OpenGL en D3D applicaties exclusieve toegang tot de display buffer. Andere applicaties kunnen dus gewoon helemaal niks op het beeld laten zien op dat moment. Ik vraag me dus af of wat jij wilt uberhaupt wel mogelijk is (ik heb het in ieder geval nog nooit een applicatie zien doen). De enige manier die ik zou kunnen bedenken is doormiddel van process hooks tussen de OpenGL/D3D DLLs te gaan zitten en op dit manier een ingang te geven om dingen op het scherm te krijgen maar ik heb echt geen idee of dat echt werkbaar te maken is (het lijkt me in ieder geval niet triviaal).

Edit: en ja, een D3D applicatie draait gewoon in een window.

[ Voor 5% gewijzigd door ReverendBizarre op 18-04-2006 12:01 ]


Verwijderd

Topicstarter
IrishMaiden schreef op dinsdag 18 april 2006 @ 12:00:
Voorzover ik weet hebben fullscreen OpenGL en D3D applicaties exclusieve toegang tot de display buffer. Andere applicaties kunnen dus gewoon helemaal niks op het beeld laten zien op dat moment. Ik vraag me dus af of wat jij wilt uberhaupt wel mogelijk is (ik heb het in ieder geval nog nooit een applicatie zien doen). De enige manier die ik zou kunnen bedenken is doormiddel van process hooks tussen de OpenGL/D3D DLLs te gaan zitten en op dit manier een ingang te geven om dingen op het scherm te krijgen maar ik heb echt geen idee of dat echt werkbaar te maken is (het lijkt me in ieder geval niet triviaal).

Edit: en ja, een D3D applicatie draait gewoon in een window.
Ik heb eens verder gekeken en het moet inderdaad mogelijk zijn om een D3D hook te implementeren. Volgens mij gebruiken programma's als fraps, xfire en teamspeak deze technologie ook...
Ik heb al een ook klein aantal artikeltjes gevonden:
Deze met bijbehorend deze link. En deze link.

Die maar eens doorlezen en wat ermee stoeien :9

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12-2025
De typische volumeknoppen van laptops werken vziw via SMM, Systems Management Mode. Dat draait zelfs onder het OS nivo, en dus ook onder de drivers. Datzelfde mechanisme wordt bijvoorbeeld ook gebruikt voor de sleep mode van laptops (omdat je daar ook niet op het OS wil vertrouwen)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

MSalters schreef op dinsdag 18 april 2006 @ 22:46:
De typische volumeknoppen van laptops werken vziw via SMM, Systems Management Mode. Dat draait zelfs onder het OS nivo, en dus ook onder de drivers. Datzelfde mechanisme wordt bijvoorbeeld ook gebruikt voor de sleep mode van laptops (omdat je daar ook niet op het OS wil vertrouwen)
Is dat helemaal waar? Als bij mij op de laptop namelijk Battlefield crasht (één keer gebeurd) en het geluid blijft irritant hangen, dan kan ik doen wat ik wil, maar de herrie wordt er niet minder op. Alleen batterij eruit hielp toen.

Zou ook een complete systeemcrash geweest kunnen zijn, maar dat lijkt me niet. Is verder nooit gebeurd ofzo.

Fat Pizza's pizza, they are big and they are cheezy


Verwijderd

Topicstarter
Die proxy dll krijg ik nu prima aan de praat en die kan prima wat ik er mee wil. Maar nu vraag ik me af hoe ik het beste de dll('s) kan laten communiceren met het hoofd programma (en misschien het hoofd programma weer met andere programma's).
Misschien dat jullie een paar buzzwords kunnen geven, en punten aangeven waar ik op moet letten (b.v. meerdere instanties dll geeft problemen?). Dan kan ik weer wat gerichter op zoek op het wereld wijde web :9

edit:
FF met debugger in XFire gekeken... Die maakt gebruik van IPC (verzamelnaam?) volgens mij... Eens een google op IPC doen dan :9

[ Voor 21% gewijzigd door Verwijderd op 20-04-2006 16:07 ]


Verwijderd

Topicstarter
Ik heb aardig wat doorgelezen nu van IPC, en krijg een beetje zicht op de vershillende technieken.

Nu ben ik wat aan het proberen met IPC Remoting van het .net framework, maar ik kan niets vinden over de mogelijkheid van de server om events te vuren op de client :? Ik neem aan dat dit toch wel mogelijk is? Bijvoorbeeld als de client vraagt om een pizza te bakken, dan moet de server toch een event kunnen vuren dat de pizza klaar is?

Ik heb de server in het IpcChannel voorbeeld geprobeerd ook een remote object aan te maken, maar de manier waarop ik het deed, riep hij deze bij zichzelf aan |:(

Iemand die wel weet hoe ik dit moet doen? Want het lijkt me erg sterk dat het niet mogelijk is, en dat ik de client ook een server moet laten opzetten...
Pagina: 1