Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
33 / 6 / 0
Регистрация: 12.01.2010
Сообщений: 85
1

Скриншот игры

19.10.2010, 15:23. Просмотров 1344. Ответов 1
Метки нет (Все метки)

Всем привет, давненько тут небыл. Есть проблема, очень надеюсь на вашу помощь, может уже создавались темы и есть решение, поделитесь ссылками, пжалста.

Проблема в том, что для создания скриншота полноэкранного приложения (игры) в win7 нужно в св-ах exe в вкладке совместимость поставить галку на Отключить композицию рабочего стола и в игре не должно быть выставлено сглаживание (anti-aliasing), тогда всё прокатывает. Но мне нужно, чтобы прога работала при любых условиях и по крайней мере в XP, win7.

Вот полный текст.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Imports System
Imports System.IO
Imports System.Globalization
Imports System.Drawing.Imaging 'для скриншота
Imports System.Windows.Forms
Imports System.Windows
Public Class Main
    ' Функции API 
    Private Declare Function GetAsyncKeyState% Lib "user32" (ByVal vKey As Long) ' для прверки нажатия клавиши
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) 'Sleep(n) - пауза в миллисекундах 1сек = 1000млсек
 
    Private Sub Старт_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Старт.Click
        Me.WindowState = System.Windows.Forms.FormWindowState.Minimized
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        System.Windows.Forms.Application.DoEvents()
        If GetAsyncKeyState(&H20) Then ' space - скриншот для отладки
            savescr()
        End If
        If GetAsyncKeyState(&H1B) Then ' esc - выход
            End
        End If
    End Sub
 
    Private Sub savescr()
        Dim FileNameDate As String
        Dim tekDate As String
        Dim td As Date
        Dim dat As Object
        Dim sw, sh As Integer ' размеры экрана
        dat = td.Now ' тек дата
        tekDate = Microsoft.VisualBasic.DateAndTime.Day(dat) & "." & Month(dat) & "." & Year(dat) & " " & Hour(dat) & "." & Minute(dat) & "." & Second(dat)
        FileNameDate = tekDate & ".bmp"
 
        sw = My.Computer.Screen.WorkingArea.Size.Width
        sh = My.Computer.Screen.WorkingArea.Size.Height
        Dim scrpic As New Bitmap(sw, sh) ' объект Bitmap для размещения скриншота
        Dim gscrpic As Graphics = Graphics.FromImage(scrpic) ' управление Bitmap
        gscrpic.Clear(Color.FromArgb(13, 11, 12)) ' устранение пустых точек
        gscrpic.CopyFromScreen(New Point(0, 0), New Point(0, 0), New Size(sw, sh)) ' скриншот всего игр поля
        scrpic.Save(FileNameDate, ImageFormat.Bmp) ' запись в файл
    End Sub
End Class
Добавлено через 2 часа 26 минут
ум, нашел 2-ой способ, работает, но думаю будет не во всех играх, вот:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Class Main
  Const KEYEVENTF_KEYUP As Short = &H2S
    Const KEYEVENTF_EXTENDEDKEY As Short = &H1S
    Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Integer, _
ByVal dwExtraInfo As Integer)
...
Private Sub savescr()
...
Dim sc As Image
keybd_event(&H2C, &H45S, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) ' print screen
keybd_event(&H2C, &H45S, KEYEVENTF_EXTENDEDKEY Or 0, 0)
sc = My.Computer.Clipboard.GetImage()
sc.Save(FileNameDate, ImageFormat.Bmp) ' запись в файл
...
Здесь происходит нажатие клавиши Print screen, загвоздка в том, что если в этом момент нажаты др клавиши, то будет облом. Также не многие игры дают такую возможность. Но меня это вобщемт устроит. Еще такая прога антивирусами распознается как keylogger изза работы с клавой. Есть ли способ послать запрос записи в буфер обмена минуя нажатие клавиши?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.10.2010, 15:23
Ответы с готовыми решениями:

System.ArgumentException при попытке снять скриншот с игры и получить цвет пиксела
Ребят помогите пожалуйста, работает некоторое время, потом летит к чертям. Public Function...

Скриншот экрана
Как из этого кода сделать чтобы он сохранял скриншот всего экрана,а не только формы.Dim BM As New...

Скриншот активного окна
Скриншот экрана я знаю как сделать, но как сделать скриншот активного окна? Dim bmp As Bitmap =...

Сделать скриншот окна
Доброе время суток. Подскажите пожалуйста, как получить скрин всего окна и сохранить полученную...

1
33 / 6 / 0
Регистрация: 12.01.2010
Сообщений: 85
28.10.2010, 22:38  [ТС] 2
вот в 1-ом способе через Graphics.CopyFromScreen скриншот бывает обрабатывается в момент не полной обрисовки экрана (напр., когда не нанесены еще текстуры). Как это исправить? Application.DoEvents() не помогает

Добавлено через 2 часа 50 минут
И вот теперь у меня еще больше проблем, узрел идею через Direct3d, но написано либ на старых языках, либ на других. Знает ктонить чтонить про это на vba? Вот пару ссылок:
http://www.gamedev.net/communi... _id=359794
http://spazzarama.wordpress.co... -direct3d/
http://msdn.microsoft.com/en-u... te_a_scene
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2010, 22:38

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Скриншот окна стороннего приложения
Добрый день! Подскажите, как сделать фото участка программы, зная не хэндл, а полный путь к...

Автоматический скриншот и сохранение файла
И снова здравствуйте:coffee:) Что-то мне подсказывает что я уже немного надоел:D) Но тем не менее у...

Скриншот PictureBox без областей окна
Доброе время суток вам. На форме есть PictureBox1 и Label1, Label2 (это кнопки: сохранить и...

Сделать скриншот и разместить на лист в Excel
Программирую на Visual Basic 10. Необходимо сделать кнопку, при помощи которой будет делаться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.