2017-10-09 141 views
0

我正在尝试构建a touchless interface using C#。我使用此界面来控制其他程序或Windows UI元素。为了做到这一点,我主要使用user32.dll来执行鼠标控制操作。当没有鼠标连接时,编程式地显示鼠标光标

当我尝试使用the touchless interface,并且没有鼠标连接到电脑时,我仍然可以移动鼠标光标,但它是不可见的。

我知道,通过使用鼠标键选项,可以使鼠标光标可见。但是,我更愿意在代码中以编程方式显示它。

可以使用.Net使光标变为可见吗?

+0

*在没有鼠标连接到PC时,我仍可以移动鼠标光标,但它是无形的。*你怎么能移动光标,你怎么知道,如果看不见它是移动? – CodingYoshi

+0

当不可见光标经过它们时,背景中的图标会突出显示。我通过user32.dll中的鼠标功能移动光标。 –

回答

-2

此(或某些变体)会使您成为可见光标吗?

this.Cursor = System.Windows.Forms.Cursors.Hand; 
-1

你是在谈论你自己的申请表格还是你想与其他应用程序交互?

如果这是你自己的,我认为在Windows.Forms的命名空间会HALP你这种方法: https://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.hide(v=vs.110).aspx

如果不是我怕你不能,C#是不是好做的窗户边的东西,当谈到Windows外壳程序接口的最佳途径几乎都是通过user32.dll中去,喜欢这里: https://msdn.microsoft.com/en-us/library/windows/desktop/ms648396(v=vs.85).aspx

我个人不喜欢导入外来DLL到C#管理系统,它只是听起来并不受用,我会为此去C/C++,但是如果它太复杂了,我认为这样,一个好的选择将是golang,它具有更丰富的标准li b比C/C++更容易处理,但当然,这取决于你的需求。

干杯

+0

我使用透明的,点击我的程序中的wpf接口。所以我主要关心的是与其他程序,或Windows元素进行交互。我无法让user32.dll的ShowCursor函数也能工作。 –

0

您可以使用user32.dll。

internal static class WinCursors 
{ 
    [DllImport("user32.dll")] 
    private static extern int ShowCursor(bool bShow); 


    internal static void ShowCursor() 
    { 
     while (ShowCursor(true) < 0) 
     { 
      ShowCursor(true); 
     } 
    } 

    internal static void HideCursor() 
    { 
     while (ShowCursor(false) >= 0) 
     { 
      ShowCursor(false); 
     } 
    } 
} 
+0

我试过你的代码和更正。它确实使光标消失并重新出现在鼠标已连接到的计算机上。但是,ShowCursor方法不会使鼠标光标在没有连接鼠标的计算机上可见。 –

+0

是的,但我没有得到它,如果你没有任何连接的鼠标或任何模拟的鼠标/设备,它显示鼠标的重点是什么?不知何故,你应该能够模拟设备并激发鼠标事件。触摸界面与鼠标界面无关。 – Ugur

+0

界面非接触式。 –