violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 2010
-
9 févr. 2007 à 19:46
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 2010
-
12 févr. 2007 à 13:19
Violent Ken
Bonjour, j'ai une petite question : comment puis-je récupérer des strings en provenance du ClipBoard ?
Attention, ce n'est pas du texte simple, c'est du texte contenant n'importe quel caractère ASCII. Autrement dit, l'objet ClipBoard de VB ne fonctionne pas (car string terminée par vbNullChar).
Pour les APIs, j'ai bien essayer de faire le tour....sans succès.
Voici la routine que j'ai tenté pour essayer de trouver un format de ClipBoard supportant les strings avec des vbNullChar.... sans succès. Une idée ? Merci, @+
Option Explicit<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Private Declare Function
OpenClipboard Lib "user32" (ByVal hwnd AsLong) AsLong
Private Declare Function
CloseClipboard Lib "user32" () AsLong
Private Declare Function
GetClipboardData Lib "user32" (ByVal wFormat AsLong) AsLong
Private Declare Function
lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString AsLong) AsLong
Private Declare Sub
CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Long, ByVal ByteLen As Long)
Private Declare Function
IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
Private
Sub Form_Load()
Dim
x AsLong
For x = 0 To 200000
If IsClipboardFormatAvailable(x) Then
MsgBox Len(GetTextD(x)), , x
End
If
Next
x
End
Sub
Private
Function GetTextD(ByVal lFormat AsLong) AsString
Dim hStrPtr AsLong, lLength AsLong, sBuffer AsString
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 févr. 2007 à 13:19
Violent Ken
Oui. Le problème est que le format Text est compréhensible par tous les logiciels de traitement de texte, c'est pour cela que je voulais l'utiliser. Mais effectibement, la "récupération" de la string par le logiciel cible (coller) s'effectue en prenant le buffer jusqu'au premier vbNullChar. Donc la copie dans le ClipBoard de ma string (avec ces &H0) est alors impossible, dans le sens où la récupération de la chaine dans le logiciel cible tronquera la fin (après le premier &H0).
Alors après, j'ai cherché s'il n'existait pas justement un format standart (dans les constantes des APIs du copie/lecture vers/dans le clipboard) pour permettre le "transport" de mes données, mais je n'ai rien trouvé...
Alors certes Winword ne pourra pas exploiter mes &H0 puisqu'il est tout simplement incapable de les afficher. Mais Notepad++, par exemple, est tout à fait en mesure d'afficher ce genre de caractères, c'est pour çà qu'il aurait été intéressant de pouvoir copier vers ce logiciel. Alors après, j'ai codé d'autres types de copie (valeurs hexa, valeurs ASCII formatées et valeurs ASCII affichables) pour permettre de copier sans pb dans le clipboard en vue de les envoyer dans des logiciels comme Word. Pour l'exploitation à l'intérieur même de mon logiciel, pas de problèmes en effet.