0

I am experimenting with lower-level programming, which I know absolutely nothing about. I would like to capture input to the monitor, store it somewhere on disk, then pipe it back to the screen at a later time. While I of course know how to write to disk, I have to idea how to manipulate the monitor in such a fashion. If anyone can give me some pointers/links I'd be most grateful. I know both ruby and java, but I'm assuming ruby, being such a high-level language, isn't really suited to this kind of task. I'm willing to have a look at any new language required.

providence
  • 29,135
  • 13
  • 46
  • 62

3 Answers3

1

Java is also a very high level language, as it is built on a VM. Because of this, low-level manual manipulation of components such as the monitor is only achievable through round-about methods. There is, however, a Robot API that allows you to do some of these things. Robot has methods to create screen captures and move the mouse, however it does not have methods for altering pixels on the screen. To do this, you'll have to look at some GUI libraries such as Swing, SWT and RCP.

If you're looking to do some real low-level programming, you should check out a different language like C or C++.

Lane Aasen
  • 729
  • 4
  • 14
  • I'm probably going to be looking into C, due to its relationship with Ruby, my experimentation would serve a double purpose. Given C, which techniques should I research to say, grab screen output before it is displayed and send it over the internet for something like a remote desktop program or so? – providence Jun 20 '11 at 03:53
  • I don't know if it is possible to intercept screen data before it reaches the screen using C, but I could very well be wrong. Unfortunately I haven't coded much in C so I can't give you a specific answer. I recommend Googling "screen capture with C", then "networking with C". Good luck! – Lane Aasen Jun 20 '11 at 04:02
1

Look at this answer if you want to create a movie from screen shots. However, if you want to capture 60hz full monitor bandwidth (as you would if capturing a movie playback for instance), I don't think this is possible with software alone, unless perhaps by modifying a video card driver. You can buy a "video capture card" that can directly capture data sent over DVI or analog for best quality, however they are not cheap.

Community
  • 1
  • 1
Garrett Hall
  • 29,524
  • 10
  • 61
  • 76
1

If you're using a Unix-based system you may want to looking into X11 forwarding over ssh, you can probably do something similar with your own client. This is still pretty high-level though.

Abdullah Jibaly
  • 53,220
  • 42
  • 124
  • 197