2013-10-02 71 views
0

我爲LeapMotion設備編寫了非接觸式鼠標(請參閱Code) 問題是隻有當winform位於頂部並具有焦點時,鼠標偵聽器才處於活動狀態。如果失去焦點,程序將無法控制光標。我試圖將「始終ontop」或「最上面」的屬性設置爲「true」。始終存在窗口

public Form1() 
{ 
    InitializeComponent(); 
    this.ShowInTaskbar = false; 
    this.Opacity = 0; 
    this.TopMost = true; 
} 

但是,這並沒有改變這個事實,即當窗口失去焦點時,停止控制光標。我怎樣才能實現這個窗口或程序是活動的,即使它沒有焦點也能移動光標?

回答

1

默認情況下,LeapMotion服務停止向非前臺應用程序發送幀。這是爲了防止用戶在與其他應用程序進行交互時對應用程序進行無意的輸入。

要覆蓋此,您可以設置策略標記,以使背景框:

controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES);

設置此項(並且用戶未在其Leap Motion控制面板中禁用後臺應用程序),您的應用程序將在後臺處於後臺並且當前前臺應用程序未啓用Leap的情況下接收後臺幀。

1

首先,您需要將以下策略標誌傳遞給控制器​​。它允許控制器即使在應用程序處於後臺時也能接收幀。

var controller = new Controller(); 
controller.SetPolicyFlags(Controller.PolicyFlag.POLICYBACKGROUNDFRAMES); 

注意的是,根據SDK,你只請求這個政策的變化可能不會立竿見影。您可以詳細瞭解它here

最後,需要勾選Leap Motion控制面板中的'允許背景應用程序'複選框。

相關問題