Boa tarde galera do fórum, tudo bem ??
seguinte: Estou desenvolvendo uma aplicação no visual basic 2010 express.. mas houve um problema. Ela precisa se comunicar com meu arduino ( um micro controlador..). Vamos ao que realmente interessa, o problema.
Função que chama o user32.dll e envia o comando para o computador..
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr End Function
Esse é o comando que ele deve realizar dentro da serial port data received( esse comando diminuiu o volume do computador, chamando o uso do user32.dll )
SendMessage(Me.Handle, WM_APPCOMMAND, &H30292, APPCOMMAND_VOLUME_DOWN * &H10000)
Código que está com erro:
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Dim textoDaPorta As String textodaPorta = SerialPort1.ReadLine RichTextBox1.Invoke(Sub() RichTextBox1.Text += textoDaPorta & Environment.NewLine) If textoDaPorta = 3877748955 Then Label3.Invoke(Sub() Label3.Text = textoDaPorta) SendMessage.invoke(Sub() SendMessage(Me.Handle, WM_APPCOMMAND, &H30292, APPCOMMAND_VOLUME_UP * &H10000)) End If If textoDaPorta = 2721879231 Then Label3.Invoke(Sub() Label3.Text = textoDaPorta) End If End Sub
Erro que o visual basic reporta:
Error 1 Argument not specified for parameter 'hWnd' of 'Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As System.IntPtr, lParam As System.IntPtr) As System.IntPtr'. C:\Users\rober_000\documents\visual studio 2010\Projects\volumearduino\volumearduino\Form1.vb 78 13 volumearduino Error 2 Argument not specified for parameter 'lParam' of 'Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As System.IntPtr, lParam As System.IntPtr) As System.IntPtr'. C:\Users\rober_000\documents\visual studio 2010\Projects\volumearduino\volumearduino\Form1.vb 78 13 volumearduino Error 3 Argument not specified for parameter 'Msg' of 'Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As System.IntPtr, lParam As System.IntPtr) As System.IntPtr'. C:\Users\rober_000\documents\visual studio 2010\Projects\volumearduino\volumearduino\Form1.vb 78 13 volumearduino Error 4 Argument not specified for parameter 'wParam' of 'Private Shared Function SendMessage(hWnd As System.IntPtr, Msg As UInteger, wParam As System.IntPtr, lParam As System.IntPtr) As System.IntPtr'. C:\Users\rober_000\documents\visual studio 2010\Projects\volumearduino\volumearduino\Form1.vb 78 13 volumearduino
Erro que aparece sem o uso do invoke :
||
Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on.Usando SendMessage(Me.Handle, WM_APPCOMMAND, &H30292, APPCOMMAND_VOLUME_DOWN * &H10000)