VB.net Tomar capturas de pantalla en el juego
Frecuentes
Visto 1,654 veces
0
Estoy trabajando en un programa que permitirá a los usuarios tomar capturas de pantalla de juegos de pantalla completa, como Call of Duty, Battlefield 3, etc.
Sin embargo, tengo dos problemas con mi código.
En primer lugar, tengo que presionar el atajo dos veces, en lugar de una vez como mis otros atajos. Esto solo ocurre cuando el código a continuación está realmente en el subdirectorio de manejo. Si solo se muestra un cuadro de mensaje cuando se presiona el acceso directo, funciona siempre.
En segundo lugar, cada vez que tomo una captura de pantalla, sale completamente negra o toma una foto de mi escritorio, aunque haya un juego ejecutándose en primer plano.
He buscado y parece que la impresión de pantalla es la única forma de obtener una captura de pantalla de un juego a través de vb.net.
Mi código está abajo. Cualquier ayuda es apreciada.
Private Sub game_Press(ByVal s As Object, ByVal e As Shortcut.HotKeyEventArgs) Handles gamewindow.press
Dim gamewin As RECT
If GetWindowRect(GetForegroundWindow, gamewin) Then
Dim bmp As Bitmap
Dim gfx As Graphics
SendKeys.Send("%{PRTSC}")
Dim getscrn As IDataObject = Clipboard.GetDataObject()
Dim bmpsize As New Size(gamewin._Right - gamewin._Left, gamewin._Bottom - gamewin._Top)
bmp = New Bitmap(CType(getscrn.GetData(GetType(System.Drawing.Bitmap)), Bitmap))
gfx = Graphics.FromImage(bmp)
gfx.CopyFromScreen(gamewin._Left, gamewin._Top, 0, 0, New Size(bmpsize.Width, bmpsize.Height), CopyPixelOperation.SourceCopy)
Dim sr As New System.Threading.Thread(AddressOf uploadimage)
sr.IsBackground = True
sr.SetApartmentState(Threading.ApartmentState.STA)
sr.Start(bmp)
gfx.Dispose()
End If
End Sub
1 Respuestas
1
PrintScreen es manejado por el entorno Win32, que maneja el dibujo normal de las ventanas. Entonces, si la tecla PrintScreen llega a Win32 (no es engullida por el juego), probablemente tomará una captura de pantalla de lo que está dibujando actualmente que, como dijiste, es tu escritorio o nada ( negro).
Podrías intentar usar GDI a Bitblt from the de la pantalla DC a una memoria DC (como lo hacen la mayoría de los programas de captura de pantalla), pero no se garantiza que funcione. Aquí está la gran pregunta. ¿Funciona realmente presionar Imprimir pantalla mientras estás en el juego y luego ir y pegar en MS Paint? Si no, entonces probablemente no tenga suerte, sin profundizar en el lado directo de las cosas.
Paul-Jan señaló esta pregunta SO estrechamente relacionada: Tomar captura de pantalla de la aplicación DirectX a pantalla completa que recomienda el uso de Microsoft Desvíos para conectar/instrumentar las llamadas de DirectX necesarias para realizar una captura de fotogramas.
contestado el 23 de mayo de 17 a las 13:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas vb.net directx screenshot fullscreen or haz tu propia pregunta.
¿Qué recomendarías entonces? Todo lo que he visto ha dicho que use printscreen para manejar la captura de pantalla. - Justin
Obviamente no lo has visto todo entonces... stackoverflow.com/questions/1962142/… - Paul-Jan