В основном: я хотел бы, чтобы sendmessage и sendmessagetimeout API для VB.NET использовались и знали другие.
Мне нужен API для sendmessage и sendmessage timeout для моего приложения VB .net. Я довольно долго искал, и все, что я нашел, похоже, не работает: либо сообщение просто не кажется отправленным, либо кажется, что сообщение отправлено с параметром msg, всегда равным 0, и настройкой wparam, как я ввожу для настройки сообщения. Pinvoke также, кажется, всегда создает исключение AccessViolationException, так как я не знаю, по какой причине Я попытался поиграться с, может быть, просто тем, куда я поместил переменную, но неудивительно, что нет простого логического переключения переменных.
Я попробовал пинвоук:
<DllImport("user32.dll", SetLastError:=True)> _
Public Shared Function SendMessageTimeout(ByVal windowHandle As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr, ByVal flags As SendMessageTimeoutFlags, ByVal timeout As Integer, ByRef result As IntPtr) As IntPtr
End Function
и Аллапи:
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As String, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
среди других, и они просто не работают.
Так что я хотел бы знать, какой APIS для sendmessage и / или sendmessage timeout вы знаете об этой работе! Если для этих функций просто нет правильных API-интерфейсов для VB.net, какие альтернативные функции я мог бы использовать для выполнения той же задачи, что и эти 2?
Заранее благодарим вас за любую информацию, которую вы имеете:)
РЕДАКТИРОВАТЬ:
в качестве альтернативы, возможно, я отправляю сообщение неправильно, так что просто чтобы убедиться, что это не проблема:
Я хочу отправить WM_WININICHANGE, поэтому я использую:
- hwnd = HWND_BROADCAST = 0xffff = 65535
- msg = WM_WININICHANGE = 0x001A = 26
- wparam и lparam 0
но я пробовал с другими значениями для wparam и lparam обычно без разницы. при попытке отправить сообщение через тайм-аут я также использую:
- flags = SMTO_ABORTIFHUNG = 2
- время ожидания = 1000 = 1 секунда
- затем 0 для результата.