AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Drag and drop a file programmatically by using "OleDropTargetInterface"
Thema durchsuchen
Ansicht
Themen-Optionen

Drag and drop a file programmatically by using "OleDropTargetInterface"

Ein Thema von chg · begonnen am 21. Jun 2022
Antwort Antwort
chg

Registriert seit: 5. Nov 2011
1 Beiträge
 
#1

Drag and drop a file programmatically by using "OleDropTargetInterface"

  Alt 21. Jun 2022, 21:09
Hallo

Mittels IDropTarget soll eine WAV-Datei aus einem Delphi-Programm mittels Drag-and-Drop in eine Fremdanwendung (z.B. in Spek.exe, von http://spek.cc) "geschickt" werden.
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"):
http://www.codenewsfast.com/cnf/arti...rt-ng1913q4204

Mit Delphi 7 versuchte ich, dies nachzubauen (siehe angehängte ZIP-Datei), erhielt aber eine EAccessViolation:
Delphi-Quellcode:
var
  DT: IDropTarget;
begin
  DT := IDropTarget(GetProp(hWnd, 'OleDropTargetInterface')); // --> EAccessViolation..............
  ...
end;
"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")

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;

  • Hat jemand eine Idee, woran es liegt?

Im folgenden Link fand ich ein funktionierendes "OleDropTargetInterface"-Beispiel, das aber in der Skript-Sprache AutoHotKey (AHK) geschrieben ist:
https://www.autohotkey.com/boards/viewtopic.php?t=56720
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).
  • Hat jemand eine Idee, wie man insbesondere die Zeilen 90 und 107 (im AHK-Script-Code) in Delphi implementieren könnte?

Vielen Dank für Tipps.

Grüsse
chg
Miniaturansicht angehängter Grafiken
hwnd-droptarget.png  
Angehängte Dateien
Dateityp: zip 001.zip (311,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz