Как заставить эту строку кода работать на x64 SendMessage () - PullRequest
0 голосов
/ 11 октября 2019

Мы пытаемся выключить монитор с помощью кода и снова включить его с помощью кода. Мы нашли код, который работает, однако он использует user32.dll и, похоже, не работает в 64-битном режиме, как и остальная часть нашего программного обеспечения (да, я пробовал очевидный user64.dll). Любые предложения?

'' '

Public WM_SYSCOMMAND As Integer = &H112
Public SC_MONITORPOWER As Integer = &HF170
Private mainWindowHandle As IntPtr

Public Sub New(mainWindowHandle As IntPtr)
    InitializeComponent()
    Me.mainWindowHandle = mainWindowHandle
End Sub

<DllImport("user32.dll")>
Private Shared Function SendMessage(hWnd As Integer, hMsg As Integer, wParam As Integer, lParam As Integer) As Integer
End Function

Private Sub PowerOffButton_Click(sender As Object, e As RoutedEventArgs)
    SendMessage(mainWindowHandle, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
End Sub

'' '

1 Ответ

0 голосов
/ 11 октября 2019

Оригинальный постер здесь, мы тестировали с Process.GetCurrentProcess (). Обработайте, как только мы поменяли его на Process.GetCurrentProcess (). MainWindowHandle, он работал нормально.

...