Call of Duty、Battlefield 3 などのフルスクリーン ゲームのスクリーンショットをユーザーが撮影できるようにするプログラムに取り組んでいます。
ただし、コードには 2 つの問題があります。
まず、他のショートカットのように 1 回ではなく、2 回ショートカットを押す必要があります。これは、以下のコードが実際に処理サブにある場合にのみ発生します。ショートカットが押されたときにメッセージボックスを表示するだけであれば、毎回機能します。
2 つ目は、スクリーンショットを撮るたびに、画面が完全に真っ黒になるか、フォアグラウンドでゲームが実行されているにもかかわらず、デスクトップのショットが撮られることです。
いろいろ調べてみたところ、vb.net からゲームのスクリーンショットを取得する唯一の方法は printscreen のようです。
私のコードは以下です。どんな助けでも大歓迎です。
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