C #, détecter le texte sélectionné sur Windows?

Je ferais une fonction de traduction de la barre d’outils comme Google, mais c’est pour le bureau. Ce que je veux faire, c’est surligner le texte dans n’importe quelle application (Word, PDF, Live Messenger, etc.), et traduire par Google Translate api, revenir comme un outil info

J’ai recherche msdn sur le texte de surveillance, je n’ai trouvé à l’aide de copier / coller et le presse-papiers de surveillance pour cocher l’événement.

alors, une idée à ce sujet? Merci.

Un sharepoint départ serait d’obtenir une référence à la fenêtre de premier plan actuelle. Le code ci-dessous va obtenir la fenêtre actuellement sélectionnée et le titre de cette fenêtre:

[ DllImport("user32.dll") ] static extern int GetForegroundWindow(); [ DllImport("user32.dll") ] static extern int GetWindowText(int hWnd, SsortingngBuilder text, int count); private void GetActiveWindow() { const int nChars = 256; int handle = 0; SsortingngBuilder Buff = new SsortingngBuilder(nChars); handle = GetForegroundWindow(); if ( GetWindowText(handle, Buff, nChars) > 0 ) { this.captionWindowLabel.Text = Buff.ToSsortingng(); this.IDWindowLabel.Text = handle.ToSsortingng(); } } 

Vous pouvez exécuter ce code dans un minuteur, c’est-à-dire donner à l’utilisateur 10 secondes pour sélectionner une fenêtre.

Je ne sais pas comment vous allez récupérer le texte sélectionné dans une fenêtre, mais je vais l’examiner pour vous.

Je pense que vous devrez commencer par connaître le gestionnaire de toutes les fenêtres activées lorsque votre programme est actif. J’imagine que vous devez vous pencher sur InteropServices pour le faire.

Utilisation de l’API Windows.

Il semble que vous ayez besoin que votre code intercepte tout handle de fenêtre d’un processus, c’est là que cela devient un peu complexe, car vous devez vous assurer que vous disposez des permissions nécessaires pour accéder à un autre processus.

En parlant de cela, je ne pense pas que ce soit une bonne idée car vous pourriez vous retrouver avec un autre processus en fouillant sous le capot en ce qui concerne les appels de Winapi pour piéger l’événement de sélection de texte, sans trop mentionner le fait que vous devez déterminer si le processus a du texte sélectionné. La meilleure direction que je puisse donner est la suivante … un article a été rédigé sur la manière d’espionner un processus sur CodeProject . Cela peut être un pas dans la bonne direction, sachant que le code utilisé était celui du framework .NET 1.0. .

J’espère que cela vous aide et bonne chance dans votre codage, Cordialement, Tom.