Virtual Monitor in VB.Net?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jim Hubbard

    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.


  • Brian Henry

    #2
    Re: Virtual Monitor in VB.Net?

    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" <reply@groups.p lease> wrote in message
    news:uhtGc.2051 0$w56.6176@bign ews1.bellsouth. net...[color=blue]
    > Is it possible to emulate a monitor (create a virtual monitor) using[/color]
    vb.net?[color=blue]
    >
    > Any code snippets or pointers to helpful articles would be very much
    > appreciated.
    >
    >[/color]


    Comment

    • Jim Hubbard

      #3
      Re: Virtual Monitor in VB.Net?

      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" <brianiupmsdn@n ewsgroups.nospa m> wrote in message
      news:uGSYSr0YEH A.2456@TK2MSFTN GP10.phx.gbl...[color=blue]
      > 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?[/color]
      might[color=blue]
      > be very hard to, you might have to convert c++ code to VB.NET
      >
      >
      > "Jim Hubbard" <reply@groups.p lease> wrote in message
      > news:uhtGc.2051 0$w56.6176@bign ews1.bellsouth. net...[color=green]
      > > Is it possible to emulate a monitor (create a virtual monitor) using[/color]
      > vb.net?[color=green]
      > >
      > > Any code snippets or pointers to helpful articles would be very much
      > > appreciated.
      > >
      > >[/color]
      >
      >[/color]


      Comment

      • Tom Spink

        #4
        Re: Virtual Monitor in VB.Net?

        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" <reply@groups.p lease> wrote in message
        news:uhtGc.2051 0$w56.6176@bign ews1.bellsouth. net...[color=blue]
        > Is it possible to emulate a monitor (create a virtual monitor) using[/color]
        vb.net?[color=blue]
        >
        > Any code snippets or pointers to helpful articles would be very much
        > appreciated.
        >
        >[/color]


        Comment

        • Jim Hubbard

          #5
          Re: Virtual Monitor in VB.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$9dB6YEH A.712@TK2MSFTNG P11.phx.gbl...[color=blue]
          > 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" <reply@groups.p lease> wrote in message
          > news:uhtGc.2051 0$w56.6176@bign ews1.bellsouth. net...[color=green]
          > > Is it possible to emulate a monitor (create a virtual monitor) using[/color]
          > vb.net?[color=green]
          > >
          > > Any code snippets or pointers to helpful articles would be very much
          > > appreciated.
          > >
          > >[/color]
          >
          >[/color]


          Comment

          • Tom Spink

            #6
            Re: Virtual Monitor in VB.Net?

            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" <reply@groups.p lease> wrote in message
            news:nUEGc.1700 2$o62.7871@bign ews2.bellsouth. net...[color=blue]
            > 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[/color]
            desktop[color=blue]
            > 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[/color]
            find[color=blue]
            > any info on it - I need some way to intercept the GDI calls and save them[/color]
            to[color=blue]
            > 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$9dB6YEH A.712@TK2MSFTNG P11.phx.gbl...[color=green]
            > > 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" <reply@groups.p lease> wrote in message
            > > news:uhtGc.2051 0$w56.6176@bign ews1.bellsouth. net...[color=darkred]
            > > > Is it possible to emulate a monitor (create a virtual monitor) using[/color]
            > > vb.net?[color=darkred]
            > > >
            > > > Any code snippets or pointers to helpful articles would be very much
            > > > appreciated.
            > > >
            > > >[/color]
            > >
            > >[/color]
            >
            >[/color]


            Comment

            • Jim Hubbard

              #7
              Re: Virtual Monitor in VB.Net?

              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:eNbBFj6YEH A.1656@TK2MSFTN GP09.phx.gbl...[color=blue]
              > 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" <reply@groups.p lease> wrote in message
              > news:nUEGc.1700 2$o62.7871@bign ews2.bellsouth. net...[color=green]
              > > 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[/color]
              > desktop[color=green]
              > > at a later time.
              > >
              > > I know that (starting with WIN98) Microsoft included the capability to
              > > support multiple monitors. They speak VERY briefly about something[/color][/color]
              called[color=blue][color=green]
              > > the "Display Device Management Layer" (or DDML) that they say is[/color][/color]
              explained[color=blue][color=green]
              > > in more detail in the DDK.
              > >
              > > I have yet to find any useable information in the 2003 DDK concerning[/color][/color]
              the[color=blue][color=green]
              > > "Display Device Management Layer" or it's use.
              > >
              > > I figure that the DDML is the proper way to do this, but since I cannot[/color]
              > find[color=green]
              > > any info on it - I need some way to intercept the GDI calls and save[/color][/color]
              them[color=blue]
              > to[color=green]
              > > 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[/color][/color]
              GDI[color=blue][color=green]
              > > 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[/color][/color]
              of[color=blue][color=green]
              > > all GDI calls sent to the desktop. I figure that a virtual monitor[/color][/color]
              would[color=blue][color=green]
              > > get the GDI calls sent to the physical monitor and would be one way to[/color][/color]
              get[color=blue][color=green]
              > > 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$9dB6YEH A.712@TK2MSFTNG P11.phx.gbl...[color=darkred]
              > > > Hi, may I ask what exactly you mean by a "virtual monitor"? Do you[/color][/color][/color]
              mean[color=blue][color=green][color=darkred]
              > > > 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" <reply@groups.p lease> wrote in message
              > > > news:uhtGc.2051 0$w56.6176@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.
              > > > >
              > > > >
              > > >
              > > >[/color]
              > >
              > >[/color]
              >
              >[/color]


              Comment

              • Jim Hubbard

                #8
                Re: Virtual Monitor in VB.Net?

                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.




                Comment

                • Samson Fu

                  #9
                  Re: Virtual Monitor in VB.Net?

                  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" <reply@groups.p lease> wrote in message news:6cGGc.9388 $jJ3.4290@bigne ws5.bellsouth.n et...[color=blue]
                  > 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.
                  >
                  >
                  >
                  >[/color]


                  Comment

                  • Jim Hubbard

                    #10
                    Re: Virtual Monitor in VB.Net?

                    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" <samson_fu@hotm ail.com> wrote in message
                    news:O7X5Ls$YEH A.2388@TK2MSFTN GP11.phx.gbl...[color=blue]
                    > I am doing screen capture for a longtime, Video Mini-port is the most[/color]
                    efficent way as I know. For Monitor recording, you can use[color=blue]
                    > 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[/color]
                    Media Encoder.[color=blue]
                    > GDI Bitblt is the easiest way to capture screen, But if you want to encode[/color]
                    the screen to a video, you can use MediaEncoder method.[color=blue]
                    > DirectX Capture screen is not as fast as I imaging, it's performance[/color]
                    similar to GDI bitblt, but it will not lag your screen like GDI[color=blue]
                    > bitblt.
                    >
                    > Anyway, I think you should use video mini-port driver, it's really fast.[/color]
                    You can try SuperVNC, which support Mini-port driver.[color=blue]
                    >
                    > --
                    > Samson Fu
                    > "Jim Hubbard" <reply@groups.p lease> wrote in message[/color]
                    news:6cGGc.9388 $jJ3.4290@bigne ws5.bellsouth.n et...[color=blue][color=green]
                    > > 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[/color][/color]
                    primary[color=blue][color=green]
                    > > 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[/color][/color]
                    this[color=blue][color=green]
                    > > mirroring scheme, you can simultaneously draw the same output to several
                    > > video devices. Since the driver allocates memory dynamically for[/color][/color]
                    targets,[color=blue][color=green]
                    > > the number of displays that your system can support depends on how much[/color][/color]
                    free[color=blue][color=green]
                    > > memory you have at mirror-time.
                    > >
                    > > This sample is designed to provide information on a standard, generic[/color][/color]
                    method[color=blue][color=green]
                    > > of mirroring. This eliminates the need for special case-by-case[/color][/color]
                    solutions[color=blue][color=green]
                    > > which were used before this support was added to the system. The sample[/color][/color]
                    runs[color=blue][color=green]
                    > > only on the Microsoft?Windo ws?2000 platform. It features commented[/color][/color]
                    source[color=blue][color=green]
                    > > code that documents in detail how the code works, to make it easy to[/color][/color]
                    modify[color=blue][color=green]
                    > > and extend. Please note that this is the first version of the video[/color][/color]
                    mirror[color=blue][color=green]
                    > > 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.[/color][/color]
                    The[color=blue][color=green]
                    > > 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[/color][/color]
                    the[color=blue][color=green]
                    > > 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[/color][/color]
                    GDI[color=blue][color=green]
                    > > 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[/color][/color]
                    exactl[color=blue][color=green]
                    > > what I need.
                    > >
                    > >
                    > >
                    > >[/color]
                    >
                    >[/color]


                    Comment

                    • Brian Henry

                      #11
                      Re: Virtual Monitor in VB.Net?

                      I'm not sure how much faster you can get, the speed depends on the
                      connection pretty much. although the optimized version of that is RDC built
                      into XP and terminal servers, which is about as optimized as you will get,
                      but very hard to code something like that, and would not get much faster
                      unless you coded it in C++, you would have some performance drops because of
                      the CLR compared to running in native W32.


                      Comment

                      • Jim Hubbard

                        #12
                        Re: Virtual Monitor in VB.Net?

                        The speed that I am after is not the connection speed, but rather the screen
                        capture speed and transfer speed (smaller packets for the same amount of
                        data).

                        RDC uses the DDML which uses device mirroring to emulate a second monitor
                        and send the GDI instructions that go to the main monitor to the second
                        device.

                        C++ is definitely the way to go for the mirror DLLs and any activeX controls
                        that may be constructed to make the use of such mirror devices easier to
                        play with.

                        Unfortunately, I cannot find anyone with the skills, will and time to take
                        on this little project. I have tried to hire coders on Rent-A-Coder and
                        Guru.com to no avail.

                        Perhaps you know of someone that is interested in this project that has the
                        skills, will and time to take it on?




                        "Brian Henry" <brianiupmsdn@n ewsgroups.nospa m> wrote in message
                        news:uxu4fRBZEH A.996@TK2MSFTNG P12.phx.gbl...[color=blue]
                        > I'm not sure how much faster you can get, the speed depends on the
                        > connection pretty much. although the optimized version of that is RDC[/color]
                        built[color=blue]
                        > into XP and terminal servers, which is about as optimized as you will get,
                        > but very hard to code something like that, and would not get much faster
                        > unless you coded it in C++, you would have some performance drops because[/color]
                        of[color=blue]
                        > the CLR compared to running in native W32.
                        >
                        >[/color]


                        Comment

                        • Samson Fu

                          #13
                          Re: Virtual Monitor in VB.Net?

                          Yes. it's ultraVNC, sorry for my mistake...
                          And you can take a try to netop remote control. which is more faster than ultraVNC, I don't know how it can be, but it dose..

                          --
                          Samson Fu
                          "Jim Hubbard" <reply@groups.p lease> wrote in message news:5gPGc.1960 9$o62.18181@big news2.bellsouth .net...[color=blue]
                          > 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" <samson_fu@hotm ail.com> wrote in message
                          > news:O7X5Ls$YEH A.2388@TK2MSFTN GP11.phx.gbl...[color=green]
                          > > I am doing screen capture for a longtime, Video Mini-port is the most[/color]
                          > efficent way as I know. For Monitor recording, you can use[color=green]
                          > > 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[/color]
                          > Media Encoder.[color=green]
                          > > GDI Bitblt is the easiest way to capture screen, But if you want to encode[/color]
                          > the screen to a video, you can use MediaEncoder method.[color=green]
                          > > DirectX Capture screen is not as fast as I imaging, it's performance[/color]
                          > similar to GDI bitblt, but it will not lag your screen like GDI[color=green]
                          > > bitblt.
                          > >
                          > > Anyway, I think you should use video mini-port driver, it's really fast.[/color]
                          > You can try SuperVNC, which support Mini-port driver.[color=green]
                          > >
                          > > --
                          > > Samson Fu
                          > > "Jim Hubbard" <reply@groups.p lease> wrote in message[/color]
                          > news:6cGGc.9388 $jJ3.4290@bigne ws5.bellsouth.n et...[color=green][color=darkred]
                          > > > 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[/color][/color]
                          > primary[color=green][color=darkred]
                          > > > 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[/color][/color]
                          > this[color=green][color=darkred]
                          > > > mirroring scheme, you can simultaneously draw the same output to several
                          > > > video devices. Since the driver allocates memory dynamically for[/color][/color]
                          > targets,[color=green][color=darkred]
                          > > > the number of displays that your system can support depends on how much[/color][/color]
                          > free[color=green][color=darkred]
                          > > > memory you have at mirror-time.
                          > > >
                          > > > This sample is designed to provide information on a standard, generic[/color][/color]
                          > method[color=green][color=darkred]
                          > > > of mirroring. This eliminates the need for special case-by-case[/color][/color]
                          > solutions[color=green][color=darkred]
                          > > > which were used before this support was added to the system. The sample[/color][/color]
                          > runs[color=green][color=darkred]
                          > > > only on the Microsoft?Windo ws?2000 platform. It features commented[/color][/color]
                          > source[color=green][color=darkred]
                          > > > code that documents in detail how the code works, to make it easy to[/color][/color]
                          > modify[color=green][color=darkred]
                          > > > and extend. Please note that this is the first version of the video[/color][/color]
                          > mirror[color=green][color=darkred]
                          > > > 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.[/color][/color]
                          > The[color=green][color=darkred]
                          > > > 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[/color][/color]
                          > the[color=green][color=darkred]
                          > > > 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[/color][/color]
                          > GDI[color=green][color=darkred]
                          > > > 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[/color][/color]
                          > exactl[color=green][color=darkred]
                          > > > what I need.
                          > > >
                          > > >
                          > > >
                          > > >[/color]
                          > >
                          > >[/color]
                          >
                          >[/color]


                          Comment

                          • Jim Hubbard

                            #14
                            Re: Virtual Monitor in VB.Net?


                            "Samson Fu" <samson_fu@hotm ail.com> wrote in message
                            news:%23mccQfIZ EHA.384@TK2MSFT NGP10.phx.gbl.. .[color=blue]
                            > Yes. it's ultraVNC, sorry for my mistake...
                            > And you can take a try to netop remote control. which is more faster than[/color]
                            ultraVNC, I don't know how it can be, but it dose..

                            Well, here's how.....they are hooking the GDI (what I wanted to do). The
                            following is taken from their website at
                            http://www.crossteccorp.com/news_jul....html#tech_tip .

                            ----------------------------------------------------------------------------
                            --------
                            TECH TIP: GDI HOOKING & BITMAP AND HOW THEY EFFECT SPEED

                            One of the prime considerations in considering remote control software is
                            speed in the screen draws. Screens can be transmitted in one of two common
                            ways: GDI hooking and Bitmap. GDI hooking involves intercepting the draw
                            commands and sending a copy of these commands to the remote PC for
                            reproduction. This method is used by default in NetOp, it is very fast, and
                            makes for very small amounts of data moving across the wire. Bitmap mode is
                            slower and involves sending more data, since this method merely looks into
                            the video buffer and sends a bitmap representation of the screen down the
                            wire to the remote PC. NetOp will first try a GDI hook. If this fails it
                            will resort to bitmap mode.

                            NetOp version 7.6 is up to 40% faster than previous versions of NetOp. Part
                            of this speed improvement is the result of tighter TCP/IP coding in the
                            transport mechanism and part is due to a new bitmap algorithm. Why should
                            you care about a new bitmap algorithm? Even in a GDI hook there are still
                            bitmaps that need to be painted (think application splash screens, among
                            other things). Additionally GDI hooking is only valid Windows to Windows, so
                            if you need to mix in OS/2, Mac OS X, Linux, Unix, or Solaris, you are now
                            100% bitmap, where our newly improved intelligent algorithm will give you
                            some very good performance.

                            For more information please visit:
                            Tjänster är alltid olika i olika städer, t.ex. Stockholm, Göteborg och Malmö skiljer sig. Begravningsbyrå, Factoring & Webbyråer. Hitta fler på vår sida.

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

                            Although hooking like this is good, using the DDML to mirror the desktop is
                            a better solution and is the solution recommended by Microsoft.

                            Looks like I'll need to learn C/C++ and do this myself.



                            Comment

                            • Samson Fu

                              #15
                              Re: Virtual Monitor in VB.Net?

                              I have tried to hook gdi APIs before. I can hook almost application's API. But some system GDI API is not hookable, at least for me.
                              And I give up to use API hooking now, I found hooking is not what I need, coz I want to transfer one computer to multiple computers
                              using broadcast.. and If one packet failed, all the following instructions will become rubbish...
                              Just imaging 2 instructions, the first draw a circle, the second floodfill inside the circle... If first instruction failed, what
                              will happen for second instruction?

                              --
                              Samson Fu
                              "Jim Hubbard" <reply@groups.p lease> wrote in message news:lU2Hc.2699 1$XF5.2425@bign ews4.bellsouth. net...[color=blue]
                              >
                              > "Samson Fu" <samson_fu@hotm ail.com> wrote in message
                              > news:%23mccQfIZ EHA.384@TK2MSFT NGP10.phx.gbl.. .[color=green]
                              > > Yes. it's ultraVNC, sorry for my mistake...
                              > > And you can take a try to netop remote control. which is more faster than[/color]
                              > ultraVNC, I don't know how it can be, but it dose..
                              >
                              > Well, here's how.....they are hooking the GDI (what I wanted to do). The
                              > following is taken from their website at
                              > http://www.crossteccorp.com/news_jul....html#tech_tip .
                              >
                              > ----------------------------------------------------------------------------
                              > --------
                              > TECH TIP: GDI HOOKING & BITMAP AND HOW THEY EFFECT SPEED
                              >
                              > One of the prime considerations in considering remote control software is
                              > speed in the screen draws. Screens can be transmitted in one of two common
                              > ways: GDI hooking and Bitmap. GDI hooking involves intercepting the draw
                              > commands and sending a copy of these commands to the remote PC for
                              > reproduction. This method is used by default in NetOp, it is very fast, and
                              > makes for very small amounts of data moving across the wire. Bitmap mode is
                              > slower and involves sending more data, since this method merely looks into
                              > the video buffer and sends a bitmap representation of the screen down the
                              > wire to the remote PC. NetOp will first try a GDI hook. If this fails it
                              > will resort to bitmap mode.
                              >
                              > NetOp version 7.6 is up to 40% faster than previous versions of NetOp. Part
                              > of this speed improvement is the result of tighter TCP/IP coding in the
                              > transport mechanism and part is due to a new bitmap algorithm. Why should
                              > you care about a new bitmap algorithm? Even in a GDI hook there are still
                              > bitmaps that need to be painted (think application splash screens, among
                              > other things). Additionally GDI hooking is only valid Windows to Windows, so
                              > if you need to mix in OS/2, Mac OS X, Linux, Unix, or Solaris, you are now
                              > 100% bitmap, where our newly improved intelligent algorithm will give you
                              > some very good performance.
                              >
                              > For more information please visit:
                              > http://www.crossteccorp.com/techtips/index.html
                              > ----------------------------------------------------------------------------
                              > --------
                              >
                              > Although hooking like this is good, using the DDML to mirror the desktop is
                              > a better solution and is the solution recommended by Microsoft.
                              >
                              > Looks like I'll need to learn C/C++ and do this myself.
                              >
                              >
                              >[/color]


                              Comment

                              Working...