tags:

views:

29

answers:

1

Im writing a large WPF app (large as in screen res), running with some basic controls, basic video playing, etc...

I have been researching how to broadcast/redirect the WPF window to other monitors over a local network. In essence, trying to show a select region of the WPF app on seperate monitors in real time.

I have been reading about the DWM (which I have no experience with) and it seems that the thumbnail API would be a good way to do this. Just broadcast segments (say 9, 300x300 segments) over the network via some sort of multi-cast network broadcast, that client PC's listen for and render...

Can this be done? How would one go about doing something like this?

EDIT

I have been doing some more reading on the DWM, and it does seem likely that this can be achieved, this link explains that:

You can have a distributed rendering of a 3D scene and have it running with full hardware acceleration on any number of client machines.This architecture allows the DWM to provide first-class support for Remote Desktop scenarios

I just dont know where to start looking into this kind of development... any idea?

+1  A: 

Can you do this using the DWM thumbnail API? probably not, the thumbnail API is very limited and doesn't give you access to the actual image.

Can this be done in general? Yes, there are a lot of programs that transfer screen captures over a network (like Remote Desktop and VNC).

But is this the best way to do this?

You need a program to broadcast the screen images and another program to draw it - so why don't you broadcast the underlying data and do the visualization on the client side?

Nir
Some sort of data transfer (such as WCF) with local rendering sounds like a good approach to the problem. Basically each of the separate screen PCs would act as a client for interaction with the host, which gives you additional flexibility, such as eventually turning simple side monitors into touch panels for additional control.
Dan Bryant
There does not need to be any interaction, but there will be a very large number of client screens... I need it to perform smoothly, and be flexible. So I am simply thinking of a client/server model where the server broadcasts the whole frame buffer of the network (perhaps VNC or RDP would work fine), then the client renders only a certain segment of that visual. Its more of a massive multi monitor array setup, so I dont really see how to do it just broadcasting the underlying data
Mark
Also, what do you mean by " the thumbnail API is very limited and doesn't give you access to the actual image"? What does it give you access to?
Mark
@Mark - Read [about the thumbnail API on MSDN](http://msdn.microsoft.com/en-us/library/aa969541%28VS.85%29.aspx) - you set the source window and the destination rectangle on the target window and the thumbnail just happens, your code doesn't get to touch the actual frames (there may be a way to get the frames since some task switchers apparently use it, but I haven't seen it documented anywhere)
Nir
@Mark - Also, as someone that uses remote desktop often, I wouldn't use the words "smooth" or "flexible" to describe it. sending over the entire screen buffer is the most bandwidth intensive way to communicate and since your graphic hardware is fast and the network is slow the less bandwidth you use the better the expiration will be.
Nir