Ich benutze ein bisschen proprietäre Software für das DJing (Native Instruments Traktor). Wenn Sie mit so etwas nicht vertraut sind, denken Sie einfach an es als ein verklärtes iTunes: Es durchsucht und spielt Audiodateien.
Ich möchte dafür eine benutzerdefinierte Datei-Browser-Anwendung erstellen, aber es gibt keine API. Es tut erlaubt jedoch das Ziehen und Ablegen von Audiodateien aus dem Dateisystem, was ein guter Anfang ist.
Die Art des Dateibrowsers, den ich entwerfe, bedeutet, dass ich Dinge nicht wirklich per Drag & Drop bewegen muss - ich möchte nur auf eine Komponente in meiner Anwendung klicken und den gleichen Effekt haben. Also suche ich nach Möglichkeiten, programmgesteuert ein Drop-Ereignis in der anderen Anwendung aus meiner Datei-Browser-Anwendung auszulösen
Meine Plattform der Wahl ist Python mit PyQt, aber ich fange an zu glauben, dass ich etwas tiefer gehen muss. Hab noch nicht viel C # / Java gemacht, also könnte das ein bisschen eine Lernkurve sein (ich habe eine Menge ANSI C gemacht, aber das ist wahrscheinlich zu low level ...)
So weit habe ich:
So, jetzt muss ich den mittleren Mann ausschneiden und, beim Klicken, meine MIME-Daten zusammenpacken und Traktor denken lassen, dass ich es gezogen und darauf fallen gelassen habe.
Ich habe mich auch eingehend mit den Dokumenten der OSX-Entwickler beschäftigt, insbesondere this stuff , das die Reihenfolge der Nachrichten beschreibt, die an die Zielanwendung (Ablageziel) übergeben werden.
Das macht alles Sinn, aber ich bin kurz davor, auf C # / Java herunterzufallen, um diese Nachrichten nachzuahmen, die wie ein Kaninchenloch klingen. Ich würde es lieber nicht wagen, wenn ich es vermeiden kann.
>Also, bevor ich das tue ...
Ich weiß, dass ich das mit Click-Automation machen könnte, aber ich kann mir vorstellen, dass es wirklich unzuverlässig ist, massiv auf die Positionen von Fenstern usw. angewiesen zu sein.
Vielen Dank im Voraus!
Dies wurde nicht versucht, aber Dinge wie CGEventCreateMouseEvent
und CGEventPostToPSN
könnten hilfreich sein. CGEvent.h und CGRemoteOperation.h
Ich frage mich auch, ob die Zielanwendung möglicherweise auf Apple-Ereignisse reagiert - wenn dies der Fall wäre, könnten Sie Apple-Ereignisse erstellen und diese an sie senden, die sauberer wären. Ich würde versuchen, AppleScript Editor oder Automator auszuführen und das Wörterbuch in der fraglichen App zu öffnen, um zu sehen, ob es ein Wörterbuch mit Ereignissen enthält, die möglicherweise das tun, was Sie wollen.
Glück.
Tags und Links python xcode macos drag-and-drop pyqt