2017-10-09 93 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

界面非接觸式。 –