using System.Windows.Forms

Here is the problem code, I took out everything but the parts I’m having issues with. Note that my dll is stored in the plugins folder.

using UnityEngine;
using System.Collections;
using System.Windows.Forms;

	private void MoveCursor()
	{
	   // Set the Current cursor, move the cursor's Position,
	   // and set its clipping rectangle to the form. 

	   this.System.Windows.Forms.Cursor = new System.Windows.Forms.Cursor(System.Windows.Forms.Cursor.Current.Handle);
	   Position = new Point(System.Windows.Forms.Cursor.Position.X - 50, System.Windows.Forms.Cursor.Position.Y - 50);
	   System.Windows.Forms.Cursor.Clip = new Rectangle(this.Location, this.Size);
	}

The MoveCursor() function was copied directly from Cursor.Position Property.

The issue is that when I go to compile this script, I get the following error.

Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Windows.Forms.Cursor' from assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

  at (wrapper managed-to-native) System.MonoType:GetMethodsByName (string,System.Reflection.BindingFlags,bool,System.Type)

  at System.MonoType.GetMethods (BindingFlags bindingAttr) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.MemberCache.AddMethods (BindingFlags bf, System.Type type) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.MemberCache.AddMethods (System.Type type) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.MemberCache..ctor (IMemberContainer container) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeHandle..ctor (System.Type type) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeHandle.GetTypeHandle (System.Type t) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeHandle.GetMemberCache (System.Type t) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeManager.MemberLookup_FindMembers (System.Type t, MemberTypes mt, BindingFlags bf, System.String name, System.Boolean& used_cache) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeManager.RealMemberLookup (System.Type invocation_type, System.Type qualifier_type, System.Type queried_type, MemberTypes mt, BindingFlags original_bf, System.String name, IList almost_match) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.TypeManager.MemberLookup (System.Type invocation_type, System.Type qualifier_type, System.Type queried_type, MemberTypes mt, BindingFlags original_bf, System.String name, IList almost_match) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.MemberLookup (Mono.CSharp.CompilerContext ctx, System.Type container_type, System.Type qualifier_type, System.Type queried_type, System.String name, MemberTypes mt, BindingFlags bf, Location loc) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.MemberLookupFinal (Mono.CSharp.ResolveContext ec, System.Type qualifier_type, System.Type queried_type, System.String name, MemberTypes mt, BindingFlags bf, Location loc) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.New.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Assign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.SimpleAssign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.ExpressionStatement.ResolveStatement (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.StatementExpression.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.Block.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0 

  at Mono.CSharp.ToplevelBlock.Resolve (Mono.CSharp.FlowBranching parent, Mono.CSharp.BlockContext rc, Mono.CSharp.ParametersCompiled ip, IMethodData md) [0x00000] in <filename unknown>:0

I am extremely new to C#, but I have worked with many other languages so know my basics, just not much oop. Any help is appreciated. Also, I am using this so I can set the mouse position (as in, setting it back to its original position after someone lets off the right click to create the illusion that it was frozen in place, unless there is a better way to do this).

Copy the ‘System.Windows.Forms.dll’ to your “Assets/Plugins/” folder. However, it only worked for me when I got the DLL version from: “C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0”. Apparently, there are different versions of this DLL spread throughout the system.

Also, make sure you go to “Edit → Project Settings → Player” in Unity, go to “Other Settings” and on the “API Compatibility Level” select “.Net 2.0” instead of “.Net 2.0 Subset”.

I would be very surprised if using anything from System.Windows.Forms would work well in Unity.

I would spend my efforts implementing a software cursor, rather than using the system cursor…

http://wiki.unity3d.com/index.php?title=Custom_2D_Pointer

You can draw it whereever you want to that way. Might need to move it using relative movement rather than the specific position reported by Input.mousePosition.

If this is indeed a Unity project then you cannot use System.Windows.Forms!