如何使这一行代码在x64 SendMessage()上工作

问题描述 投票:0回答:1

我们正在尝试通过代码关闭显示器,然后通过代码将其重新打开。我们发现了可以正常工作的代码,但是它使用了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

'''

.net dllimport sendmessage intptr
1个回答
0
投票

原始海报,我们正在使用Process.GetCurrentProcess()进行测试。一旦将其交换到Process.GetCurrentProcess()。MainWindowHandle上,它就可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.