Page 1 sur 1

Récupérer un variable dans le presse papier

MessagePublié: 25 Avr 2013 à 16:40
par clementbp
Bonjour

J'ai créé un agent en LS qui récupère les valeurs de chaque colonne d'une vue pour le document sélectionné et qui mets tout cela dans une variable.
Je voudrais ensuite copier la valeur de cette variable dans le presse papier pour ensuite pouvoir le copier ou je veux (ex : dans l'agenda)

Pensez vous que cela est faisable ?
Comment peut on copier une variable dans le presse papier?

Merci de votre aide

Re: Récupérer un variable dans le presse papier

MessagePublié: 25 Avr 2013 à 17:06
par Michael DELIQUE
Salut

oui, via une api. je retrouve ça et je te le post

Re: Récupérer un variable dans le presse papier

MessagePublié: 26 Avr 2013 à 13:20
par Michael DELIQUE
tout est dans les 2 fonctions

Code : Tout sélectionner
Public Function ClipboardGetText_API() As String
   %REM
      'Variables API pour la fonction ClipboardSetText_API
      Declare Function CloseClipboard Lib "User32" () As Long
      Declare Function OpenClipboard Lib "User32" (Byval hwnd As Long) As Long
      Declare Function GetClipboardData Lib "User32" (Byval wFormat As Long) As Long
      Declare Function GlobalLock Lib "kernel32" (Byval hMem As Long) As Long
      Declare Function GlobalUnlock Lib "kernel32" (Byval hMem As Long) As Long
      Declare Function lstrcpy Lib "kernel32" (Byval lpString1 As String, Byval lpString2 As Long) As Long
   %END REM
   Dim nbHOpenClipboard As Long
   Dim nbHGetClipboardData As Long
   Dim nbGlobalLock As Long
   Dim nbReturnValue As Long
   
   On Error Goto CatchError
   
   nbHOpenClipboard = OpenClipboard(0&)
   If  nbHOpenClipboard = 0 Then
      Error 9999,"Cannot open Clipboard. Another app. may have it open"
      Exit Function
   End If
   
   nbHGetClipboardData = GetClipboardData(1)
   rem Obtain the handle to the global memory block that is referencing the text.
   
   If Isnull(nbHGetClipboardData) Then
      Error 9999,"Could not allocate memory"
      Exit Function
   End If
   
   nbGlobalLock = GlobalLock(nbHGetClipboardData)
   rem  Lock Clipboard memory so we can reference the actual data string
   
   If Not Isnull(nbGlobalLock) Then
      ClipboardGetText_API  = Space$(256)
      nbReturnValue = lstrcpy(ClipboardGetText_API , nbGlobalLock)
      nbReturnValue = GlobalUnlock(nbHGetClipboardData)
      ClipboardGetText_API  = Mid(ClipboardGetText_API , 1, Instr( 1,ClipboardGetText_API, Chr$(0), 0) - 1) ' Peel off the null terminating character.
   Else
      Error 9999,"Could not lock memory to copy string from."
      Exit Function
   End If
   nbReturnValue = CloseClipboard()
   Exit Function
CatchError:
   MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Error " + CStr(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Line # "+Cstr(Erl),16," ERROR !"
   If nbHOpenClipboard <> 0  Then       
      nbReturnValue = CloseClipboard()
   End If
   ClipboardGetText_API = ""     
   Exit Function
End Function

Public Sub ClipboardSetText_API(Source As String)
   %REM
      'Variables API pour la fonction ClipboardSetText_API
      Declare Function GlobalAlloc Lib "kernel32" (Byval wFlags&, Byval dwBytes As Long) As Long
      Declare Function CloseClipboard Lib "User32" () As Long
      Declare Function SetClipboardData Lib "User32" (Byval wFormat As Long, Byval hMem As Long) As Long
      Declare Function EmptyClipboard Lib "User32" () As Long
      Declare Function OpenClipboard Lib "User32" (Byval hwnd As Long) As Long
      Declare Function GlobalUnlock Lib "kernel32" (Byval hMem As Long) As Long
      Declare Function lstrcpy1 Lib "kernel32" Alias "lstrcpy" (Byval lpString1 As Long, Byval lpString2 As String) As Long
      Declare Function GlobalLock Lib "kernel32" (Byval hMem As Long) As Long
   %END REM 
   Dim nbGlobalAlloc As Long
   Dim nbGlobalLock As Long
   Dim nbReturnValue As Long
   Dim nbOpenClipboard As Long
   Dim nbCloseClipboard As Long
   
   On Error Goto CatchError
   
   nbOpenClipboard = 0
   nbCloseClipboard=0
   nbGlobalAlloc = GlobalAlloc(&H42, Len(Source) + 1)
   rem  Allocate movable global memory.
   nbGlobalLock = GlobalLock(nbGlobalAlloc)
   rem  Lock the block to get a far pointer to this memory.
   nbGlobalLock = lstrcpy1(nbGlobalLock,Source)
   rem  Copy the string to this global memory
   
   If GlobalUnlock(nbGlobalAlloc) <> 0 Then
      rem  Unlock the memory.
      Error 9999,"Could not unlock memory location. Copy aborted."
      Exit Sub
   End If
   
   nbOpenClipboard = OpenClipboard(0&)
   
   If nbOpenClipboard = 0 Then
      rem  Open the Clipboard to copy data to.
      Error 9999,"Could not open the Clipboard. Copy aborted."
      Exit Sub
   End If
   
   nbReturnValue = EmptyClipboard()
   rem  Clear the Clipboard. .
   nbReturnValue = SetClipboardData(1, nbGlobalAlloc)
   rem  Copy the data to the Clipboard
   nbCloseClipboard = CloseClipboard()
   If nbCloseClipboard = 0 Then
      Error 9999,"Could not close Clipboard."
   End If
   Exit Sub
CatchError:
   MsgBox "("+Structure_Log+" : "+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Error " + CStr(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Line # "+Cstr(Erl),16," ERROR !"
   If nbOpenClipboard<>0 Then
      If nbCloseClipboard=0 Then
         nbReturnValue = CloseClipboard()
      End If     
   End If
   Exit Sub 
End Sub