Added support for keyboard text, and a few KB buttons.

Added variable listen port number and saving it.
This commit is contained in:
moosecrab 2020-06-16 02:29:11 -07:00
parent 63be44bf01
commit 0e3bed62dc
7 changed files with 85 additions and 32 deletions

View File

@ -1,6 +1,18 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<configuration> <configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="webcrab.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup> </startup>
<userSettings>
<webcrab.My.MySettings>
<setting name="listenport" serializeAs="String">
<value>8080</value>
</setting>
</webcrab.My.MySettings>
</userSettings>
</configuration> </configuration>

View File

@ -53,6 +53,18 @@ Namespace My
Return defaultInstance Return defaultInstance
End Get End Get
End Property End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("8080")> _
Public Property listenport() As UShort
Get
Return CType(Me("listenport"),UShort)
End Get
Set
Me("listenport") = value
End Set
End Property
End Class End Class
End Namespace End Namespace

View File

@ -1,7 +1,9 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles> <Profiles />
<Profile Name="(Default)" /> <Settings>
</Profiles> <Setting Name="listenport" Type="System.UInt16" Scope="User">
<Settings /> <Value Profile="(Default)">8080</Value>
</SettingsFile> </Setting>
</Settings>
</SettingsFile>

View File

@ -218,6 +218,11 @@ Module input
keybd_event(bVK, 0, KEYEVENTF_KEYUP, 0) keybd_event(bVK, 0, KEYEVENTF_KEYUP, 0)
End Sub End Sub
Public Sub SendKeysEscaped(str As String)
str = System.Text.RegularExpressions.Regex.Replace(str, "[+^%~()\\{\\}]", "{$0}")
SendKeys.SendWait(str)
End Sub
#End Region #End Region
End Module End Module

View File

