Get Adobe Flash playerPlugin by wpburn.com wordpress themes

Posts Tagged “clipboard”

      Comment mettre des données dans le presse-papiers à partir d’un programme en console sous GNU/Linux ? Voici le problème que j’ai rencontré il y a peu de temps alors que je développais une application sans interface graphique en C. M’attendant à une solution triviale étant donné la simplicité du besoin, j’ai été surpris de ne pas trouver de réponse sur Google, malgré des recherches plutôt poussées.

      En effet, sous Windows par exemple, le snippet suivant suffit à placer une chaîne de caractères dans le presse-papiers :

  1.  
  2. char str[] = "chaine à copier";
  3.  
  4. HGLOBAL hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, sizeof(str));
  5. char *pText = (char *)GlobalLock(hText);
  6. strcpy(pText, str);
  7. GlobalUnlock(hText);
  8.  
  9. OpenClipboard(NULL);
  10. EmptyClipboard();
  11. SetClipboardData(CF_TEXT, hText);
  12. CloseClipboard();
  13.  
  14. GlobalFree(hText);
  15.  

Sous GNU/Linux, c’est assez différent et malheureusement plus complexe à mettre en oeuvre. Tout d’abord, il est nécessaire de connaître les points suivants :

  • En plus du presse-papiers, est accessible sous GNU/Linux un tampon de sélection primaire (accessible avec le bouton du milieu de la souris), ainsi qu’un tampon de sélection secondaire (généralement non-modifiable directement par l’utilisateur).
  • C’est le serveur X qui gère les mécanismes liés à ces tampons.
  • Le serveur X n’alloue pas un tampon mémoire général accessible à toutes les applications graphiques, mais le contenu des sélections et du presse-papiers sont communiqués entre clients (communication peer-to-peer).

Read the rest of this entry »

Comments 3 Comments »