vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Hier die ausführliche Lösung: Preferred DropEffect. 
Autor: RalfPeter
Datum: 05.07.05 13:01

Als Basis sollte sich jeder zuerst den Tipp "Dateiliste in die Zwischenablage
kopieren " ansehen (http://www.vbarchiv.net/xtra/200202.php3)

Anschließend kann durch einen separaten Aufruf der "DropEffect "gesetzt werden:

Für die, die mit dem "DropEffect" nichts anfangen können: Der "DropEffect "
(Eigentlich "Preferred DropEffect" ) ist ein Format in der Zwischenablage und regelt u.a.
ob eine Datei kopiert oder ausgeschnitten werden soll.

Option Explicit
 
' API stuff
 
' Clipboard routines.
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RegisterClipboardFormat Lib "user32" Alias _
  "RegisterClipboardFormatA" (ByVal lpString As String) As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, _
ByVal hMem As Long) As Long
 
' Global memory routines. (Pointers)
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
  ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As _
  Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef _
Destination As Any, ByRef Source As Any, ByVal Length As Long)
 
' Global Memory Flags
Private Const GMEM_MOVEABLE = &H2
Private Const GMEM_ZEROINIT = &H40
Private Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
 
' Register Clipboard Format
Private Const CFSTR_PREFERREDDROPEFFECT As String = "Preferred DropEffect" & _
  vbNullChar
 
' DropEffect constants
Public Enum KdFileDropEffectConstants
    kdDropEffectNone = vbDropEffectNone
    kdDropEffectCopy = vbDropEffectCopy
    kdDropEffectMove = vbDropEffectMove
    kdDropEffectLink = 4
End Enum
 
' Copy the "DropEffect" into the clipboard. Return True if we succeed.
Public Function SetFilesDropEffect(ByVal lEffect As Long) As Boolean
 
    Dim lMemoryHandle As Long
    Dim lMemoryPointer As Long
    Dim lFormat As Long
    Dim lReturn As Long
 
    ' Open the clipboard.
    If OpenClipboard(0) Then
 
        ' Get global memory pointer to hold the lEffect variable
        lMemoryHandle = GlobalAlloc(GHND, Len(lEffect))
 
        ' If we have a memory handle
        If lMemoryHandle Then
 
            ' Lock the memory while we initialize it.
            lMemoryPointer = GlobalLock(lMemoryHandle)
 
            ' Copy the lEffect variable into the global memory.
            Call MoveMemory(ByVal lMemoryPointer, lEffect, Len(lEffect))
 
            ' Unlock the memory
            Call GlobalUnlock(lMemoryHandle)
 
            ' Register the format
            lFormat = RegisterClipboardFormat(CFSTR_PREFERREDDROPEFFECT)
 
            ' Copy the format to the clipboard.
            lReturn = SetClipboardData(lFormat, lMemoryHandle)
 
            ' Check if we succeed
            If lReturn Then
                SetFilesDropEffect = True
            End If
        End If
 
        ' Close the clipboard.
        Call CloseClipboard
 
    End If
 
End Function
Der Aufruf ist dann auch relativ einfach:

A. Um Dateien zu kopieren
    Call SetFileDropEffect(kdDropEffectCopy Or kdDropEffectLink)
B. Um Dateien zu verschieben
    Call SetFileDropEffect(kdDropEffectMove)
Leider funktioniert es nicht anschließend im Explorer eine Verknüpfung einzufügen.
Würde mich freuen, wenn dazu einer eine Lösung findet und diese hier posted.


Schöne Grüße
Ralf-Peter Baumann
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dateien in die Zwischenablage kopieren mit DragDrop Effect1.802RalfPeter04.07.05 17:07
Re: Dateien in die Zwischenablage kopieren mit DragDrop Effe...1.228ModeratorMartoeng04.07.05 23:15
Danke, ich konnte es selbst lösen1.193RalfPeter05.07.05 09:26
Re: Danke, ich konnte es selbst lösen1.172ModeratorMartoeng05.07.05 10:28
Hier die ausführliche Lösung: Preferred DropEffect.2.906RalfPeter05.07.05 13:01

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel