Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dateinamen in Fenster Droppen (https://www.delphipraxis.net/195167-dateinamen-fenster-droppen.html)

Schwedenbitter 7. Feb 2018 20:40

Dateinamen in Fenster Droppen
 
Hallo,

ich möchte gern einen Vorgang automatisieren. Bei uns ist es erforderlich, pdf-Dateien mittels Drag & Drop z.B. vom Explorer in ein Programm zu ziehen. Die entsprechenden Dateien bzw. Dateinamen sind mir bekannt. WinSpy sagt mir leider nur, dass das Ziel ein „SunAwtFrame“ ist. Das scheint etwas mit Java zu tun zu haben. Wobei auch die irgendwie den Empfang des Drag & Drop implementieren müssen.

Ich würde jetzt gern von meinem Programm aus dieses Programm starten und die - mir bekannten (Siehe oben) - Dateien dort einfügen.

Ich habe natürlich hier schon das eine oder andere zu dem Thema gefunden. Das meiste scheint sich aber damit zu beschäftigen, Dateien mit einem Delphi-Programm anzunehmen. Ich würde sie aber gern „abgeben“. Wo bzw. mit welchen Suchworten kann ich mich idealer Weise diesem Thema nähern?

Redeemer 7. Feb 2018 21:09

AW: Dateinamen in Fenster Droppen
 
Hast du dich mal mit den DragFiles von Angus Johnson beschäftigt? Damit kann man ein Shell-Drag-Event starten, müsste man sie nur irgendwie am Ziel droppen.

Schwedenbitter 7. Feb 2018 22:06

AW: Dateinamen in Fenster Droppen
 
Zitat:

Zitat von Redeemer (Beitrag 1393329)
Hast du dich mal mit den DragFiles von Angus Johnson beschäftigt? Damit kann man ein Shell-Drag-Event starten, müsste man sie nur irgendwie am Ziel droppen.

Auch.
Die Demo zu
Delphi-Quellcode:
WM_DROPFILES
habe ich mir angesehen und auch dieses Beispiel und dieses Beispiel.
In der Theorie muss ich "nur" so etwas ähnliches wie das hier (nicht funktionierend) tun:
Delphi-Quellcode:
procedure TFormMain.SpeedButton1Click(Sender: TObject);
var
   wndMain   : HWND;
   wndList   : TStringList;
   FilesHandle: THandle;
begin
   wndMain := FindWindow('TFormMain','WM_DROPFILES demo');
   if (wndMain <> 0) then
   begin
      wndList:= TStringList.Create;
      try
         wndList.Add('aFile.txt');
         FilesHandle:= ConvertFilesToShellIDList('d:\', wndList);
         SendMessage(wndMain, WM_DROPFILES, FilesHandle, 0);
      finally
         wndList.Free;
      end;
   end;
end;
Allerdings liegen Theorie und Praxis und hier auch mein Verständnis manchmal etwas auseinander. Mich wundert auch, dass ich im www kein Beispiel zu diesem Thema finde. Ich kann mir nicht vorstellen, der einzige weltweit mit diesem Problem zu sein. Es kann doch eigentlich nur daran liegen, dass ich mit den falschen Schlagworten suche.
Daher ja meine Frage...

EWeiss 8. Feb 2018 00:23

AW: Dateinamen in Fenster Droppen
 
vielleicht nach ConvertFilesToShellIDList suchen?

gruss

EWeiss 9. Feb 2018 06:28

AW: Dateinamen in Fenster Droppen
 
Zitat:

Ich habe natürlich hier schon das eine oder andere zu dem Thema gefunden. Das meiste scheint sich aber damit zu beschäftigen, Dateien mit einem Delphi-Programm anzunehmen. Ich würde sie aber gern „abgeben“. Wo bzw. mit welchen Suchworten kann ich mich idealer Weise diesem Thema nähern?
Irgendwie verstehe ich nicht was du meinst mit abgeben.
bsp.

Ich habe ein Video.
Wenn ich dieses jetzt vom Explorer auf mein Icon in meinem Prog.. OTTB ziehe dann öffnet sich das Programm zu dem dieses Icon gehört
und spielt die Datei ab die ich mit Drag und Drop auf das Icon aus einer anderen Anwendung(OTTB) gedropt habe.

Ist es das was du meinst?

gruss

hoika 9. Feb 2018 06:30

AW: Dateinamen in Fenster Droppen
 
Hallo,
nein,
er will Dateien, dessen Pfad/Name bekannt ist, einem anderen Programm (Java?) automatisch per Drag&Drop schicken.

Etwa so:
http://www.delphi.longzu.net/viewthr...tra=page%3D121

EWeiss 9. Feb 2018 07:17

AW: Dateinamen in Fenster Droppen
 
Ok.. Habe es dann doch falsch verstanden.
Danke.

gruss

Schwedenbitter 7. Mär 2018 14:09

AW: Dateinamen in Fenster Droppen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von hoika (Beitrag 1393420)

Genau. Etwa so. Danke erstmal für die Antworten!

Nach der Grippewelle habe ich mir den Code angesehen. Egal was ich mache, die Dateinamen kommen zwar an, werden aber auseinandergepflückt. Kurz gesprochen kommt jedes Zeichen extra an. Um das zu verdeutlichen, habe ich einen Screenshot sowie meine Demos angehängt (ausnahmesweise auch als exe-Dateien, damit man nicht z.B. den Empfänger kompilieren muss).
Dass es am Empfänger liegt, schließe ich aus. Denn wenn man z.B. vom Desktop Dateien auf ihn dropt, werden die korrekt angezeigt.

Ich habe die Vermutung, dass es am Unterschied zwischen AnsiString und WideString liegt. Ein simples Umdeklarieren hat aber leider nichts gebracht. Ich habe die Strings einzeln zerlegt, vorher in ein String umgewandelt etc. Nur leider bringt das alles nichts, so dass ich mal wieder auf dem sprichwörtlichen Schlauch stehe.

Hat noch jemand Ideen?

HolgerX 7. Mär 2018 15:43

AW: Dateinamen in Fenster Droppen
 
Hmm..

(Nur mal über den Source geschaut..)

Dir ist schon bewust, das 'S : String;' immer noch ein WideString (Ab D2009/D2010) ist?
Da müsste schon 'S : AnsiString;' stehen, damit aus dem Wide/Unicodestring ein AnsiString wird..
;)

Edit
Unter D6 kompiliert funktioniert dein Sender, aber hier ist ein String = AnsiString ;)

Schwedenbitter 7. Mär 2018 16:15

AW: Dateinamen in Fenster Droppen
 
Zitat:

Zitat von HolgerX (Beitrag 1395486)
Dir ist schon bewust, das 'S : String;' immer noch ein WideString (Ab D2009/D2010) ist?

Nö :lol: Aber jetzt schon.
Mit Typecast klappt es nun tatsächlich. Danke!

Ich habe bloß das Problem, dass der SecSigner und/oder Java hart zu sein scheint. Ich schaffe es nicht, meine Dateinamen in diesen zu droppen. Ich habe auch ein Delphi Programm gefunden, das eine Mischung aus WinSpy und meinem Sender ist. Auch mit diesem kommt nichts dort an.
Scheinbar dann doch alles für die Katz :evil:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 1 von 2  1 2      

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