2016-05-21 6 views
1

Я борюсь с этим кодом для включения монитора. Я установил на панели управления Windows 10 дисплей, чтобы отключиться через 10 минут, но у меня есть приложение для распознавания голоса, написанное на VB, и мне нужно разбудить экран, когда я вызываю приложение через голос. Итак, есть ли код для пробуждения лотка монитора Visual Basic? Я долго искал, но я нашел только Java-код. Спасибо и отлично провели день и ночь! :)Как включить/просыпаться экран с Visual Basic

+0

Существует, безусловно, способ сделать это через вызовы win32 api. – RoyalPotato

+0

Нашел его примерно через 30 секунд: http://www.codeproject.com/Articles/11099/Turn-on-off-monitor – RoyalPotato

+0

Если вам нужно, чтобы я конвертировал его в vb для вас, дайте мне знать. – RoyalPotato

ответ

0

K, поэтому, с руководством the article on codeproject, некоторые из ответов даны this question и 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 
+0

Большое спасибо! Примерно около монтирования я пытался преобразовать Java и C в VB, пытаясь переместить мышь, и мне удалось перемещать курсор, но не просыпаться на экране! Вы сделали это за один час! Теперь я подкорректирую код и реализую его в своем маленьком приложении Arduino для голосовой панели. СПАСИБО БОЛЬШОЕ! :) :) :) – Martin

+0

Не стоит беспокоиться, родной API окон почти всегда является ответом;). Звучит как классный проект. Может быть, я буду вдохновлен, чтобы стереть пыль с моего ардуино и снова поиграть с ним: D. – RoyalPotato

+0

Вы можете сделать много вещей с помощью платы Arduino и последовательной связи с VB. Вы даже можете управлять доской через Интернет через VB. – Martin

 Смежные вопросы

  • Нет связанных вопросов^_^