NET codice di “ascoltare” per un'applicazione di Office (ottenere gli eventi sollevata dall'utente)

StackOverflow https://stackoverflow.com/questions/892187

Domanda

Sono sul punto di rifare una domanda di e-learning. Ma ora voglio prendere questa nuova versione ad un nuovo livello.

Quindi questo lo scenario: un utente apre la mia app. Lui / lei poi sceglie di essere addestrati in una delle più comuni applicazioni di MS Office (Word, Excel, Outlook, ecc).

La mia app vi darà le istruzioni per l'uso su cosa fare: creare un nuovo documento, digitare del testo, trasformarlo in grassetto, inserire una foto, etc. Se fatto correttamente l'utente sarà assegnato punti. In caso contrario, demeriti.

Ma (c'è sempre un ma) per me per raggiungere questo devo essere in grado di "vedere" ciò che l'utente sta facendo. Sto usando NET (2,0 - C # o VB, non importa quale). Qualcuno può dire come fare questo? Ho bisogno di ottenere un handle per l'applicazione di Office aperto o iniziarne uno nuovo e poi devo ascoltare e valutare tutto l'utente does.If l'utente lo fa male Ho anche bisogno di inviare le istruzioni per l'applicazione di Office e farlo per lui / lei.

È possibile? C'è qualcuno che ha alcuni campioni di codice su come fare questo o qualcosa di simile?

Grazie in anticipo

PS: Ho davvero non vorrebbe avere un ufficio add on per raggiungere questo obiettivo

A cura: Il motivo per cui non voglio entrare in VBA è che ho voluto fare in modo che questo era riutilizzabile per assistere gli utenti ad utilizzare altre applicazioni a valle della strada. Così ho voluto in qualche modo per creare un ascoltatore a un'applicazione e decodificare l'interazione dell'utente con esso.

È stato utile?

Soluzione

Non è in realtà un gancio di Windows progettato per applicazioni computer based training chiamato WH_CBT e fornisce notifiche quando le finestre sono attivati, ridotti al minimo, spostati, ridimensionati, i comandi vengono eseguiti, gli eventi del mouse / tastiera, ecc.

Non voglio mentire a voi, però, di aggancio è un argomento abbastanza complesso, ma è certamente accessibile da .NET. Date un'occhiata al seguente articolo di MSDN che spiega come utilizzare messaggio aggancio in .NET e quindi avere uno sguardo ai due link che seguono per ulteriori informazioni su WH_CBT.

Cutting Edge: di Windows Ganci in .NET Framework

MSDN Library: SetWindowsHookEx Funzione

MSDN Library: CBTProc Funzione

Altri suggerimenti

L'API di automazione per Office è un'API COM. Si può chiamare dal codice gestito (.NET), ma che aggiunge un ulteriore livello e rende le cose molto più complesso. Ho fatto un grande lavoro di automazione di Office utilizzando sia VB / VBA e C # e mentre mi piace C # come linguaggio, devo dire che è molto più difficile da guidare Ufficio in quel modo. molto . (E 'facile farlo funzionare sulla vostra macchina, almeno una volta - ma non lasciatevi ingannare).

L'API non consentono di intercettare alcuni eventi, come le selezioni di menu, pulsanti della barra dei comandi, l'attivazione della finestra, apertura / chiusura, ecc Si può anche intrappolare la "selezione cambiato" evento che si potrebbe teoricamente utilizzare per capire ciò che l'utente sta facendo. Ma, ci sono un sacco di compiti di manipolazione diretta che un utente può eseguire che non sarebbe in grado di intrappolare (ad esempio, il drag-and-drop, ridimensionare una foto, etc.) e per i vostri scopi direi che sarebbe essere un grosso problema.

Mi piacerebbe dire che sono molto dubbio si sarebbe in grado di fare quello che proponete - almeno, non abbastanza bene per farlo senza soluzione di continuità. E vorrei pensare che deve essere abbastanza a prova di bomba dato la base di utenti.

Siamo spiacenti. : - (

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top