Sonntag, 10. Januar 2010

SetData Methode mit RegisterClipboardFormat

Betreff SetData-Methode mit RegisterClipboardFormat
Von "Donald Lessau"
Datum 23.10.2009 10:41:18

Hallo,

ich dragge Dateien von VB. Wenn ich die Dateien so zum DataObject hinzufüge,
dann klappt das auch...

Data.SetData , vbCFFiles
For i = 0 To UBound(sFile)
Data.Files.Add sFile(i)
Next

... aber das DataObject enthält dann nur CF_HDROP, während gewisse andere
Dinge fehlen, die dort zu finden sind wenn man zB vom Explorer aus draggt,
u.a. "FileName", "FileNameW", und "Shell IDList Array" (lässt sich mit
ClipSpy sehen).

Nun steht in der Hilfe unter SetData:
>>
Die Methoden GetData und SetData können andere als die unter
Einstellungen aufgeführten Datenformate verwenden, wie u.a.
benutzerdefinierte Formate, die in Windows über die API-Funktion
RegisterClipboardFormat() registriert sind. Hier gibt es jedoch einige
Einschränkungen:

Für die SetData-Methode müssen die Daten in einem Byte-Datenfeld
vorliegen, wenn das angegebene Datenformat nicht erkannt wird.
<<

Das habe ich versucht -- klappt aber nicht. :(

Private bFileName() As Byte
Private CF_FileName As Integer
Private Declare Function RegisterClipboardFormat Lib "user32" Alias _
"RegisterClipboardFormatA" (ByVal lpString As String) As Long
...

' in _OLEStartDrag
' 0xC006
If CF_FileName = 0 Then
CF_FileName = RegisterClipboardFormat("FileName") And &H7FFF& Or &H8000
End If
Data.SetData , CF_FileName

' in _OLESetData
bFileName = StrConv(sFile(0) & vbNullChar, vbFromUnicode)
Data.SetData bFileName, CF_FileName

Das Format "FileName" ist nun zwar in ClipSpy aufgeführt, aber die Daten
sind "unavailable". Was mache ich da falsch?

TIA,
Donald

Betreff Re: SetData-Methode mit RegisterClipboardFormat
Von "Donald Lessau"
Datum 09.11.2009 22:21:23

"Donald Lessau" schrieb im Newsbeitrag
news:%23O1WRx7UKHA.1232@TK2MSFTNGP05.phx.gbl...
> ...
> Das Format "FileName" ist nun zwar in ClipSpy aufgeführt, aber die Daten
> sind "unavailable". Was mache ich da falsch?
>

Nix! Ist ein ClipSpy bug.

Donald himself

Betreff Re: SetData-Methode mit RegisterClipboardFormat
Von "Thorsten Albers"
Datum 10.11.2009 13:44:58

Donald Lessau schrieb im Beitrag
<#tRH$JYYKHA.3696@TK2MSFTNGP02.phx.gbl>...
> Nix! Ist ein ClipSpy bug.

Ja, ja, die Geheimdienste sind auch nicht mehr das, was sie 'mal waren...

--
Thorsten Albers

albers (a) uni-freiburg.de

Betreff Re: SetData-Methode mit RegisterClipboardFormat
Von "Harald M. Genauck"
Datum 10.11.2009 14:42:03

Hallo Thorsten,

> Donald Lessau schrieb
>> Nix! Ist ein ClipSpy bug.

> Ja, ja, die Geheimdienste sind auch nicht mehr das, was sie 'mal
> waren...

Na, auch "Geheim"-Dienste sollten schließlich mittlerweile up-to-date
sein und nicht mehr direkt mit UI-Bereichen (Clipboard - sic!)
interagieren ...
;-)


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)


Betreff Re: SetData-Methode mit RegisterClipboardFormat
Von "Thorsten Albers"
Datum 10.11.2009 17:40:18

Harald M. Genauck schrieb im Beitrag
...
> Na, auch "Geheim"-Dienste sollten schließlich mittlerweile up-to-date
> sein und nicht mehr direkt mit UI-Bereichen (Clipboard - sic!)
> interagieren ...

Ne, ne, ne: Ein Geheimdienst benötigt Informationen aus 1. Hand und nicht
aus der xten Schicht von Zwischenebenen. Nur mit den UI-Bereichen ist er
wirklich am User dran.

Aber gerade fällt mir ein: Ist ja wohl logisch, daß etwas, was 'Spy' heißt,
auch einen 'Bug' (= 'Wanze') einsetzen muß, nicht?!

--
Thorsten Albers

albers (a) uni-freiburg.de

Betreff Re: SetData-Methode mit RegisterClipboardFormat
Von "Harald M. Genauck"
Datum 11.11.2009 01:18:20

"Thorsten Albers" schrieb im
Newsbeitrag news:01ca6224$7bf63c40$ab01a8c0@thalk8s8x...
> Harald M. Genauck schrieb im Beitrag
> ...
>> Na, auch "Geheim"-Dienste sollten schließlich mittlerweile
>> up-to-date
>> sein und nicht mehr direkt mit UI-Bereichen (Clipboard - sic!)
>> interagieren ...
>
> Ne, ne, ne: Ein Geheimdienst benötigt Informationen aus 1. Hand und
> nicht
> aus der xten Schicht von Zwischenebenen. Nur mit den UI-Bereichen
> ist er
> wirklich am User dran.
>
> Aber gerade fällt mir ein: Ist ja wohl logisch, daß etwas, was 'Spy'
> heißt,
> auch einen 'Bug' (= 'Wanze') einsetzen muß, nicht?!

Aber ja doch - geworfene Ausnahmen bestätigen schließlich die Regel.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)


Keine Kommentare:

Kommentar veröffentlichen