C# 在未连接鼠标时以编程方式使鼠标光标可见

C# 在未连接鼠标时以编程方式使鼠标光标可见,c#,wpf,windows,xaml,user-interface,C#,Wpf,Windows,Xaml,User Interface,我正在尝试使用C#构建一个无触点界面。我使用此界面控制其他程序或windows UI元素。为了做到这一点,我主要使用user32.dll来执行鼠标控制操作 当我尝试使用触摸式界面时,当没有鼠标连接到电脑时,我仍然可以移动鼠标光标,但它是不可见的 我知道,通过使用鼠标键选项,可以看到鼠标光标。但是,我更愿意以编程方式在代码中使其可见 是否可以使用.Net使光标可见?这会使您成为可见光标吗 this.Cursor = System.Windows.Forms.Cursors.Hand; 您是在谈论

我正在尝试使用C#构建一个无触点界面。我使用此界面控制其他程序或windows UI元素。为了做到这一点,我主要使用user32.dll来执行鼠标控制操作

当我尝试使用触摸式界面时,当没有鼠标连接到电脑时,我仍然可以移动鼠标光标,但它是不可见的

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

是否可以使用
.Net
使光标可见?

这会使您成为可见光标吗

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

您是在谈论您自己的申请表,还是希望与其他申请进行交互

如果是您自己的,我认为Windows.Forms命名空间下的这种方法会使您停滞不前:

如果不是的话,恐怕你不能,C#不太适合做windows端的东西,当谈到windows shell界面时,最好的途径几乎总是通过user32.dll,如下所示:

我个人不喜欢将一个外来的DLL导入到C#managed系统中,这听起来还不够好,我会选择C/C++来实现,但是如果它太复杂,我想是的,一个好的选择是golang,它有一个更丰富的标准库,比C/C++更容易处理,但是,当然,这取决于你的需要


干杯

您可以使用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);
        }
    }
}
内部静态类WinCursors
{
[DllImport(“user32.dll”)]
私有静态外部显示游标(boolbshow);
内部静态void ShowCursor()
{
while(ShowCursor(true)<0)
{
ShowCursor(true);
}
}
内部静态空洞隐藏器()
{
while(ShowCursor(false)>=0)
{
ShowCursor(假);
}
}
}

当没有鼠标连接到电脑时,我仍然可以移动鼠标光标,但它是不可见的。如何移动光标?如果不可见,您如何知道光标正在移动?当不可见光标经过背景中的图标时,背景中的图标将高亮显示。我通过user32.dll中的鼠标函数移动光标。我在程序中使用一个透明的点击式wpf界面。因此,我主要关心的是与其他程序和/或windows元素交互。我也无法使user32.dll的ShowCursor函数工作。我已经尝试了您的代码,并进行了更正。它确实会使光标消失并重新出现在已连接鼠标的计算机上。但是,ShowCursor方法不会使鼠标光标在没有鼠标连接的计算机上可见。是的,但我不明白,如果没有任何连接的鼠标或任何模拟鼠标/设备,显示鼠标有什么意义?无论如何,您应该能够模拟设备并触发鼠标事件。触摸界面与鼠标界面无关,界面是非触摸的。