![]() |
Drag and drop a file programmatically by using "OleDropTargetInterface"
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo
Mittels IDropTarget soll eine WAV-Datei aus einem Delphi-Programm mittels Drag-and-Drop in eine Fremdanwendung (z.B. in Spek.exe, von ![]() Dies soll aber nicht durch Mausinteraktion des Benutzers erfolgen, sondern "programmatisch" durch das Delphi-Programm unter Verwendung des "OleDropTargetInterface". Im folgenden Link fand ich einen Ansatz dazu (drag and drop a file programmatically by using "OleDropTargetInterface"): ![]() Mit Delphi 7 versuchte ich, dies nachzubauen (siehe angehängte ZIP-Datei), erhielt aber eine EAccessViolation:
Delphi-Quellcode:
"hWnd" ist das Window-Handle vom DropTarget im Fremdprogramm (Spek.exe), das ich mit WinSpy herausgesucht habe und mit FindWindow und FindWindowEx zur Laufzeit korrekt auslesen kann. Am Window-Handle sollte es nicht liegen... - siehe angehängtes Bild "hWnd DropTarget.PNG")
var
DT: IDropTarget; begin DT := IDropTarget(GetProp(hWnd, 'OleDropTargetInterface')); // --> EAccessViolation.............. ... end; Komisch erscheint mir, dass die Funktion GetProp ein Handle zurückgibt, und dies ohne Compiler-Fehler an das DropTarget "DT" übergeben werden kann - dann erzeugt aber diese Zeile die EAccessViolation zur Laufzeit. Danach versuchte ich es noch im obigen Code anstelle "GetProp" mit der Funktion "GetInterfaceProp" - das schluckt aber der Compiler nicht. Weiter versuchte ich es auf die folgende Weise, erhielt dann aber zur Laufzeit "EOleSysError - The parameter is incorrect":
Delphi-Quellcode:
var
DT: IDropTarget; begin OleCheck(CoCreateInstance(DTguid, // Drop Target-GUID (CLSID) nil, GetProp(hWnd, 'OleDropTargetInterface') IDropTarget, DT)); // --> EOleSysError : The parameter is incorrect ... end;
Im folgenden Link fand ich ein funktionierendes "OleDropTargetInterface"-Beispiel, das aber in der Skript-Sprache AutoHotKey (AHK) geschrieben ist: ![]() Hier erfolgt die Verknüpfung des "OleDropTargetInterface" mit dem IDropTarget auf andere Weise als in den ersten beiden Ansätzen - mit QueryInterface (Zeilen 90 und 107 im AHK-Script-Code).
Vielen Dank für Tipps. Grüsse chg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz