mouse recorder help

Status
Niet open voor verdere reacties.

m4dc0w344

Gebruiker
Lid geworden
8 aug 2011
Berichten
377
hallo
ik wil een mouse recorder maken met een click.
zelf heb ik al de record gedeelte maar zonder de click, maar ik weet niet hoe ik het klik gedeelte moet toevoegen.


[CPP]Public Class Form5

Private Sub rec_tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rec_tmr.Tick
Try
ListBox1.Items.Add(Cursor.Position.X)
ListBox2.Items.Add(Cursor.Position.Y)
Catch ex As Exception
End Try
End Sub

Private Sub play_tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles play_tmr.Tick
Try
Dim pos As New Point(ListBox1.Text, ListBox2.Text)
Cursor.Position = pos
ListBox1.SelectedIndex = ListBox1.SelectedIndex + +1
ListBox2.SelectedIndex = ListBox2.SelectedIndex + +1
Catch ex As Exception
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
rec_tmr.Start()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
rec_tmr.Stop()
play_tmr.Stop()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
play_tmr.Start()
ListBox1.SelectedIndex = "0"
ListBox2.SelectedIndex = "0"
End Sub
End Class[/CPP]
 
Zet dit onder "Public Class Form5":
Code:
<System.Runtime.InteropServices.DllImport("user32.dll")> Public Shared Function GetAsyncKeyState(ByVal vKey As Keys) As Short
End Function

Om dan de mousebuttons te checken doe je:
Code:
If GetAsyncKeyState(Keys.LButton) <> 0 Then
ElseIf GetAsyncKeyState(Keys.RButton) <> 0 Then
ElseIf GetAsyncKeyState(Keys.MButton) <> 0 Then
End If

Dit checkt op de linker, rechter en middelste muisknop. De middelmousebutton is het scrollwieltje indrukken.

Hiervia kan je ook alle andere knoppen op een toetsenbord 'recorden'. Dat doe je bijv. zo:
Code:
If GetAsyncKeyState(Keys.A) <> 0 Then


Ik heb dat zelf wel eens gebruikt bij alle knoppen, dus als je die code wil, dan moet je dat even vragen. Dat kan een hoop tijd schelen :p

Succes!:thumb:
 
heej,
heel erg bedankt voor de code maar waar moet ik de 2e code plaatsen ?
 
Bij de code van je timer om te recorden. Let op: je moet dan wel ook erin zetten wat er moet gebeuren als er geklikt wordt.
Ik zou wel aanraden om het in een aparte sub te zetten maar dat hoeft niet.

Succes!:thumb:


Ps: dit is alleen om te recorden, moet je ook nog codes hebben om af te spelen of heb je die al???
 
Laatst bewerkt:
Ik moet je eerlijk zeggen dat ik de code van youtube he , dus dit is voor mij een klein beetje russies.

En ik heb die code om het afte spelen niet(misschien dat ie daarom niet werkte)
 
In je code zie ik een stukje code:
[CPP]Private Sub rec_tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rec_tmr.Tick[/CPP]
Daaruit blijkt dat je een timer hebt om te recorden, dat zie je aan de naam.

Daaronder staat:
[CPP]Try
ListBox1.Items.Add(Cursor.Position.X)
ListBox2.Items.Add(Cursor.Position.Y)
Catch ex As Exception
End Try[/CPP]

Als we het "try...catch" blok weghalen zien we staan dat je ook 2 listboxen hebt waarin je items toevoegt met daarin de coördinaten van de cursor.

Wat je daar ook wil doen, is checken of er geklikt word of niet... Dat doe je dan met de code die ik je gegeven heb:
[CPP]If GetAsyncKeyState(Keys.LButton) <> 0 Then
ElseIf GetAsyncKeyState(Keys.RButton) <> 0 Then
ElseIf GetAsyncKeyState(Keys.MButton) <> 0 Then
End If[/CPP]

Die zet je dan dus in het gedeelte bij de timer, dus dan krijg je:
[CPP]Private Sub rec_tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rec_tmr.Tick
Try
ListBox1.Items.Add(Cursor.Position.X)
ListBox2.Items.Add(Cursor.Position.Y)

If GetAsyncKeyState(Keys.LButton) <> 0 Then
'Hier de code van wat er moet gebeuren bij een klik op de linkermuisknop'
ElseIf GetAsyncKeyState(Keys.RButton) <> 0 Then
'Hier de code van wat er moet gebeuren bij een klik op de rechtermuisknop'
ElseIf GetAsyncKeyState(Keys.MButton) <> 0 Then
'Hier hetzelfde voor de middelmuisknop'
End If

Catch ex As Exception
End Try
End Sub[/CPP]

Dat is dan alleen het gedeelte om op te nemen. Om je muis (codematig) te laten klikken gebruik ik altijd deze code:

Dit onder "Public Class Form5", dus samen met dat eerste stukje code uit mijn eerste post:
[CPP]Public Declare Sub mouse_event Lib "user32" (ByVal dwflags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwextrainfo As Long)
Public Const mouseclickup = 4
Public Const mouseclickdown = 2[/CPP]

Om de muis dan te laten klikken gebruik je deze code:
[CPP]Windows.Forms.Cursor.Current.Position = New System.Drawing.Point(x, y)
mouse_event(mouseclickdown, 0, 0, 0, 0)
mouse_event(mouseclickup, 0, 0, 0, 0)[/CPP]

Ik zag wel dat je al codes hebt om de cursor te verplaatsen, dus dan heb je de eerste lijn van het laatste stukje code niet nodig (als je het wel gebruikt, moet je wel eerst "x" en "y" aanpassen in die regel). Je moet wel eerst bedenken wat je wilt doen bij het recorden als er geklikt word. Daar moet je deze code namelijk op aanpassen...


Succes!:thumb:
 
Laatst bewerkt:
Heel erg bedankt. Oor de code,
Ik zit nu niet achter mijn pc dus bij de eerst code moet ik( waar jij dat is het rood gedaan hebt) moet ik dus listbox1'
* * * * ListBox1.Items.Add(Cursor.Position.X)
* * * * ListBox2.Items.Add(Cursor.Position.Y)
Bij iedere roode tekst bij voegen?

En bij die laatste code , als ik die dan het afspelen zet zou die het dan moeten doen?

En ik snap je laatste stukje tekst over wat er moet gebueren na het kliken niet echt?
 
Wat je nu als eerste moet doen, is bedenken hoe je op gaat slaan of er geklikt is of niet op dat moment. Dat bedoelde ik met het laatste stukje tekst.

Daarop moet je dan de stukjes rood aanpassen.


Wat ik persoonlijk zou doen, is nog een listbox maken en daarin zetten of er geklikt is en met welke muisknop dat dan gedaan is. Maar dat mag je zelf natuurlijk beslissen.
 
En alles werkt goed?
(Vraag.Status <> Opgelost ;))
 
En het doet wat je wil?


*EDIT*

Wat ik eigenlijk in gedachten had met de 3e listbox, was dat als er niet geklikt wordt, er een leeg item toegevoegd wordt en als er wel geklikt wordt, er een item wordt toegevoegd met daarin welke muisknop er gebruikt is.
Dan wordt je code (ongeveer) dit voor het recorden:
[CPP] Private Sub rec_tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rec_tmr.Tick
Try
ListBox1.Items.Add(Cursor.Position.X)
ListBox2.Items.Add(Cursor.Position.Y)

If GetAsyncKeyState(Keys.LButton) <> 0 Then
'Hier de code van wat er moet gebeuren bij een klik op de linkermuisknop'
ListBox3.Items.Add("Leftbutton")
ElseIf GetAsyncKeyState(Keys.RButton) <> 0 Then
'Hier de code van wat er moet gebeuren bij een klik op de rechtermuisknop'
ListBox3.Items.Add("Rightbutton")
ElseIf GetAsyncKeyState(Keys.MButton) <> 0 Then
'Hier hetzelfde voor de middelmuisknop'
ListBox3.Items.Add("Middlebutton")
Else
ListBox3.Items.Add(" ")
End If

Catch ex As Exception
End Try
End Sub[/CPP]

Maar het mag natuurlijk ook gewoon op je eigen manier....




*EDIT2*

Ik heb een voorbeeldprojectje gemaakt:
Als 7-zip: http://msoftware.net16.net/helpmij/Mouse_Recorder.7z
Als RAR: http://msoftware.net16.net/helpmij/Mouse_Recorder.rar

Virustotal van 7-zip: http://www.virustotal.com/url-scan/report.html?id=b27481179fad415ec7c681446aa7824d-1320260424
Virustotal van RAR: http://www.virustotal.com/url-scan/report.html?id=89cd490ddba756c9a4b3b930c1538e4a-1320260828

De inhoud is hetzelfde. Alleen is de 7-zip iets kleiner dus dat up-/download sneller :p

Oh ja, de codes die ik eerder heb gepost heb ik toch nog wat moeten aanpassen maar dat zie je in het voorbeeldproject... Als ik ze toch nog moet posten, zeg dat dan even, dan doe ik dat ook nog.


Succes!:thumb:
 
Laatst bewerkt:
Mijn manier werkte niet omdat ie gelijk ging kliken, ik ga morgen jou voorbeeld probeeren.
U hoort nog nader van mij
 
ik krijg een error
kijk.jpg


p.s heb ik boven aan de screenshot goed de code gedaan voor de toetsten?
 
Krijg je die error iedere keer, of was dat 1 keer? Ik heb hem nog nooit gehad....

Ja, de code voor de toetsen is wel goed zo, alleen weet ik niet of het zo handig is om het in listbox3 te doen.... Ik heb zelf ook wel eens zo'n soort progje gemaakt wat ik wel ff zal toevoegen zodat je kan zien hoe ik het heb gedaan...

Daar zit alleen geen support in voor rechter- en middelmuisknop in.

Als 7-zip:http://msoftware.net16.net/helpmij/Logger.7z
Virustotal:http://www.virustotal.com/url-scan/report.html?id=b00a278cfdd19426c196cb04063ceb1d-1320334684

Als RAR:http://msoftware.net16.net/helpmij/Logger.rar
Virustotal:http://www.virustotal.com/url-scan/report.html?id=a1e3bbd3b0df709780e9ce1cb92d5d57-1320335017


PS: Ik heb die code in mijn project iets anders staan, maar dat komt door de middel- en rechtermuisknop.


Succes!:thumb:
 
Hoi,

Ik weet (nog steeds) niet waarom je die error krijgt, maar misschien heb ik hem niet omdat ik nog 2008 gebruik... Krijg je de error ook als je direct de .exe opstart:
*Opslagplaats*/bin/Debug/*naam*.exe
Hiervoor moet je hem wel eerst builden...

En ik had nog een klein dingetje gevonden:
Als er gelogd wordt dat er op 1 van de listboxen wordt gedrukt, dan verspringt de selectedindex van die listbox ook bij het afspelen. Dan gaat het dus niet meer synchroon.
Wat daartegen te doen is is dit:
Eerst nog een Integer aanmaken (bijv. ItemCheck). Die geef je dan bij het drukken op de knop "Play" (button3) de waarde 0: "ItemCheck = 0".
Dan verander je deze code:
Code:
ListBox1.SelectedIndex = ListBox1.SelectedIndex + +1
ListBox2.SelectedIndex = ListBox2.SelectedIndex + +1
Listbox3.SelectedIndex = Listbox3.SelectedIndex + +1
in deze code:
Code:
ItemCheck = ItemCheck + +1

ListBox1.SelectedIndex = ItemCheck
ListBox2.SelectedIndex = ItemCheck
ListBox3.SelectedIndex = ItemCheck


Succes!:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan