<feed xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US">
    <title>Erwin van de Beek</title>
    <link rel="self" type="application/xml" href="http://geekswithblogs.net/Erwin3Punt0/Atom.aspx" />
    <subtitle type="html"> </subtitle>
    <id>http://geekswithblogs.net/Erwin3Punt0/Default.aspx</id>
    <author>
        <name>Erwin3Punt0</name>
        <uri>http://geekswithblogs.net/Erwin3Punt0/Default.aspx</uri>
    </author>
    <generator uri="http://subtextproject.com" version="Subtext Version 0.0.0.0">Subtext</generator>
    <updated>2011-12-05T05:58:26Z</updated>
    <entry>
        <title>Natural Mouse Movement c#</title>
        <link rel="self" type="text/html" href="http://geekswithblogs.net/Erwin3Punt0/archive/2011/12/05/natural-mouse-movement-c.aspx" />
        <id>http://geekswithblogs.net/Erwin3Punt0/archive/2011/12/05/natural-mouse-movement-c.aspx</id>
        <published>2011-12-05T05:58:26-05:00:00</published>
        <updated>2011-12-05T05:58:26Z</updated>
        <content type="html">&lt;p&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt; &lt;h2&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/h2&gt; &lt;h2&gt;&lt;font size="3" face="Calibri"&gt;Note &lt;/font&gt;&lt;/h2&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;No poker players where harmed during the making of my poker bot. &lt;/font&gt;&lt;/p&gt; &lt;h2&gt;&lt;font face="Calibri"&gt;Origin and idea&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;One of my pet projects was a poker bot. This poker bot worked on Pokerstars. It was able to play poker without human intervention. Unfortunately it lost most of the time. The mouse movement was a issue with this bot. To avoid detection i wanted the mouse to move as humanly as possible. So no straight line and at normal speed. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;After searching on Google and grabing some ideas i have made some code to round the gathered information. The base idea is to record your own movement and use this to get from any point a to any point b.&lt;/font&gt;&lt;/p&gt; &lt;h1&gt;&lt;font face="Calibri"&gt;Now the source part&lt;/font&gt;&lt;/h1&gt; &lt;h2&gt;&lt;font face="Calibri"&gt;Pinvoke Methods&lt;/font&gt;&lt;/h2&gt; &lt;p&gt;&lt;font size="3" face="Calibri"&gt;To determine the mouse position, set the mouse position and trigger the click event you need some pinvoke methods.&lt;/font&gt;&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//Triggers mouse click event&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;[DllImport(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="str"&gt;"user32.dll"&lt;/span&gt;, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    CharSet = CharSet.Auto, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    CallingConvention = CallingConvention.StdCall)]&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; mouse_event(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;uint&lt;/span&gt; dwFlags, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;uint&lt;/span&gt; dx, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;uint&lt;/span&gt; dy, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;uint&lt;/span&gt; cButtons, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;uint&lt;/span&gt; dwExtraInfo);&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//Get current mouse position&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;[DllImport(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="str"&gt;"user32.dll"&lt;/span&gt;, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    EntryPoint = &lt;span class="str"&gt;"GetCursorPos"&lt;/span&gt;)]&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; GetCursorPosition(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;out&lt;/span&gt; System.Drawing.Point lpPoint);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//Set current mouse position&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;[DllImport(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="str"&gt;"user32.dll"&lt;/span&gt;, &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    EntryPoint = &lt;span class="str"&gt;"SetCursorPos"&lt;/span&gt;)]&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;extern&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Int32 SetCursorPosition(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Int32 x, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    Int32 y);&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;h2&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/h2&gt;
&lt;h2&gt;&lt;font face="Calibri"&gt;Data Container&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font face="Calibri"&gt;We also need a data container to store al recorded mouse movements. This recording is later used als template.&lt;/font&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//Data container to store recorded mouse movements&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//This data is a template for the actual mouse move&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MouseMovement&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Propertie(s)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Point Point { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Int32 ElapsedMilliseconds { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Double R { set; get; }&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Double PHI { set; get; }&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="preproc"&gt;#region&lt;/span&gt; Constructor(s)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; MouseMovement(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        Point point, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        Int32 elapsedMilliseconds)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.ElapsedMilliseconds = elapsedMilliseconds;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        &lt;span class="kwrd"&gt;this&lt;/span&gt;.Point = point;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/h2&gt;
&lt;h2&gt;&lt;font face="Calibri"&gt;The actual recording&lt;/font&gt;&lt;/h2&gt;
&lt;p&gt;&lt;font face="Calibri"&gt;The actual recording is needed to create a template. This template is used move the mouse as humanly possible from any poin a to any point b.&lt;/font&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//The actual recording of the template&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="rem"&gt;&lt;font face="Calibri"&gt;//After recoding the polar coordinates wil be set&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;MouseMovement&amp;gt; Record(Int64 forMilliseconds)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    List&amp;lt;MouseMovement&amp;gt; recording = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;MouseMovement&amp;gt;();&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Stopwatch sw = &lt;span class="kwrd"&gt;new&lt;/span&gt; Stopwatch();&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    sw.Start();&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    Point currentPosition;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;while&lt;/span&gt; ((sw.Elapsed.Milliseconds + (sw.Elapsed.Seconds * 1000)) &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        &amp;lt;= forMilliseconds)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        GetCursorPosition(&lt;span class="kwrd"&gt;out&lt;/span&gt; currentPosition);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        recording.Add(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; MouseMovement(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;                    currentPosition.X, &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;                    currentPosition.Y), &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;                sw.ElapsedMilliseconds));&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    MouseMovement.SetPolarCoordinates(recording);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; recording;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[














