2013-07-30 2 views
1

У меня есть WPF проект с простым button, что, когда щелчок покажет пользователю, в каком режиме загрузки они находятся.WPF кнопки показать сообщ из bootmode

Я нашел некоторый код с веб-сайта Microsoft, но это может вне даты? 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 

Любой один знает, как решить эту проблему?

Любое понимание на том же уровне также оценено.

ответ

1

Подпись неверна, выглядит так, как будто код с этой страницы неверен. Измените его на:

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

(возможно, связанные с запуском на 32-битных против 64-битной машине)

+0

Спасибо, что работали! Да, вы правы выше 32 бит против 64 бит. –

+0

Нет проблем, это всегда немного тревожит, чтобы скопировать код вставки с веб-сайта Microsoft и в итоге получить такую ​​страшную ошибку =). –

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