Ошибка при получении обработчика форм (Vb.net) - PullRequest
1 голос
/ 13 апреля 2011

У меня есть текущий код:

Public Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function SendMessage(ByVal hWnd As HandleRef, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As String) As IntPtr
End Function

Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

Public Function WindowHandle(ByVal sTitle As String) As Long
    WindowHandle = FindWindow(vbNullString, sTitle)
End Function

Dim CurrentProcess As Process
Dim CurrentHandle As IntPtr

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    SendMessage(CurrentHandle, 256, Keys.A, 0)
    SendMessage(CurrentHandle, 257, Keys.A, 65539)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
        CurrentProcess = Process.GetProcessesByName(ListBox1.SelectedItem.ToString.Remove(0, ListBox1.SelectedItem.ToString.IndexOf("{") + 1).Replace("}", ""))(0)
        CurrentHandle = New IntPtr(WindowHandle(CurrentProcess.MainWindowTitle))
        Timer1.Start()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Если вы посмотрите на кнопку sub, каждый раз, когда она запускается, она выдает ошибку «Ошибка арифметического переполнения!»

Что такоездесь не так?Это должно сработать ... верно?

Извините, это немного расплывчато, но это настолько, насколько я знаю.

1 Ответ

5 голосов
/ 13 апреля 2011

Ваши Объявляют утверждения правильными, но способ, которым вы их называете, неверен.Свободная типизация, допускаемая VB.NET, доставляет вам неприятности, которые вы не можете диагностировать.Лекарство от этого позволяет компилятору сказать вам, что вы сделали это неправильно.Поместите это в начало вашего файла исходного кода:

 Option Strict On
...