.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;h3&gt;&lt;font size="3" face="Calibri"&gt;Polar Coordinates&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font face="Calibri"&gt;Convert mouse movement to polar coordinates.&lt;/font&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetPolarCoordinates()&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.Count == 0)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    MouseMovement baseMouseMovement = &lt;span class="kwrd"&gt;this&lt;/span&gt;.First();&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    MouseMovement lastMouseMovement = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Last();&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (MouseMovement mouseMovement &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        Double current_r = Kart2Polar_R&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            (mouseMovement.Point.X - baseMouseMovement.Point.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;            (mouseMovement.Point.Y - baseMouseMovement.Point.Y)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        );&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        Double current_phi = Kart2Polar_Phi&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            (mouseMovement.Point.X - baseMouseMovement.Point.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;            (mouseMovement.Point.Y - baseMouseMovement.Point.Y),&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            current_r&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        );&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        mouseMovement.PHI = current_phi;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        mouseMovement.R = current_r;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Double target_r = Kart2Polar_R&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    (&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (lastMouseMovement.Point.X - baseMouseMovement.Point.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        (lastMouseMovement.Point.Y - baseMouseMovement.Point.Y)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    );&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Double target_phi = Kart2Polar_Phi&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    (&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (lastMouseMovement.Point.X - baseMouseMovement.Point.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        (lastMouseMovement.Point.Y - baseMouseMovement.Point.Y),&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        target_r&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    );&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (MouseMovement mouseMovement &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        mouseMovement.PHI = (mouseMovement.PHI - target_phi);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        mouseMovement.R = (mouseMovement.R / target_r);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; Double Polar2Kart_X(Double r, Double phi)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; (r * Math.Cos(phi));&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; Double Polar2Kart_Y(Double r, Double phi)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; (r * Math.Sin(phi));&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; Double Kart2Polar_R(Int32 x, Int32 y)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; Math.Sqrt((x * x) + (y * y));&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; Double Kart2Polar_Phi(Int32 x, Int32 y, Double r)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    Double phi;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (y &amp;lt; 0)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        phi = -1 * Math.Acos(x / r);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        phi = Math.Acos(x / r);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; phi;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[











.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;h3&gt;&lt;font size="3" face="Calibri"&gt;Move based on recorded template&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font face="Calibri"&gt;For the best and natural result you should record multiple templates. I serialize the object and randomly pick a template.&lt;/font&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Move(Point toPoint)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;{&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    Point basePoint;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    GetCursorPosition(&lt;span class="kwrd"&gt;out&lt;/span&gt; basePoint);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Double target_r = Recording.Kart2Polar_R&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    (&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (toPoint.X - basePoint.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        (toPoint.Y - basePoint.Y)&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    );&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Double target_phi = Recording.Kart2Polar_Phi&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    (&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        (toPoint.X - basePoint.X),&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        (toPoint.Y - basePoint.Y),&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        target_r&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    );&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;             &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    Int32 x = 0;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    Int32 y = 0;&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (MouseMovement mouseMovement &lt;span class="kwrd"&gt;in&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;    {&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        x = (Int32)Math.Round(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            Polar2Kart_X((mouseMovement.R * target_r), &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;            (mouseMovement.PHI + target_phi)) + basePoint.X);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        y = (Int32)Math.Round(Polar2Kart_Y(&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            (mouseMovement.R * target_r), &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;            (mouseMovement.PHI + target_phi)) + basePoint.Y);&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;.IndexOf(mouseMovement) &amp;gt; 0)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;            Thread.Sleep(&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;                mouseMovement.ElapsedMilliseconds - &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;[(&lt;span class="kwrd"&gt;this&lt;/span&gt;.IndexOf(mouseMovement) - 1)].ElapsedMilliseconds);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;        SetCursorPosition(x, y);&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;    }&lt;/font&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;font face="Calibri"&gt;}&lt;/font&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[











.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;h2&gt;&lt;font size="4" face="Calibri"&gt;!! Have fun and use it wisely !!&lt;/font&gt;&lt;/h2&gt;&lt;img src="http://geekswithblogs.net/Erwin3Punt0/aggbug/147940.aspx" width="1" height="1" /&gt;</content>
        <wfw:comment>http://geekswithblogs.net/Erwin3Punt0/comments/147940.aspx</wfw:comment>
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://geekswithblogs.net/Erwin3Punt0/comments/commentRss/147940.aspx</wfw:commentRss>
        <trackback:ping>http://geekswithblogs.net/Erwin3Punt0/services/trackbacks/147940.aspx</trackback:ping>
    </entry>
</feed>