Определите в надстройке VSTO, использует ли пользователь в настоящее время Excel 2007

1

В настоящее время я пишу добавление VSTO для Excel 2007 на компьютере под управлением Windows 7.

Я реализовал Windows.Forms.NativeWindow и Window HotKey, чтобы узнать, когда пользователь нажимает определенную комбинацию клавиш. Все это прекрасно работает, всякий раз, когда нажата комбинация клавиш, она обнаруживается в winProc.

Мой VSTO получает сообщение о том, что комбинация клавиш была нажата, но теперь мне нужно действительно знать, использует ли пользователь "Excel". Полагаю, я хочу знать, находится ли Excel сверху или где-то в Excel в ячейке.

Я думал, что объекты ActiveSheet/ActiveWorkbook или ActiveCell объекта Application помогут, но они кажутся всегда чем-то, даже когда я работаю в другом приложении и использую комбинацию клавиш.

Теги:
excel
vsto

1 ответ

1
Лучший ответ

Этот код используется мной в нескольких дополнениях 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 и может быть легко преобразован в С#.

  • 1
    Спасибо за ответ. Похоже, работает в моем тесте до сих пор. Я делаю это в VB.net, так что это было прекрасно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню