Как установить значение системного параметра Windows? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Нашёл пример использования функции API SystemParametersInfo, но он на C++. При попытке его воспроизвести на VB.Net получаю следующее:
При считывании получаем 1. Это ожидаемо.
При установке и проверке считыванием ожидаю получить 3, а получаю число очень похожее на адрес в памяти.
Результата добился следующим образом:
в случае чтения использую объявление API функции таким образом:
в случае установки параметра, объявляю ту же функцию уже по-другому:
Естественно пришлось писать объявления одной и той же API-функции в двух разных приложениях. Возник вопрос:
а возможно ли объявить функцию разными способами в одном и том же приложении? Может быть существует другой подход к этой проблеме?
Решение задачи: «Как установить значение системного параметра Windows?»
textual
Листинг программы
Public Class sysparam1
Public Sub New()
End Sub
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SystemParametersInfo(ByVal uiAction As UInt32, ByVal uiParam As UInt32, ByRef pvParam As IntPtr, ByVal fWinIni As UInt32) As Boolean
End Function
Function n(ByVal uiAction As UInt32, ByVal uiParam As UInt32, ByRef pvParam As IntPtr, ByVal fWinIni As UInt32) As Boolean
n = SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni)
End Function
End Class
Public Class sysparam2
Public Sub New()
End Sub
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SystemParametersInfo(ByVal uiAction As UInt32, ByVal uiParam As UInt32, ByVal pvParam As UInt32, ByVal fWinIni As UInt32) As Boolean
End Function
Function n(ByVal uiAction As UInt32, ByVal uiParam As UInt32, ByRef pvParam As IntPtr, ByVal fWinIni As UInt32) As Boolean
n = SystemParametersInfo(uiAction, uiParam, pvParam, fWinIni)
End Function
End Class