I need a way to process all data that is going to be shown on the screen.
What is a good approach to this problem.. can it be done with hooks, or with mirror drivers?
I need a way to process all data that is going to be shown on the screen.
What is a good approach to this problem.. can it be done with hooks, or with mirror drivers?
Do you mean you want to force windows to pass your program all screen data before it displays it? even display data from other programs?
I dont think thats possible under windows.
I think Real VNC uses some hooks to take all programs output. (I see its dll insearted in my application when I use this program) Cannot say if this is done before or after the info is shown...
VNC uses this info to send the copy of the desktop to the remote computer giving possibility to work on the local computer from the remote client (and it does not disables the local display like Remote Desktop Connection does)
All problems in computer science can be solved by another level of indirection,
except for the problem of too many layers of indirection.
– David J. Wheeler
Yes I have seen that to.. but there is no way to process the data, Real VNC uses hooks only to know when there is new data printed on the screen.
The only info I could find about modifying the data is by using SetDDIHook:
"Microsoft® Windows® 95 and Windows 98 expose system graphics events through
display device interface (DDI) redirection. This functionality allows
applications to intercept graphics events before they affect the display
device. Client applications that hook these events can examine or modify
stack parameters related to specific DDI calls."
But this function only works for win95 and 98 and I dont think there is a real replacement for win NT.
As far as I can tell mirror drivers are only for mirroring the data sent to the display to a buffer and not beeing able to actually change the data before it's displayed.
Have anyone been working with mirrior drivers and can confirm this?
Windows is not designed for real time programming. You probably want to deal with refresh rate and vertical blank. The only way to do this is to use the DirectX libraries.
FrancoisSoft
FrancoisSoft on the Web
If you stare at a computer for 5 minutes you might be a nerdneck.