.net 如何让这行代码在x64 SendMessage()上工作

.net 如何让这行代码在x64 SendMessage()上工作,.net,dllimport,sendmessage,intptr,.net,Dllimport,Sendmessage,Intptr,我们正试图通过代码关闭显示器,并通过代码将其重新打开。我们发现代码可以工作,但是它使用user32.dll,并且似乎不像我们软件的其他部分那样在64位模式下工作是的,我尝试过明显的user64.dll有什么建议吗 " “这里是原始海报,我们用Process.GetCurrentProcess.Handle进行了测试,当我们将其切换到Process.GetCurrentProcess.MainWindowHandle时,它工作正常。发布5分钟后,Ok解决了问题。原来我们使用的mainWindowH

我们正试图通过代码关闭显示器,并通过代码将其重新打开。我们发现代码可以工作,但是它使用user32.dll,并且似乎不像我们软件的其他部分那样在64位模式下工作是的,我尝试过明显的user64.dll有什么建议吗

"


这里是原始海报,我们用Process.GetCurrentProcess.Handle进行了测试,当我们将其切换到Process.GetCurrentProcess.MainWindowHandle时,它工作正常。

发布5分钟后,Ok解决了问题。原来我们使用的mainWindowHandle是Process.GetCurrentProcess.Handle,它不起作用,但Process.GetCurrentProcess.mainWindowHandle起作用。
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