2009-05-10 4 views
2

j'ai trouvé ce code:C# HwndSourceHook avec Windows.Forms

protected override void OnSourceInitialized(EventArgs e) 
    { 
     base.OnSourceInitialized(e); 
     HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource; 

     if (hwndSource != null) 
     { 
      installedHandle = hwndSource.Handle; 
      viewerHandle = SetClipboardViewer(installedHandle); 
      hwndSource.AddHook(new HwndSourceHook(this.hwndSourceHook)); 
     } 
    } 

pour démarrer une hwndSourceHook (pour capturer le presse-papiers). Mais ce code ne fonctionne qu'avec une "fenêtre" mais pas avec un "Windows.Form".

Comment puis-je obtenir le hwndSource de mon formulaire pour ajouter le hwndSourceHook?

(au lieu de la dérogation que je devrais utiliser la fonction Form_Load je pense ...)

EDIT: Merci, mais ne marche pas de forme ont la fonction AddHook ajouter mon hwndSourceHook

Répondre

3

Si vous êtes en utilisant WinForms, alors il est juste myForm.Handle

Le HwndSource est pour WPF.

Vous pouvez juste faire:

viewerHandle = SetClipboardViewer(myForm.Handle); 

Edit: AddHook est également une méthode WPF.

Vous devez utiliser:

Application.AddMessageFilter(...); 

ou, dans votre classe Form substituez la méthode WndProc:

protected override void WndProc(ref Message m) {...} 

AddMessageFilter peut capturer des messages pour une fenêtre dans votre application, alors que WndProc sera seulement recevoir des messages pour la fenêtre donnée.

Questions connexes