1

我有WPF一个简单的项目,button单击时会向用户显示他们所处的启动模式。

我从微软的网站上找到了一些代码,但它可能已经过时了?http://support.microsoft.com/kb/291664

这是我的代码:

Class MainWindow


 Private Declare Function GetSystemMetrics Lib "user32" _
   (ByVal nIndex As Long) As Long
    Const SM_CLEANBOOT& = 67
    Private Sub DetectModeButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles DetectModeButton.Click
    Dim result As Long

    result = GetSystemMetrics(SM_CLEANBOOT)

    Select Case result
        Case 0
            MsgBox("System started in normal mode.")
        Case 1
            MsgBox("System started in safe mode.")
        Case 2
            MsgBox("System started in safe mode with networking.")
        Case Else
            MsgBox("Unknown value returned from GetSystemMetrics.")
    End Select
End Sub
End Class

我在运行时收到以下错误:

A call to PInvoke function 'BootModeTest!BootModeTest.MainWindow
::GetSystemMetrics' has unbalanced the stack. This is likely 
because the managed PInvoke signature does not match the 
unmanaged target signature. Check that the calling 
convention and parameters of the PInvoke 
signature match the target unmanaged signature

有谁知道如何解决这个问题?

对此的任何见解也值得赞赏。

4

1 回答 1

1

签名错误,看起来该页面的代码不正确。将其更改为:

Private Declare Function GetSystemMetrics Lib "user32" _
  (ByVal nIndex As Integer) As Integer

(可能与在 32 位和 64 位机器上运行有关)

于 2013-07-30T20:18:10.620 回答