在VSTO插件中确定用户当前是否在使用Excel 2007

我目前正在Windows 7机器上为Excel 2007写一个VSTO插件。

我已经实现了Windows.Forms.NativeWindow和Window HotKey,以便知道用户何时点击某个组合键。 这一切工作正常,只要按下组合键,它是在winProc中检测到。

我的VSTO得到了一个消息,即组合键被按下了,但现在我需要知道用户是否在使用Excel。 我想我想知道如果Excel是在顶部,或者他们在一个单元格中的Excel中的某处。

我认为应用程序对象的ActiveSheet / ActiveWorkbook或ActiveCell对象将帮助,但他们似乎总是东西,即使我在另一个应用程序中工作,并使用组合键。

看到我在几个VSTO插件中使用这个代码。

Public Class ThisAddIn Private Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Integer Private Sub ThisAddIn_Startup() Handles Me.Startup If GetForegroundWindow() = Application.Hwnd Then MsgBox("on top") End If End Sub Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown End Sub End Class 

因此,您可以使用GetForegroundWindow和Application.Hwnd来获取Excel位于Z顺序顶部的信息。 代码在VB.net中,可以很容易地转换为C#。