|
Ryan Fleming wrote: id.ProcessMessage(message) '***This allows the USB Class To determin if the Message Is From A USB HID Device
'***If it is the m_KeyPressed event is raised
End If
OK, you need something that keeps track of the input from the individual devices and determines when it has a complete message and when to abandon an incomplete message. THis is where the prefix tags come into play. I'd probably create a class that takes a HID ID and listens for messages from only that HID.
You can call your id.ProcessMessage function, but what does it do?? There's no return information, so it has to raise some kind of message with an identifier and value denoting which device the keystroke value came from. Without that, you've got nothing.
|
|
|
|
|
You can call your id.ProcessMessage function, but what does it do??
In the Form's Show method the following code:
AddHandler id.KeyPressed, AddressOf m_KeyPressed
The code above creates a link to the KeyPressed event of the id class.
When id.ProcessMessage is called, the message is processed and if it comes from a USB HID device a keypressed event is fired which is linked to the m_KeyPressed subroutine in the Form.
The code below shows the information that is passed back to me identifying the device. THIS EVENT GETS FIRED AFTER THE WNDPROC (WITH A USB HID MESSAGE) STARTS, BUT BEFORE THE WNDPROC EVENT IF FINISHED!!!! THIS EVENT ALSO GETS FIRED BEFORE THE FORM'S KEYPRESSED EVENT IS FIRED FOR THE SAME MESSAGE EVALUATED IN WNDPROC.
(I removed the other Information from previous posts and included only that in which I am currently using)
Private Sub m_KeyPressed(ByVal sender As Object, ByVal e As InputDevice.KeyControlEventArgs)
If SavedHIDDeviceName = e.Keyboard.deviceName Then
USBHIDDeviceText = e.Keyboard.TextRecieved)
ProcessHIDText(USBHIDDeviceText)
HandleText = True
End If
End Sub
Private Sub frmMain_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If HandleText = True Then
HandleText = False
e.Handled = True
End If
End Sub
From Here I set the HandleText boolean variable to true if it is a recognized device, so when the keypressed event fires I handle the text. It seems cleaner to me to have the processmessage function return a value in wndProc that would signal me to cancel the message before it trickles down to the Form's KeyPressed event, but I can't seem to void the message before it gets returned in the MyBase.WndProc(message) inside the WndProc subroutine. Ideally I could return the text recieved and device information when I call id.Processmessage and void the message before it leaves in the MyBase.WndProc(message), but so far I have not figured out how to void the message like I used to be able to do in callback functions in the VB6 days.
Thanks
Ryan
|
|
|
|
|
Ryan Fleming wrote: THIS EVENT GETS FIRED AFTER THE WNDPROC (WITH A USB HID MESSAGE) STARTS, BUT BEFORE THE WNDPROC EVENT IF FINISHED!!!! THIS EVENT ALSO GETS FIRED BEFORE THE FORM'S KEYPRESSED EVENT IS FIRED FOR THE SAME MESSAGE EVALUATED IN WNDPROC.
OK, so the ProcessMessage call would have to return a value that says if it fired an event or not. If so, then you don't pass the message to the base WndProc method.
|
|
|
|
|
|
dim money as integer
money = 1000000
|
|
|
|
|
prostitution.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
FTW!
Any suggestions, ideas, or 'constructive criticism' are always welcome.
"There's no such thing as a stupid question, only stupid people." - Mr. Garrison
|
|
|
|
|
Volunteer to be a human medical test subject.
|
|
|
|
|
|
Sell your soul
I are troll
|
|
|
|
|
Work for it.
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
He wants to "get" money, not "earn" it
I are troll
|
|
|
|
|
well.. i am still searching for the answer thou..
Audrey
|
|
|
|
|
The government is paying pretty good if you're an executive at a failed US bank or automotive manufacturer.
Any suggestions, ideas, or 'constructive criticism' are always welcome.
"There's no such thing as a stupid question, only stupid people." - Mr. Garrison
|
|
|
|
|
From the bank.
Samir R. Ibrahim
|
|
|
|
|
1) Bid on project X on rentacoder.
2) Come here and ask "HOW TO DO X IN VB. URGENT. CODE PLZ!!"
3) Profit!
|
|
|
|
|
hi,
sorry if this sounds a stupid question but im a beginer so bare with me this is my first non guide based project.
im writing a program that creates a batch file from user entered data.
it then runs and saves the batch file text + result as a text file.
it then displays the text file in a textbox.
this was fine but im trying to develop it further so i now need it to be more simple for the user with more features.
the user can now choose how many times (1-10) the batchfile requests the data.
this works well but the data returned is a complicated unformatted mess.
i would like if possible for the program to read the final text file and return simple formatted results.
eg: instead of "exact returned result for 5x run..
Pinging 192.168.1.1 with 32 bytes of data:Reply from 192.168.1.1: bytes=32 time=24ms TTL=64Reply from 192.168.1.1: bytes=32 time=3ms TTL=64Reply from 192.168.1.1: bytes=32 time=3ms TTL=64Reply from 192.168.1.1: bytes=32 time=3ms TTL=64Reply from 192.168.1.1: bytes=32 time=3ms TTL=64Ping statistics for 192.168.1.1: Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),Approximate round trip times in milli-seconds: Minimum = 3ms, Maximum = 24ms, Average = 7ms
i would prefer just
ping to 192.168.1.1 sucessful 3ms
ping to 192.168.1.1 sucessful 3ms
ping to 192.168.1.1 sucessful 3ms
ping to 192.168.1.1 sucessful 3ms
ping to 192.168.1.1 sucessful 3ms
and to say it failed for eg: "ping to 192.168.1.1 failed"
i know theres more possible results but i'll sort that out later.
i havnt a clue how to do this ive looked high and low but nothing works how i want as the data is completely different everytime.
heres the process code so you can see where im at..
the reason its doubled up is it can ping to IP and name, i just found it easyier that way
Private Sub Button1_Click() Handles Button1.Click
Dim pingamount As Integer
pingamount = NumericUpDown1.Value
If RadioButton1.Checked = True Then
If TextBox1.Text.Length = 0 Or TextBox2.Text.Length = 0 Or TextBox3.Text.Length = 0 Or TextBox4.Text.Length = 0 Then
MsgBox("please enter a valid IP address")
Else : TextBox5.Text = ""
If Form3.TextBox1.TextLength = True Then Form3.Close()
Dim fs As New FileStream("C:\ping.bat", FileMode.Create, FileAccess.Write)
Dim s As New StreamWriter(fs)
s.WriteLine("ping.exe -n " & pingamount & " " & TextBox1.Text & "." & TextBox2.Text & "." & TextBox3.Text & "." & TextBox4.Text & ">C:\ping.txt")
s.Close()
Shell("C:\ping.bat")
Threading.Thread.Sleep(pingamount * 5000)
fs = New FileStream("C:\ping.txt", FileMode.Open, FileAccess.Read)
Dim d As New StreamReader(fs)
d.BaseStream.Seek(0, SeekOrigin.Begin)
While d.Peek() > -1
TextBox5.Text &= d.ReadLine()
End While
d.Close()
Me.Visible = False
Dim f3 As New Form3
f3.Show()
Form3.TextBox1.Text = TextBox5.Text
End If
End If
If RadioButton2.Checked = True Then
If TextBox7.Text.Length = 0 Then
MsgBox("please enter a valid name")
Else : TextBox5.Text = ""
If Form3.Visible = True Then Form3.Close()
Dim fs As New FileStream("C:\ping.bat", FileMode.Create, FileAccess.Write)
Dim s As New StreamWriter(fs)
s.WriteLine("ping.exe -n " & pingamount & " " & TextBox7.Text & ">C:\ping.txt")
s.Close()
Shell("C:\ping.bat")
Threading.Thread.Sleep(pingamount * 5000)
fs = New FileStream("C:\ping.txt", FileMode.Open, FileAccess.Read)
Dim d As New StreamReader(fs)
d.BaseStream.Seek(0, SeekOrigin.Begin)
While d.Peek() > -1
TextBox5.Text &= d.ReadLine()
End While
d.Close()
Me.Visible = False
Dim f3 As New Form3
f3.Show()
Dim fivetext As String
fivetext = TextBox5.Text
Form3.TextBox1.Text = fivetext
End If
End If
End Sub
|
|
|
|
|
Do you need to use an external batch file?
Can you not use the network classes from the framework directly?
|
|
|
|
|
sadly im kinda new to this so its the only way i new
i could try another way.
could you go into more detail
|
|
|
|
|
I use this code
If DataGridView1.RowCount> 0 Then
If DataGridView1.Rows(0).Cells("nadnica").Value <>Nothing Then
CheckBox1.Enabled = True
Else
CheckBox1.Enabled = False
End If
End If
and I want when type first letter in cell DataGridView1.Rows(0).Cells("nadnica") execute
how make this thanks
|
|
|
|
|
You should choose variable names that make your code readable. If you have a textbox in a cell, it will have a text changed event.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
Yes variable is textbox but have some event - CellValueChange, CellBeginEdit, CurrentCellChange etc but noone of this work
|
|
|
|
|
Better u can use "Infragistics" "UltraWinGrid" control to solve this problem. There is a "CellChange" event, this event fire when u start typing the first letter itself.
|
|
|
|
|
OK where is found UltraWinGrid or Infragistics
|
|
|
|
|