Страница: 1 |
Страница: 1 |
Вопрос: Пауза (doevents, sleep)
Добавлено: 24.10.10 12:23
Автор вопроса: Spiritsun
Проблемка есть, прошу помощи, делаю прогу для автоматических скриншотов с игр, пытаюсь реализовать её через програмное нажатие на кл PrtScr и вот после нажатия мне нужна пауза, такая чтобы дать ОС успеть записать данные с экрана в буфер обмена перед тем как я буду ими пользоваться, притом игра не должна виснуть. Просто doevents() не помогает, а использование sleep() в любом случае блокирует игру. Как быть? Вот кусок кода:
keybd_event(&H2C, &H45S, KEYEVENTF_EXTENDEDKEY Or 0, 0)
keybd_event(&H2C, &H45S, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
{ПАУЗА}
tstclp = My.Computer.Clipboard.ContainsImage
If tstclp Then
sc = My.Computer.Clipboard.GetImage
sw = sc.Size.Width
sh = sc.Size.Height
Dim scrpic3 As New Bitmap(sc, New Size(Fix(scl * sw / 100), Fix(scl * sh / 100))) ' объект Bitmap для размещения скриншота
Dim gscrpic3 As Graphics = Graphics.FromImage(scrpic3) ' управление Bitmap
gscrpic3.DrawString("ID Match: " & id & vbCrLf & "Nick: " & nick & vbCrLf & "Time: " & tekH & vbCrLf & "Date: " & tekD, New Font("Arial", 14, FontStyle.Bold, GraphicsUnit.Pixel), New SolidBrush(Color.Red), New Point(10, 10))
scrpic3.Save(FileNameDate, ImageFormat.Jpeg) ' запись в файл
gscrpic3.Dispose()
scrpic3.Dispose()
End If
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 24.10.10 12:32
запускать процедуру в отдельном треде
Номер ответа: 2
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #2
Добавлено: 25.10.10 10:22
лучше реализуй ее через Graphics.CopyFromScreen
Номер ответа: 3
Автор ответа:
Spiritsun
Вопросов: 15
Ответов: 44
Профиль | | #3
Добавлено: 28.10.10 19:42
У меня 2 метода, вот 2-ой написал через Graphics.CopyFromScreen, работает такой метод только в том случае, если в игре нет сглаживания (анти-алиазинга) и в ярлыке отключена композиция рабочего стола (win7, vista). Так вот, скриншот бывает обрабатывается в момент не полной обрисовки экрана (напр., когда не нанесены еще текстуры). Как это исправить?
Номер ответа: 4
Автор ответа:
Spiritsun
Вопросов: 15
Ответов: 44
Профиль | | #4
Добавлено: 28.10.10 19:42
У меня 2 метода, вот 2-ой написал через Graphics.CopyFromScreen, работает такой метод только в том случае, если в игре нет сглаживания (анти-алиазинга) и в ярлыке отключена композиция рабочего стола (win7, vista). Так вот, скриншот бывает обрабатывается в момент не полной обрисовки экрана (напр., когда не нанесены еще текстуры). Как это исправить
Номер ответа: 5
Автор ответа:
Spiritsun
Вопросов: 15
Ответов: 44
Профиль | | #5
Добавлено: 28.10.10 19:42
У меня 2 метода, вот 2-ой написал через Graphics.CopyFromScreen, работает такой метод только в том случае, если в игре нет сглаживания (анти-алиазинга) и в ярлыке отключена композиция рабочего стола (win7, vista). Так вот, скриншот бывает обрабатывается в момент не полной обрисовки экрана (напр., когда не нанесены еще текстуры). Как это исправить?
Номер ответа: 6
Автор ответа:
Spiritsun
Вопросов: 15
Ответов: 44
Профиль | | #6
Добавлено: 28.10.10 19:47
Application.DoEvents() не помогает
Номер ответа: 7
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #7
Добавлено: 28.10.10 20:25
использовать пряморукую игру( могу объяснить в каких местах она кривая), либо в ней установить не fullscreen mode и, желательно, иметь включенную VSync.
Номер ответа: 8
Автор ответа:
Spiritsun
Вопросов: 15
Ответов: 44
Профиль | | #8
Добавлено: 29.10.10 19:59
игра CoD6, VSync вкл
Номер ответа: 9
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #9
Добавлено: 30.10.10 11:00
установи не fullscreen (не windowed, хотя можно и его)