Что такое проблема в кодах (отправить сообщение)
Я пытаюсь разработать какой-то код, чтобы сделать нажатие кнопки на приложение, не перемещая на него курсор. Я вижу сообщения под Spy++, но ничего не происходит.
Заранее спасибо...
Public Class Form1 Const WM_LBUTTONDOWN = &H201 Const WM_LBUTTONUP = &H202 Const MK_LBUTTON = &H1 Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Int32, ByVal wMsg As Int32, ByVal wParam As Int32, ByVal lParam As Int32) As Int32 Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Int32 Private Sub cmdBSPerform_Click(sender As Object, e As EventArgs) Handles cmdBSPerform.Click Dim hwnd As Long = FindWindow(vbNullString, handle.Text) Dim lParam As Int32 lParam = MakeLParam(txtXBSPerform.Text, txtYBSPerform.Text) SendMessage(hwnd, WM_LBUTTONDOWN, WM_LBUTTONUP, MakeLParam(txtXBSPerform.Text, txtYBSPerform.Text)) SendMessage(hwnd, WM_LBUTTONUP, 0, MakeLParam(txtXBSPerform.Text, txtYBSPerform.Text)) End Sub Public Function MakeLParam(ByVal LoWord As Int32, ByVal HiWord As Int32) As Int32 Return (HiWord << 16) Or (LoWord And &HFFFF) End Function End Class
Что я уже пробовал:
Я попытался сделать нажатие кнопки на приложение, не перемещая на него курсор, я могу видеть свои сообщения под spy++, но ничего не происходит
[no name]
Я думаю, что вы должны объявить параметр hwnd как 'IntPtr'
Тогда окно, в которое вы пытаетесь попасть, не должно находиться в свернутом режиме на панели задач, также если окно находится за другим окном, которое перекрывается. Вы должны написать функцию, чтобы проверить, находится ли она в фокусе.
EastBlood
я сделал это, но все еще не работал :/
EastBlood
если курсор находится над окном, он прекрасно работает. Как мне это сделать? - а ты знаешь?
[no name]
Вам нужно изменить свои параметры, http://pinvoke.net/search.aspx?search=sendmessage& пространство имен=[все]
EastBlood
какой из них вы рекомендуете ?