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"?>
<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>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
<userSettings>
<webcrab.My.MySettings>
<setting name="listenport" serializeAs="String">
<value>8080</value>
</setting>
</webcrab.My.MySettings>
</userSettings>
</configuration>

View File

@ -53,6 +53,18 @@ Namespace My
Return defaultInstance
End Get
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 Namespace

View File

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

View File

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

View File

@ -26,10 +26,10 @@ Partial Class main
Me.LogText = New System.Windows.Forms.TextBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.TapInput = New System.Windows.Forms.NumericUpDown()
Me.PortInput = New System.Windows.Forms.NumericUpDown()
Me.Label2 = New System.Windows.Forms.Label()
Me.DragInput = New System.Windows.Forms.NumericUpDown()
CType(Me.TapInput, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DragInput, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PortInput, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'StartButton
@ -59,7 +59,7 @@ Partial Class main
'Label1
'
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.Size = New System.Drawing.Size(96, 13)
Me.Label1.TabIndex = 2
@ -67,47 +67,47 @@ Partial Class main
'
'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.Size = New System.Drawing.Size(57, 20)
Me.TapInput.TabIndex = 3
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
'
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.Size = New System.Drawing.Size(83, 13)
Me.Label2.Size = New System.Drawing.Size(59, 13)
Me.Label2.TabIndex = 4
Me.Label2.Text = "Drag delay (ms):"
'
'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})
Me.Label2.Text = "Listen port:"
'
'main
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
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.TapInput)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.LogText)
Me.Controls.Add(Me.StartButton)
Me.Name = "main"
Me.Text = "Form1"
Me.Text = "Webcrab server"
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.PerformLayout()
@ -116,7 +116,7 @@ Partial Class main
Friend WithEvents LogText As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
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 DragInput As System.Windows.Forms.NumericUpDown
End Class

View File

@ -1,5 +1,6 @@
Imports System.Threading
Imports System.Net
Imports System.Web
Public Class main
Dim weblistener As HttpListener
Dim lastpos As New Point(0, 0)
@ -11,11 +12,15 @@ Public Class main
weblistener.Abort()
weblistener = Nothing
log("Stopped")
My.Settings("listenport") = CUShort(PortInput.Value)
My.Settings.Save()
StartButton.BackColor = Color.Lime
StartButton.Text = "Start"
Else
Dim listenport As UShort = My.Settings("listenport")
PortInput.Value = listenport
weblistener = New HttpListener
weblistener.Prefixes.Add("http://*:8080/")
weblistener.Prefixes.Add("http://*:" & listenport & "/")
weblistener.Start()
Dim listenthread As New Thread(AddressOf listenforconnection)
listenthread.Start()
@ -47,7 +52,7 @@ Public Class main
' check for valid command packets
If path = "/" Then
respstr = FileIO.FileSystem.ReadAllText("page.html")
respstr = FileIO.FileSystem.ReadAllText("res/page.html")
lastpacket = 0
Else
Dim pack As Long = context.Request.QueryString("seq")
@ -162,7 +167,24 @@ Public Class main
keybd_press(VK.MEDIA_NEXT_TRACK)
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"
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
Return "bad"

View File

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