473,765 Members | 2,070 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Virtual Monitor in VB.Net?

Is it possible to emulate a monitor (create a virtual monitor) using vb.net?

Any code snippets or pointers to helpful articles would be very much
appreciated.
Nov 20 '05 #1
15 2709
you mean like a VNC connection? yes, if you really know extensive windows
API calls you can do this. But will you find any example code for it? might
be very hard to, you might have to convert c++ code to VB.NET
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
Is it possible to emulate a monitor (create a virtual monitor) using vb.net?
Any code snippets or pointers to helpful articles would be very much
appreciated.

Nov 20 '05 #2
No. Not like VNC.

VNC is relatively slow and not capable of the screen recording that I want
to do. Conversion of VNC from C++ to VB.Net would not really help the speed
or compression of the images at all.

I suspect what I am in need of would be more like a virtual device driver
and would require unmanaged code that VB.Net is not capable of.

"Brian Henry" <br**********@n ewsgroups.nospa m> wrote in message
news:uG******** ******@TK2MSFTN GP10.phx.gbl...
you mean like a VNC connection? yes, if you really know extensive windows
API calls you can do this. But will you find any example code for it? might be very hard to, you might have to convert c++ code to VB.NET
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
Is it possible to emulate a monitor (create a virtual monitor) using

vb.net?

Any code snippets or pointers to helpful articles would be very much
appreciated.


