When the solution matters

Registrieren Einstieg Dokumentation Code Archiv Mail-Archiv Support Programme

DLL Wizard

 

Der DLL Wizard erlaubt den Aufruf von Funktionen aus DLL's von 4D. Dazu wird vom DLL Wizard ein Plug-In erzeugt das den Aufruf steuert.

Das DLL muß dazu weiterhin vorhanden sein, das Plug-In ruft dieses nur auf. Entsprechend kann das Plug-In ausschließlich unter Windows verwendet werden.

Der DLL Wizard gehört zum Lieferumfang von 4D 2004, er wird standardmäßig im Verzeichnis: C:\Programme\4D\4D Product Line 2004.2\Werkzeuge\DLL Wizard installiert.

Zur Nutzung des DLL Wizards benötigt man eine Dokumentation der Funktionen des DLL's, wie Funktionsname und verwendete Parameter.

Als Beispiel für eine Anwendung zeigen wir den Zugriff auf die Windows-Zwischenablage Typ "Datei". Anwender können im Windows Explorer eine oder mehrere Dokumente auswählen und im Kontext-Menü den Befehl "Kopieren" aufrufen. Windows setzt dann die Pfade der Dateien in die Zwischenablage, allerdings nicht als Text sondern in einem besonderen Format. Um diese auszulesen muß man die Zwischenablage öffnen, alle enthaltenen Typen abfragen und den Typ CF_HDROP (= 0xF = 15) suchen und diesen Typ als Handle abholen. Dann für diese Daten die enthaltenen Pfade auslesen.

Die Dokumentation für die benötigten Befehle:

OpenClipboard
EnumClipboardFormats
GetClipboardData
CloseClipboard
DragQueryFile

findet man auf den [Microsoft-Seiten] im Kapitel Data Exchange [Clipboard]

Im DLL Wizard legt man dazu ein neues Projekt an wie "WinClipboard". Das PlugIn trägt dann diesen Namen. Jede benötigte Funktion wird gleichermaßen angelegt. Man wählt das benötigte DLL aus, in der Microsoft Dokumentation steht das immer ganz unten, hier für alle Befehle "User32.DLL", außer DragQueryFile ist System32.dll Beide DLL's liegen in C:\Windows\System32

Nach Auswahl des DLL's werden die enthaltenen Funktionen angezeigt. Wählen Sie nun diese der Reihe nach aus, beginnend mit OpenClipboard. Nun die Parameter auswählen - dazu in der MS Doku nachlesen. Hier als Kurzfassung:

long OpenClipboard (long)
long EnumClipboardFormats(long)
long GetClipboardData(long)
long CloseClipboard
long DragQueryFile(long, long, String, long)

Der DLL Wizard kürzt dabei die Befehlsnamen für 4D auf 12 Zeichen ab, so wird numClipboardFormats zu EnumClipboardsFs

Bild:DLLWizard.jpg

In 4D kann dann das PlugIn ganz normal verwendet werden. Der folgende Beispielscode zeigt die Pfadnamen hintereinander in einem ALERT an.

CF_HDROP:=0x000F
mystring:=""
hClip:=OpenClipboard (0)
If (hClip>0)
   lRet:=EnumClipboardFs (0)
   If (lRet>0)
      Repeat 
      lRet:=EnumClipboardFs (lRet)
        If (lRet=CF_HDROP)
           lHandle:=GetClipboardDaa (CF_HDROP)
           If (lHandle>0)
             lRet:=DragQueryFileA (lHandle;-1;mystring;255)
             For ($lcount;0;lRet-1)
               lBufferSize:=DragQueryFileA (lHandle;lCount;mystring;255)
                  ALERT(mystring)
               End for 
             End if 
          End if 
       Until (lRet<=0)
  End if 
End if 
hClip:=CloseClipboard

 

Meine Anregung zu dieser Seite:

Bemerkungen, Vorschläge, Fehler
Name
eMail

 

International | Firmenprofil | Kontakt | Site Map | © 4D 1995 - 2007 | Schriftgröße ändern: [A] [A] [A] | Diese Seite drucken - * Externer Link