From: Miroslav Penchev on
Hello

I am try to capture graphical user interface of any program running on
Windows (or for whole desktop) then to do something with it and display it
back on the screen directed by my "program". My "program" will capture the
user interface (like mouse and keyboard) and will redirect it to the
appropriate running program. I have worries about first part of that idea –
How I can capture all graphical information. After researching in last days I
come to conclusion that I have to develop my custom video driver (with
DDK/WDK) where all drawings from other programs will go and my "program" will
redraw on the "real" video driver? - Is it posible that - to have one video
driver (mine, virtual) for "all" programs and other video driver (the real
one) for some (mine) programs? Or I have to find better solution?

I am long time Win32 developer, have basic knowledge of DDK, sure I have to
learn it very well, but is my idea possible for developing? I am not asking
for step by step "how to" solve that problem - just asking for "show-stopper"
problems in my idea.

The very basic question - that is the right way - custom display driver? If
it is not - it will be pity all time spend of learning WDK, because I will
not use it for something else.

Thanks in advance.
From: Tim Roberts on
Miroslav Penchev <MiroslavPenchev(a)discussions.microsoft.com> wrote:
>
>I am try to capture graphical user interface of any program running on
>Windows (or for whole desktop) then to do something with it and display it
>back on the screen directed by my "program".

Do you mean something like Remote Desktop, or one of the many versions of
VNC? Or do you mean something like CamStudio?

Part of what I'm saying is that there are many, many, many programs doing
this kind of thing. You might make better use of your time to see if
there's something already out there.

>After researching in last days I
>come to conclusion that I have to develop my custom video driver (with
>DDK/WDK) where all drawings from other programs will go and my "program" will
>redraw on the "real" video driver? - Is it posible that - to have one video
>driver (mine, virtual) for "all" programs and other video driver (the real
>one) for some (mine) programs? Or I have to find better solution?

You can READ the screen from a simple application, with no driver work at
all. Before embarking on the long and difficult road to a mirror driver,
make ABSOLUTELY SURE you can't do this from a simple application.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: anshul makkar on
Hi,

No need to develop virtual video driver. All you need is upper filter
graphics driver.

Filter graphics driver will capture all the drawing calls and in this
graphics driver you can again blit the drawings on the screen using
GDI calls.

Thanks
Anshul Makkar
www.justkernel.com
anshul_makkar(a)justkernel.com

On Apr 29, 5:10 pm, Miroslav Penchev
<MiroslavPenc...(a)discussions.microsoft.com> wrote:
> Hello
>
> I am try to capture graphical user interface of any program running on
> Windows (or for whole desktop) then to do something with it and display it
> back on the screen directed by my "program". My "program" will capture the
> user interface (like mouse and keyboard) and will redirect it to the
> appropriate running program. I have worries about first part of that idea –
> How I can capture all graphical information. After researching in last days I
> come to conclusion that I have to develop my custom video driver (with
> DDK/WDK) where all drawings from other programs will go and my "program" will
> redraw on the "real" video driver? - Is it posible that - to have one video
> driver (mine, virtual) for "all" programs and other video driver (the real
> one) for some (mine) programs? Or I have to find better solution?
>
> I am long time Win32 developer, have basic knowledge of DDK, sure I have to
> learn it very well, but is my idea possible for developing? I am not asking
> for step by step "how to" solve that problem - just asking for "show-stopper"
> problems in my idea.
>
> The very basic question - that is the right way - custom display driver? If
> it is not - it will be pity all time spend of learning WDK, because I will
> not use it for something else.
>
> Thanks in advance.

From: Tim Roberts on
anshul makkar <anshul.makkar.maillist(a)gmail.com> wrote:
>
>No need to develop virtual video driver. All you need is upper filter
>graphics driver.

You make it sound so simple. GDI drivers are not plug-and-play, and they
don't communicate via IRPs. You can't just slap in an upper filter like
other drivers. It IS possible to filter a GDI driver, basically by making
yourself the primary display driver and loading the previous primary
yourself, but it's error prone, and for the most part it's more work than a
mirror driver.

>Filter graphics driver will capture all the drawing calls and in this
>graphics driver you can again blit the drawings on the screen using
>GDI calls.

It's not that easy.
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: anshul makkar on
Tim , one says from one's experience and I have implemented it that's
why I shared my opinion on the same.
Tim: GDI drivers are not plug-and-play, and they don't communicate via
IRPs.
Anshul : Very true. But we have a workaround for that available in
GDI.

Tim: You can't just slap in an upper filter like other drivers.
Anshul: It can be done just like any other driver.

Tim : It IS possible to filter a GDI driver, basically by making
yourself the primary display driver and loading the previous primary
yourself, but it's error prone, and for the most part it's more work
than a mirror driver.
Anshul : Let me rephrase it in simple terms so that Mr Miroslav can
understand. You have to put your driver above the actual graphics
driver (let me say intel graphics driver ) i.e you have to register
your driver as filter graphics driver. Now when your filter graphcs
driver receives a drawing call from upper layer, either you call the
GDI to make the drawing for you , or you can get function pointers
from intel graphics driver and make calls to intel driver to do the
drawing for you. This can be easily done and I did it without any
errors.


On May 3, 7:55 am, Tim Roberts <t...(a)probo.com> wrote:
> anshul makkar <anshul.makkar.maill...(a)gmail.com> wrote:
>
> >No need to develop virtual video driver. All you need is upper filter
> >graphics driver.
>
> You make it sound so simple.  GDI drivers are not plug-and-play, and they
> don't communicate via IRPs.  You can't just slap in an upper filter like
> other drivers.  It IS possible to filter a GDI driver, basically by making
> yourself the primary display driver and loading the previous primary
> yourself, but it's error prone, and for the most part it's more work than a
> mirror driver.
>
> >Filter graphics driver will capture all the drawing calls and in this
> >graphics driver you can again blit  the drawings on the screen using
> >GDI calls.
>
> It's not that easy.
> --
> Tim Roberts, t...(a)probo.com
> Providenza & Boekelheide, Inc.