Можно ли напрямую использовать класс Win32Native из пространства имен Microsoft.Win32? - PullRequest
4 голосов
/ 10 января 2012

Есть ли способ напрямую использовать пространство имен Win32Native?

Я бы хотел напрямую вызвать метод:

Win32Native.SendMessageTimeout(new IntPtr(0xffff), 0x1a, IntPtr.Zero, "Environment", 0, 0x3e8, IntPtr.Zero) == IntPtr.Zero;    

вместо объявления:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, uint fuFlags, uint uTimeout, IntPtr lpdwResult);

Есть ли вероятность этого?

1 Ответ

4 голосов
/ 10 января 2012

Полагаю, вы имеете в виду класс Microsoft.Win32.Win32Native.Нет, это нельзя назвать, это внутреннее.Возможно, вы могли бы что-то сделать с помощью рефлексии, но это было бы еще ужаснее.

Microsoft может изменить API в любое время;через новую версию Framework, пакет обновления и т. д. Поскольку он является внутренним, они не обязаны поддерживать его, даже если они вносят изменения, которые нарушают работу вашего приложения, если вы непосредственно вызываете его.платформа вызывает себя.

Вы также должны посмотреть на http://pinvoke.net/. Этот сайт содержит много подписей вызова платформы, уже определенных для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...