2013-08-01 58 views
0

我需要爲wpf窗口添加掛鉤,以便爲我的應用程序創建鍵盤快捷鍵。 我試圖使用激活的事件激活時從Application類獲取窗口指針。只有一個窗口時,它工作得很好。 我們允許按F11打開另一個窗口。該窗口以全屏模式打開,只能按F11或ESC才能關閉。看起來我無法得到這個新窗口的正確指針,因爲所有鍵盤快捷鍵都不起作用,除了F11出於某種原因。 代碼獲取指針:掛鉤到多個wpf窗口的問題

var windows = System. 
Windows.Application. Current.Windows; 
If (windows.Count < 1) 
{ 
    return false; 
} 

else if (windows. Count ==1) 
{ 
    winPointer = new WindowInteropHelper(windows[0]); 
    return true; 
} 

else 
{ 
    for (int I = 0; I < windows. Count; I++) 
    { 
     if (windows [I].IsActive) 
     winPointer =new WindowInteropHelper(windows[i]); 
     . 
     . 
     . 

回答

0

我不知道如果我失去了一些東西,但如果你打開一個新的窗口,你爲什麼不能捕獲鍵不放該窗口和處理它那樣?

public partial class NewFullScreenWindow : Window 
    { 
     public NewFullScreenWindow() 
     { 
      InitializeComponent(); 
      KeyDown += HandleKeyDown; 
     } 

     private void HandleKeyDown(object sender, KeyEventArgs e) 
     { 
      if (e.Key == Key.Escape || e.Key == Key.F11) 
      { 
       Close(); 
      } 
     } 
    } 
+0

我通過掛鉤到窗口來獲得另一個類的鍵盤事件。所有的快捷方式對於所有的窗口都是通用的,所以我不直接使用窗口事件和函數 – user2311652

+0

你在其他類中是使用SetWindowsHookEx還是使用PInvoke或其他東西? – owen79

+0

我正在使用HwndSource.AddHook函數 – user2311652