Newsgroup: it.comp.lang.visual-basic
Titolo: estrarre i dati della clipboard

chiaramente, se i dati della clipboard sono stringhe non ci sono problemi.
Ma se ho appena copiato un file, come posso ricavare il path completo del 
file messo nella clipboard?
E' tutt'oggi che cerco ma non cavo un ragno dal buco.
Grazie!
ciao
Samuele

 file messo nella clipboard?
Sempre testo e' ..  se ho capito ... e se ho capito di piu, la copia di un file
NON passa per la clip
Private Declare Function GetShortPathName Lib "kernel32" _
    Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
    ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
Private Sub Form_Load()
    Dim StrBuffer As String * 1023
    Call GetShortPathName(App.Path & _
        IIf(Right(App.Path, 1) = "\", "", "\"), _
        StrBuffer, 1024)
    Call MsgBox("Short App.Path: """ & _
        TrimNull(StrBuffer) & """")
        Clipboard.SetText TrimNull(StrBuffer)
End Sub
Private Function TrimNull(inString As String) As String
    Dim NullPos As Long
    NullPos = InStr(inString, vbNullChar)
    If (NullPos) Then TrimNull = _
        Left$(inString, NullPos - 1) _
        Else TrimNull = inString
End Function
--
Fosco

provo e ti faccio sapere.
grazie comunque.
samuele


forse sono di coccio io ma non funziona.
Cioč, funziona ma restituisce sempre la cartella dove risiede il progetto di 
vb, non certo il percorso del file caricato in memoria tramite il "copia".
Sbaglio io?
s 

 Ma se ho appena copiato un file,
i powertoys distinguono
- send to clipboard as content
- send to clipboard as name
tu il file, per copiarlo, come lo hai individuato?
ciao, a.



semplicemente ho fatto ctrl-c sul file o col popup menu "copia"
s 

 s
nel visualizzatore appunti
C:\WINDOWS\system32\clipsrv.exe (ho usato sendto as name)
si vede che con clic dx -> copia, in appunti finisce il nome corto del file.
solo, sembra che windows se lo gestisca in modo molto suo.
esempio da msdn:
Private Sub Command1_Click()
   ' Definisce i formati bitmap.
   Dim ClpFmt, Msg   ' Dichiara le variabili.
   On Error Resume Next   ' Imposta la gestione degli errori.
   If Clipboard.GetFormat(vbCFText) Then ClpFmt = ClpFmt + 1
   If Clipboard.GetFormat(vbCFBitmap) Then ClpFmt = ClpFmt + 2
   If Clipboard.GetFormat(vbCFDIB) Then ClpFmt = ClpFmt + 4
   If Clipboard.GetFormat(vbCFRTF) Then ClpFmt = ClpFmt + 8
   Select Case ClpFmt
      Case 1
         Msg = "Gli Appunti contengono solo testo."
      Case 2, 4, 6
         Msg = "Gli Appunti contengono solo una bitmap."
      Case 3, 5, 7
         Msg = "Gli Appunti contengono del testo e una bitmap."
      Case 8, 9
         Msg = "Gli Appunti contengono solo testo RTF."
      Case Else
         Msg = "Gli Appunti non contengono nessun elemento."
   End Select
   MsgBox Msg   ' Visualizza il messaggio.
End Sub
in pratica qualunque cosa copi, te lo dice.
ma se fai copia in explorer,  ->
"Gli Appunti non contengono nessun elemento."
passo. ciao, a.

mah, a me sembra che sta roba non funzioni.
anche se copio un .bmp mi dice che non c'è niente negli appunti...
grazie comunque...
uffa.
s.



Windows usa una "custom" clipboard in questo caso.
Per estrarre info dalla clipboard si devono usare apposite API.
Dai un'occhiata qui, sono tutti esempi completi di codice:
http://www.vbaccelerator.com/home/Vb/Code/Libraries/Clipboard/File_Clipboard_Enhancer/article.asp
http://vb.mvps.org/samples/project.asp?id=ClipFileCopy
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 semplicemente ho fatto ctrl-c sul file o col popup menu "copia"
Fai la prova del 9
compi le due operazioni di qui sopra e dopo apri la clipboard e noterai
che NON c'e' niente ... stai partendo da una cosa che NON c'e'
cambia metodo
--
Fosco

 
http://vb.mvps.org/samples/project.asp?id=ClipFileCopy
http://vb.mvps.org/samples/project.asp?id=ClipFileCopy
questa soluzione funziona.
Grazie 1000.
ciao
s.