Nov 20 '05 #3
Hi, may I ask what exactly you mean by a "virtual monitor"? Do you mean
another desktop (e.g. using the CreateDesktop API's) or do you mean a
terminal services connection?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
Is it possible to emulate a monitor (create a virtual monitor) using vb.net?
Any code snippets or pointers to helpful articles would be very much
appreciated.

Nov 20 '05 #4
I want to capture the GDI stream from GDI to the desktop device context.
I'd like to intercept and copy this stream in order to play back the desktop
at a later time.

I know that (starting with WIN98) Microsoft included the capability to
support multiple monitors. They speak VERY briefly about something called
the "Display Device Management Layer" (or DDML) that they say is explained
in more detail in the DDK.

I have yet to find any useable information in the 2003 DDK concerning the
"Display Device Management Layer" or it's use.

I figure that the DDML is the proper way to do this, but since I cannot find
any info on it - I need some way to intercept the GDI calls and save them to
a file.

By saving the GDI calls, I hope to allow playback on any display device
running under Windows 98 and up without worrying about configurations or
capabilities of the display devices - as display devices will take the GDI
calls and interpret them to playback in correctly for the given device
context.

A video hook may be what I'm after......what ever let's me get a stream of
all GDI calls sent to the desktop. I figure that a virtual monitor would
get the GDI calls sent to the physical monitor and would be one way to get
the GDI calls I want to save.

This is not a terminal services connection.

"Tom Spink" <thomasdotspink atsp@mntlworldd otcom> wrote in message
news:O4******** *****@TK2MSFTNG P11.phx.gbl...
Hi, may I ask what exactly you mean by a "virtual monitor"? Do you mean
another desktop (e.g. using the CreateDesktop API's) or do you mean a
terminal services connection?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
Is it possible to emulate a monitor (create a virtual monitor) using

vb.net?

Any code snippets or pointers to helpful articles would be very much
appreciated.


Nov 20 '05 #5
Hi, will the end result be an animation of the desktop... or will it be
actually recreating the actions?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:nU******** **********@bign ews2.bellsouth. net...
I want to capture the GDI stream from GDI to the desktop device context.
I'd like to intercept and copy this stream in order to play back the desktop at a later time.

I know that (starting with WIN98) Microsoft included the capability to
support multiple monitors. They speak VERY briefly about something called
the "Display Device Management Layer" (or DDML) that they say is explained
in more detail in the DDK.

I have yet to find any useable information in the 2003 DDK concerning the
"Display Device Management Layer" or it's use.

I figure that the DDML is the proper way to do this, but since I cannot find any info on it - I need some way to intercept the GDI calls and save them to a file.

By saving the GDI calls, I hope to allow playback on any display device
running under Windows 98 and up without worrying about configurations or
capabilities of the display devices - as display devices will take the GDI
calls and interpret them to playback in correctly for the given device
context.

A video hook may be what I'm after......what ever let's me get a stream of
all GDI calls sent to the desktop. I figure that a virtual monitor would
get the GDI calls sent to the physical monitor and would be one way to get
the GDI calls I want to save.

This is not a terminal services connection.

"Tom Spink" <thomasdotspink atsp@mntlworldd otcom> wrote in message
news:O4******** *****@TK2MSFTNG P11.phx.gbl...
Hi, may I ask what exactly you mean by a "virtual monitor"? Do you mean
another desktop (e.g. using the CreateDesktop API's) or do you mean a
terminal services connection?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
Is it possible to emulate a monitor (create a virtual monitor) using

vb.net?

Any code snippets or pointers to helpful articles would be very much
appreciated.



Nov 20 '05 #6
Animation.

Actual recreation would require a lot more coding. You'd have to record
mouse movements and clicks, keyboard activity and check to make sure that
the items clicked on still existed and were in the same place. Then you
would run into the problem of overwriting files or possibly trying to access
files that did not exist. A real nightmare.

I'll stick with just showing what happened for now.
"Tom Spink" <thomasdotspink atsp@mntlworldd otcom> wrote in message
news:eN******** ******@TK2MSFTN GP09.phx.gbl...
Hi, will the end result be an animation of the desktop... or will it be
actually recreating the actions?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:nU******** **********@bign ews2.bellsouth. net...
I want to capture the GDI stream from GDI to the desktop device context.
I'd like to intercept and copy this stream in order to play back the desktop
at a later time.

I know that (starting with WIN98) Microsoft included the capability to
support multiple monitors. They speak VERY briefly about something called the "Display Device Management Layer" (or DDML) that they say is explained in more detail in the DDK.

I have yet to find any useable information in the 2003 DDK concerning the "Display Device Management Layer" or it's use.

I figure that the DDML is the proper way to do this, but since I cannot

find
any info on it - I need some way to intercept the GDI calls and save them to
a file.

By saving the GDI calls, I hope to allow playback on any display device
running under Windows 98 and up without worrying about configurations or
capabilities of the display devices - as display devices will take the

GDI calls and interpret them to playback in correctly for the given device
context.

A video hook may be what I'm after......what ever let's me get a stream of all GDI calls sent to the desktop. I figure that a virtual monitor would get the GDI calls sent to the physical monitor and would be one way to get the GDI calls I want to save.

This is not a terminal services connection.

"Tom Spink" <thomasdotspink atsp@mntlworldd otcom> wrote in message
news:O4******** *****@TK2MSFTNG P11.phx.gbl...
Hi, may I ask what exactly you mean by a "virtual monitor"? Do you mean another desktop (e.g. using the CreateDesktop API's) or do you mean a
terminal services connection?

--
HTH,
-- Tom Spink, Über Geek

Woe be the day VBC.EXE says, "OrElse what?"

Please respond to the newsgroup,
so all can benefit
"Jim Hubbard" <re***@groups.p lease> wrote in message
news:uh******** **********@bign ews1.bellsouth. net...
> Is it possible to emulate a monitor (create a virtual monitor) using
vb.net?
>
> Any code snippets or pointers to helpful articles would be very much
> appreciated.
>
>



Nov 20 '05 #7
Found the following in the 2003 DDK.....

----------------------------------------------------------------------

Mirror
[This is preliminary documentation and subject to change.]

SUMMARY
This sample demonstrates how to use a driver to perform video mirroring.
When video mirroring is active, each time the system draws to the primary
video device at a location inside the mirrored area, a copy of the draw
operation is executed on the mirrored video device in real time. With this
mirroring scheme, you can simultaneously draw the same output to several
video devices. Since the driver allocates memory dynamically for targets,
the number of displays that your system can support depends on how much free
memory you have at mirror-time.

This sample is designed to provide information on a standard, generic method
of mirroring. This eliminates the need for special case-by-case solutions
which were used before this support was added to the system. The sample runs
only on the Microsoft® Windows® 2000 platform. It features commented source
code that documents in detail how the code works, to make it easy to modify
and extend. Please note that this is the first version of the video mirror
sample. Additional functionality may be added to the sample in future
releases.

The sample is comprised of three pieces:
a.. The display driver, in \Ntddk\Src\Vide o\Displays\Mirr or\Dll.
b.. The video miniport driver, in \Ntddk\Src\Vide o\Miniport\Mirr or. The
miniport driver included here is a skeleton. It simply returns success
status for all miniport calls made by the system as there is no real
hardware controlled by the mirror sample.
c.. An application that is a sample user-mode service, in
\Ntddk\Src\Vide o\Displays\Mirr or\App.
For additional information about this sample and about mirror drivers in
general, please see \Ntddk\Src\Vide o\Displays\Mirr or\App\Readme.t xt, and the
Mirror Drivers topic in the Graphics Design Guide.

BUILDING THE SAMPLE
Install the driver by using the included .ini file, then run the sample
application. The application will attach the driver to the desktop, and
mirroring will be active. At present, the sample application is a
command-line Win32 program.

Notes: The sample is x86 compatible. It also compiles correctly in the
64-bit environment. All aspects of the kernel-mode execution environment
apply to the display and video miniport driver portions of this sample.

----------------------------------------------------------------------

It is c/c++....language s I do not speak. And, it seems that writing a
generic driver using this method is slightly over my head.

I can't seem to shake the thought that there should be something in the GDI
APIs that would allow you to hook the GDI stream without all of this.
However, this method may be the most efficient - and efficiency is exactl
what I need.


Nov 20 '05 #8
I am doing screen capture for a longtime, Video Mini-port is the most efficent way as I know. For Monitor recording, you can use
Windows Media Encoder 9, But it's performance is simular to GDI BitBlt.

There are 3 ways to capture screen as I know, GDI BitBlt, DirectX, and Media Encoder.
GDI Bitblt is the easiest way to capture screen, But if you want to encode the screen to a video, you can use MediaEncoder method.
DirectX Capture screen is not as fast as I imaging, it's performance similar to GDI bitblt, but it will not lag your screen like GDI
bitblt.

Anyway, I think you should use video mini-port driver, it's really fast. You can try SuperVNC, which support Mini-port driver.

--
Samson Fu
"Jim Hubbard" <re***@groups.p lease> wrote in message news:6c******** *********@bigne ws5.bellsouth.n et...
Found the following in the 2003 DDK.....

----------------------------------------------------------------------

Mirror
[This is preliminary documentation and subject to change.]

SUMMARY
This sample demonstrates how to use a driver to perform video mirroring.
When video mirroring is active, each time the system draws to the primary
video device at a location inside the mirrored area, a copy of the draw
operation is executed on the mirrored video device in real time. With this
mirroring scheme, you can simultaneously draw the same output to several
video devices. Since the driver allocates memory dynamically for targets,
the number of displays that your system can support depends on how much free
memory you have at mirror-time.

This sample is designed to provide information on a standard, generic method
of mirroring. This eliminates the need for special case-by-case solutions
which were used before this support was added to the system. The sample runs
only on the Microsoft?Windo ws?2000 platform. It features commented source
code that documents in detail how the code works, to make it easy to modify
and extend. Please note that this is the first version of the video mirror
sample. Additional functionality may be added to the sample in future
releases.

The sample is comprised of three pieces:
a.. The display driver, in \Ntddk\Src\Vide o\Displays\Mirr or\Dll.
b.. The video miniport driver, in \Ntddk\Src\Vide o\Miniport\Mirr or. The
miniport driver included here is a skeleton. It simply returns success
status for all miniport calls made by the system as there is no real
hardware controlled by the mirror sample.
c.. An application that is a sample user-mode service, in
\Ntddk\Src\Vide o\Displays\Mirr or\App.
For additional information about this sample and about mirror drivers in
general, please see \Ntddk\Src\Vide o\Displays\Mirr or\App\Readme.t xt, and the
Mirror Drivers topic in the Graphics Design Guide.

BUILDING THE SAMPLE
Install the driver by using the included .ini file, then run the sample
application. The application will attach the driver to the desktop, and
mirroring will be active. At present, the sample application is a
command-line Win32 program.

Notes: The sample is x86 compatible. It also compiles correctly in the
64-bit environment. All aspects of the kernel-mode execution environment
apply to the display and video miniport driver portions of this sample.

----------------------------------------------------------------------

It is c/c++....language s I do not speak. And, it seems that writing a
generic driver using this method is slightly over my head.

I can't seem to shake the thought that there should be something in the GDI
APIs that would allow you to hook the GDI stream without all of this.
However, this method may be the most efficient - and efficiency is exactl
what I need.

Nov 20 '05 #9
I am finding it very difficult to find anyone that is willing to undertake
this challenge, though I have offered to pay for it.

I could not find SuperVNC. Perhaps you mean UltraVNC.....wh ich I have been
a fan of for quite some time.

If I could get what I want done, I may even want to put out a free remote
desktop package - like VNC, but faster.

"Samson Fu" <sa*******@hotm ail.com> wrote in message
news:O7******** ******@TK2MSFTN GP11.phx.gbl...
I am doing screen capture for a longtime, Video Mini-port is the most efficent way as I know. For Monitor recording, you can use Windows Media Encoder 9, But it's performance is simular to GDI BitBlt.

There are 3 ways to capture screen as I know, GDI BitBlt, DirectX, and Media Encoder. GDI Bitblt is the easiest way to capture screen, But if you want to encode the screen to a video, you can use MediaEncoder method. DirectX Capture screen is not as fast as I imaging, it's performance similar to GDI bitblt, but it will not lag your screen like GDI bitblt.

Anyway, I think you should use video mini-port driver, it's really fast. You can try SuperVNC, which support Mini-port driver.
--
Samson Fu
"Jim Hubbard" <re***@groups.p lease> wrote in message

news:6c******** *********@bigne ws5.bellsouth.n et...
Found the following in the 2003 DDK.....

----------------------------------------------------------------------

Mirror
[This is preliminary documentation and subject to change.]

SUMMARY
This sample demonstrates how to use a driver to perform video mirroring.
When video mirroring is active, each time the system draws to the primary video device at a location inside the mirrored area, a copy of the draw
operation is executed on the mirrored video device in real time. With this mirroring scheme, you can simultaneously draw the same output to several
video devices. Since the driver allocates memory dynamically for targets, the number of displays that your system can support depends on how much free memory you have at mirror-time.

This sample is designed to provide information on a standard, generic method of mirroring. This eliminates the need for special case-by-case solutions which were used before this support was added to the system. The sample runs only on the Microsoft?Windo ws?2000 platform. It features commented source code that documents in detail how the code works, to make it easy to modify and extend. Please note that this is the first version of the video mirror sample. Additional functionality may be added to the sample in future
releases.

The sample is comprised of three pieces:
a.. The display driver, in \Ntddk\Src\Vide o\Displays\Mirr or\Dll.
b.. The video miniport driver, in \Ntddk\Src\Vide o\Miniport\Mirr or. The miniport driver included here is a skeleton. It simply returns success
status for all miniport calls made by the system as there is no real
hardware controlled by the mirror sample.
c.. An application that is a sample user-mode service, in
\Ntddk\Src\Vide o\Displays\Mirr or\App.
For additional information about this sample and about mirror drivers in
general, please see \Ntddk\Src\Vide o\Displays\Mirr or\App\Readme.t xt, and the Mirror Drivers topic in the Graphics Design Guide.

BUILDING THE SAMPLE
Install the driver by using the included .ini file, then run the sample
application. The application will attach the driver to the desktop, and
mirroring will be active. At present, the sample application is a
command-line Win32 program.

Notes: The sample is x86 compatible. It also compiles correctly in the
64-bit environment. All aspects of the kernel-mode execution environment
apply to the display and video miniport driver portions of this sample.

----------------------------------------------------------------------

It is c/c++....language s I do not speak. And, it seems that writing a
generic driver using this method is slightly over my head.

I can't seem to shake the thought that there should be something in the GDI APIs that would allow you to hook the GDI stream without all of this.
However, this method may be the most efficient - and efficiency is exactl what I need.


Nov 20 '05 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
985
by: Jim Hubbard | last post by:
Is it possible to emulate a monitor (create a virtual monitor) using vb.net? Any code snippets or pointers to helpful articles would be very much appreciated.
14
2061
by: rogerclive | last post by:
Perhaps, there is no bigger sleazy company in the entire Maple Republic ( Canada ) than Matrox Graphics Inc. I paid $100+ through my nose circa 1999 for Matrox Millenium II and Mystique. It works well under NT4.0 however, a month ago I upgraded to Win 98. Guess what? The main feature in the Matrox Inc Video cards was their desktop, and
175
8897
by: Ken Brady | last post by:
I'm on a team building some class libraries to be used by many other projects. Some members of our team insist that "All public methods should be virtual" just in case "anything needs to be changed". This is very much against my instincts. Can anyone offer some solid design guidelines for me? Thanks in advance....
1
2228
by: George2 | last post by:
Hello everyone, I am using Windows Server 2003 Performance Counter tool to monitor the memory consumed by my process. The interested terms are working set, virtual bytes and private bytes. My questions are, 1. If I want to watch the real physical memory consumed by current process, which one should I monitor? 2. If I want to watch the physical memory + swap file consumed by current process, which one should I monitor? 3. Any more...
0
1584
by: George2 | last post by:
Hello everyone, From the definition of working set, it is a subset of virtual pages resident in physical memory -- from book Windows Internals. It means working set could not be larger than virtual memory (subset relationship). But the following simple code on Windows Server 2003 proves (if you monitor virtual bytes counter and working set bytes conuter from perfmon), if we do not unmap the page map file, the working set will continue to...
0
9404
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10007
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
9959
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9835
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
8833
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7379
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6649
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5423
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
3532
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.