Я тестирую, как я могу передать конкретное приложение в Интернете.
У меня уже есть код для захвата интерфейса приложения в графическом объекте (и в битовой карте).
The only thing I cannot really find through googling is how to actually put this into a stream, that I can connect to through either vlc or directly via the
-tag in HTML5.
Чтобы уточнить, мне нужно указать, как создать поток MJPEG или что-то в этом роде.
Код, который у меня есть сейчас, чтобы захватить приложение:
C# в LINQPad
void Main()
{
var hwnd = Process.GetProcessesByName("notepad")[0].MainWindowHandle;
RECT r;
if(GetWindowRect(hwnd, out r))
{
int width = r.Right - r.Left;
int height = r.Bottom - r.Top;
Bitmap bit = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bit);
try
{
while(true) {
var hdc = g.GetHdc();
PrintWindow(hwnd, hdc, 0);
g.ReleaseHdc(hdc);
bit.Save(@"C:\temp\img.jpg", ImageFormat.Jpeg);
Thread.Sleep(25);
}
}
catch { }
bit.Dispose();
g.Dispose();
}
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
HTML для обновления
<!DOCTYPE HTML>
<html>
<head>
<title>LiveStream</title>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
var img = $('#hiddenID');
function loadNewImage() {
var check = $.ajax({
type: 'HEAD',
url: 'img.jpg',
async: false,
success: function() {
if(check != null) {
if(check.getResponseHeader("Content-Length") == null) {
return;
}
} else {
return;
}
}
});
img.attr('src', 'img.jpg#t=' + new Date().getTime());
}
img.load(function() {
var nImg = document.getElementById('liveID');
nImg.src = img.attr('src');
setTimeout(function() { loadNewImage(); }, 50);
});
img.error(function() {
setTimeout(function() { loadNewImage(); }, 250);
});
setTimeout(function() { loadNewImage(); }, 50);
</script>
</body>
</html>