2013-07-25 3 views
0

Я пытаюсь сделать виртуальный клик, и для этого вам нужно дать значение keybd_event() байта, чтобы рассказать ему, что делать. Поэтому у меня есть эта функция, которая принимает переданную строку (это просто письмо от A-Z) и преобразует ее в байт. Но когда я запускаю программу, я получаю эту ошибку Conversion from type 'Byte()' to type 'Byte' is not validStuck on Byte Conversion

Здесь функция:

Private Function getByteValue(ByVal letter As String) 
    Dim byt = System.Text.Encoding.Unicode.GetBytes(letter) 
    Return byt 
End Function 

Я не знаю, почему ошибка происходит, а также я не уверен, что его даже возвращает байт значение, а скорее, сколько байтов конвертирует письмо, и мне нужно значение байта bvk?

+1

Вы должны объявить возвращаемое значение Datatail, а также тип данных вашей байтовой переменной. Я предлагаю вам всегда использовать OPTION EXPLICT, чтобы избежать трудностей для выявления проблем. Некоторые люди, такие как OPTION STRICT, а также, что, если вы играете на системном уровне, как вы, вероятно, хорошая идея. Почему ты вообще на этом уровне? – rheitzman

ответ

3

Encoding.GetBytes() возвращает массив байтов, а не один байт. Сообщение об ошибке сообщает вам, что вы пытаетесь преобразовать массив байтов в байт.

Вам придется перебирать элементы в массиве и обрабатывать каждый до keybd_event().

1

Правильный метод, аналогичный тому, что вы реализовали, будет выглядеть так.

Private Function getByteValue(ByVal letter As String) As Byte() 
    Dim byt As Byte() = {} 
    byt = System.Text.Encoding.Unicode.GetBytes(letter) 
    Return byt 
End Function