Я борюсь с этим кодом для включения монитора. Я установил в панели управления Windows 10, чтобы дисплей отключался через 10 минут, но у меня есть одно приложение для распознавания голоса, написанное на VB, и мне нужно разбудить экран, когда я вызываю приложение с помощью голоса. Так есть ли код для пробуждения монитора через Visual Basic? Я долго искал, но нашел только код Java. Спасибо и хорошего дня/ночи! :)
Как включить/разбудить экран с помощью Visual Basic
comment
Наверняка есть способ сделать это с помощью вызовов Win32 API.
- person RoyalPotato   schedule 21.05.2016
comment
Нашел примерно через 30 секунд: codeproject.com/Articles/11099/Turn -вне монитора
- person RoyalPotato   schedule 21.05.2016
comment
Если вам нужно, чтобы я преобразовал его в vb для вас, дайте мне знать.
- person RoyalPotato   schedule 21.05.2016
comment
Вау, да, я нашел это и пытался преобразовать, но мне это не удалось. Я думаю, что это на C правильно? Если да, то мне понадобится помощь. :)
- person Martin   schedule 21.05.2016
comment
Пожалуйста, найдите время, чтобы прочитать Как задать вопрос и принять Tour Это сэкономит вам голоса в долгосрочной перспективе.
- person Ňɏssa Pøngjǣrdenlarp   schedule 21.05.2016
comment
Я преобразовал его в vb.net (на самом деле это был С#), и он не работал на Windows10, сейчас исследую;).
- person RoyalPotato   schedule 21.05.2016
comment
Работаю над решением, но мне пора идти, поэтому я вернусь, когда смогу :).
- person RoyalPotato   schedule 21.05.2016
comment
Без проблем! Спасибо. :)
- person Martin   schedule 21.05.2016
comment
Вы пробовали это решение ? Первоначально он был для Win XP, но, по-видимому, работал на Vista ... Может быть, он подойдет для Win10.
- person Martin Verjans   schedule 21.05.2016
comment
Я пробовал, но это не работает для Windows 10. Кстати, я использую Visual Basic Express 2010. Спасибо за внимание! :)
- person Martin   schedule 21.05.2016
Ответы (1)
K, так что, под руководством статьи о codeproject, некоторые ответов на этот вопрос и pinvoke.net, у меня что-то работает. Это могло бы быть чище, но я оставляю это на ваше усмотрение :). в конце концов, это ваш проект ;).
Imports System.Runtime.InteropServices
Public Class Monitor
Private Const WM_SYSCOMMAND As Integer = &H112
Private Const SC_MONITORPOWER As Integer = &HF170
Private Const HWND_BROADCAST As Integer = &HFFFF
Private Const INPUT_MOUSE As Integer = 0
Private Const MOUSEEVENTF_MOVE As Integer = 1
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
End Function
<DllImport("user32.dll", SetLastError:=True)>
Private Shared Function SendInput(<[In]()> ByVal nInput As UInt32,<[In](), MarshalAs(UnmanagedType.LPArray, ArraySubtype:=UnmanagedType.Struct, SizeParamindex:=0)> ByVal pInputs() As INPUT, <[In]()> ByVal cbInput As Int32) As UInt32
End Function
Private Structure INPUT
Public type As Integer
Public dx As Integer
Public dy As Integer
Public mouseData As Integer
Public dwFlags As Integer
Public time As Integer
Public dwExtraInfo As IntPtr
End Structure
Public Shared Sub Disable()
SendMessage(New IntPtr(HWND_BROADCAST), WM_SYSCOMMAND, SC_MONITORPOWER, New IntPtr(2))
End Sub
Public Shared Sub Enable()
Dim input = New INPUT()
input.type = INPUT_MOUSE
input.dx = 1
input.dy = 0
input.mouseData = 0
input.dwFlags = MOUSEEVENTF_MOVE
input.time = 0
input.dwExtraInfo = IntPtr.Zero
SendInput(1, {input}, 28)
End Sub
End Class
person
RoyalPotato
schedule
21.05.2016
Большое спасибо! Примерно после монтирования я пытался преобразовать Java и C в VB, пытаясь переместить мышь, и мне удалось переместить курсор, но не разбудить экран! Вы сделали это за один час! Теперь я урежу код и реализую его в моем небольшом приложении голосовой панели Arduino. БОЛЬШОЕ СПАСИБО! :) :) :) :)
- person Martin; 22.05.2016
Не беспокойтесь, родной Windows API почти всегда является ответом;). Звучит как крутой проект, тоже. Может быть, меня вдохновит стереть пыль с моего ардуино и снова поиграть с ним :D.
- person RoyalPotato; 22.05.2016
Вы можете делать МНОГО вещей с платой Arduino и последовательной связью с VB. Вы даже можете управлять доской через Интернет через VB.
- person Martin; 22.05.2016