@ -26,10 +26,10 @@ Partial Class main
Me.LogText = New System.Windows.Forms.TextBox() Me.LogText = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label() Me.Label1 = New System.Windows.Forms.Label()
Me.TapInput = New System.Windows.Forms.NumericUpDown() Me.TapInput = New System.Windows.Forms.NumericUpDown()
Me.PortInput = New System.Windows.Forms.NumericUpDown()
Me.Label2 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label()
Me.DragInput = New System.Windows.Forms.NumericUpDown()
CType(Me.TapInput, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.TapInput, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DragInput, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.PortInput, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
' '
'StartButton 'StartButton
@ -59,7 +59,7 @@ Partial Class main
'Label1 'Label1
' '
Me.Label1.AutoSize = True Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(93, 17) Me.Label1.Location = New System.Drawing.Point(221, 17)
Me.Label1.Name = "Label1" Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(96, 13) Me.Label1.Size = New System.Drawing.Size(96, 13)
Me.Label1.TabIndex = 2 Me.Label1.TabIndex = 2
@ -67,47 +67,47 @@ Partial Class main
' '
'TapInput 'TapInput
' '
Me.TapInput.Location = New System.Drawing.Point(195, 14) Me.TapInput.Location = New System.Drawing.Point(323, 15)
Me.TapInput.Maximum = New Decimal(New Integer() {1000, 0, 0, 0})
Me.TapInput.Name = "TapInput" Me.TapInput.Name = "TapInput"
Me.TapInput.Size = New System.Drawing.Size(57, 20) Me.TapInput.Size = New System.Drawing.Size(57, 20)
Me.TapInput.TabIndex = 3 Me.TapInput.TabIndex = 3
Me.TapInput.Value = New Decimal(New Integer() {5, 0, 0, 0}) Me.TapInput.Value = New Decimal(New Integer() {5, 0, 0, 0})
' '
'PortInput
'
Me.PortInput.Location = New System.Drawing.Point(158, 15)
Me.PortInput.Maximum = New Decimal(New Integer() {65535, 0, 0, 0})
Me.PortInput.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.PortInput.Name = "PortInput"
Me.PortInput.Size = New System.Drawing.Size(57, 20)
Me.PortInput.TabIndex = 5
Me.PortInput.Value = New Decimal(New Integer() {8080, 0, 0, 0})
'
'Label2 'Label2
' '
Me.Label2.AutoSize = True Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(258, 17) Me.Label2.Location = New System.Drawing.Point(93, 17)
Me.Label2.Name = "Label2" Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(83, 13) Me.Label2.Size = New System.Drawing.Size(59, 13)
Me.Label2.TabIndex = 4 Me.Label2.TabIndex = 4
Me.Label2.Text = "Drag delay (ms):" Me.Label2.Text = "Listen port:"
'
'DragInput
'
Me.DragInput.Increment = New Decimal(New Integer() {100, 0, 0, 0})
Me.DragInput.Location = New System.Drawing.Point(347, 14)
Me.DragInput.Maximum = New Decimal(New Integer() {2000, 0, 0, 0})
Me.DragInput.Minimum = New Decimal(New Integer() {100, 0, 0, 0})
Me.DragInput.Name = "DragInput"
Me.DragInput.Size = New System.Drawing.Size(57, 20)
Me.DragInput.TabIndex = 5
Me.DragInput.Value = New Decimal(New Integer() {300, 0, 0, 0})
' '
'main 'main
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(555, 147) Me.ClientSize = New System.Drawing.Size(555, 147)
Me.Controls.Add(Me.DragInput) Me.Controls.Add(Me.PortInput)
Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.TapInput) Me.Controls.Add(Me.TapInput)
Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.LogText) Me.Controls.Add(Me.LogText)
Me.Controls.Add(Me.StartButton) Me.Controls.Add(Me.StartButton)
Me.Name = "main" Me.Name = "main"
Me.Text = "Form1" Me.Text = "Webcrab server"
CType(Me.TapInput, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.TapInput, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DragInput, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.PortInput, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout() Me.PerformLayout()
@ -116,7 +116,7 @@ Partial Class main
Friend WithEvents LogText As System.Windows.Forms.TextBox Friend WithEvents LogText As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents TapInput As System.Windows.Forms.NumericUpDown Friend WithEvents TapInput As System.Windows.Forms.NumericUpDown
Friend WithEvents PortInput As System.Windows.Forms.NumericUpDown
Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents DragInput As System.Windows.Forms.NumericUpDown
End Class End Class

View File

@ -1,5 +1,6 @@
Imports System.Threading Imports System.Threading
Imports System.Net Imports System.Net
Imports System.Web
Public Class main Public Class main
Dim weblistener As HttpListener Dim weblistener As HttpListener
Dim lastpos As New Point(0, 0) Dim lastpos As New Point(0, 0)
@ -11,11 +12,15 @@ Public Class main
weblistener.Abort() weblistener.Abort()
weblistener = Nothing weblistener = Nothing
log("Stopped") log("Stopped")
My.Settings("listenport") = CUShort(PortInput.Value)
My.Settings.Save()
StartButton.BackColor = Color.Lime StartButton.BackColor = Color.Lime
StartButton.Text = "Start" StartButton.Text = "Start"
Else Else
Dim listenport As UShort = My.Settings("listenport")
PortInput.Value = listenport
weblistener = New HttpListener weblistener = New HttpListener
weblistener.Prefixes.Add("http://*:8080/") weblistener.Prefixes.Add("http://*:" & listenport & "/")
weblistener.Start() weblistener.Start()
Dim listenthread As New Thread(AddressOf listenforconnection) Dim listenthread As New Thread(AddressOf listenforconnection)
listenthread.Start() listenthread.Start()
@ -47,7 +52,7 @@ Public Class main
' check for valid command packets ' check for valid command packets
If path = "/" Then If path = "/" Then
respstr = FileIO.FileSystem.ReadAllText("page.html") respstr = FileIO.FileSystem.ReadAllText("res/page.html")
lastpacket = 0 lastpacket = 0
Else Else
Dim pack As Long = context.Request.QueryString("seq") Dim pack As Long = context.Request.QueryString("seq")
@ -162,7 +167,24 @@ Public Class main
keybd_press(VK.MEDIA_NEXT_TRACK) keybd_press(VK.MEDIA_NEXT_TRACK)
End Select End Select
Case "key"
Select Case req.QueryString("k")
Case "del"
keybd_press(VK.DELETE)
Case "bksp"
keybd_press(VK.KEY_BACK)
Case "enter"
keybd_press(VK.RETURN_KEY)
End Select
Case "text" Case "text"
Dim encodedtext As String = req.QueryString("t")
Dim decodedtext As String = Uri.UnescapeDataString(encodedtext)
Try
SendKeysEscaped(decodedtext)
Catch ex As Exception
log(ex.ToString)
End Try
Case Else Case Else
Return "bad" Return "bad"

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>webmouse client</title> <title>webcrab client</title>
<style> <style>
body { body {
width: 100%; width: 100%;
@ -147,7 +147,7 @@ function handleCancel(evt) {
function handlekeypress(evt) { function handlekeypress(evt) {
evt.preventDefault(); evt.preventDefault();
sendmessage("text", evt.target.value, 0) sendmessage("text", "t=" + encodeURIComponent(evt.target.value));
evt.target.value = ""; evt.target.value = "";
} }