Wie bekomme ich eine andere Anwendung das Fenster-handle übergeben Delphi per Mausklick
Wie bekomme ich das handle des Fensters übergeben werden, die Delphi durch den Benutzer die Auswahl der Fenster (hätte auch jede andere Anwendung Fenster) durch einen Klick mit der Maus auf Sie. In meinem Delphi-app konnte ich eine Schaltfläche, die der Benutzer klickt, beginnt dieses Verfahrens sowie ein label-Anzeige der angeklickte Fenster-Titel in der Delphi-app. Wenn der Benutzer zufrieden ist, die er ausgewählt das richtige Fenster konnte er auf die Schaltfläche klicken, die in meinem Delphi-app (die modal) zu stoppen, ist die Auswahl und lassen Sie die app starten, tun, um die anderen Fenster, was es tun muss...
- Maus erfassen oder das Fenster, Haken, beide funktionieren. Hängt davon ab, wie genau Sie es wollen. Maus-capturing-arbeiten ab, indem Sie die capture-Prozess, wenn die Maustaste gedrückt gehalten wird (z.B. über die Taste am Fenster) und dann endet, wenn die Taste losgelassen wird. In zwischen Ihre app erhalten Sie Informationen über die position der Maus und so ... genug, um herauszufinden, die Fenster, über die Sie schweben.
- Danke für die Antwort, ich bin neu in delphi und sehr, sehr, sehr neu in der winapi also, wenn könnten Sie so freundlich sein zu erarbeiten, ein bisschen weiter, eventuell mit einem code-Beispiel ich wäre Ihnen sehr verpflichtet.
- -1, @Georg - Du akzeptiert hast eine Antwort, die nicht die Frage beantworten, anstatt eine der anderen zu tun. Das zeigt, was man erreichen wollte, ist nicht ganz im Zusammenhang mit dem, was Sie fragte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie wissen, welcher text in den Titel des Fensters, in diesem code wird der trick für Sie:
Nutzung in Ihrem Beispiel (Editor legt den Namen der geöffneten Datei wird in der Titelleiste):
Benutzte ich diesen code um zu überprüfen, ob meine Anwendung bereits läuft. Aber es kann verwendet werden, auf jede gestartete Anwendung.
Den Ansatz, dass Nutzer STATUS_ACCESS_DENIED, die in dem Kommentar ist wahrscheinlich der einfachste Weg, hier zu gehen. Ich würde empfehlen, mit Maus erfassen über Einhaken, weil es etwas einfacher zu implementieren.
Hier ist eine etwas ausführlichere Zusammenfassung von dem, was ist beteiligt:
Die erste Sache, die die Art ändern, wie das Auswahlverfahren funktioniert. Anstatt den Benutzer auf eine Schaltfläche klicken Sie auf Ihre app, um den Prozess zu starten, und klicken Sie dann auf das Ziel-Fenster, und klicken Sie schließlich erneut zu bestätigen; es ist viel einfacher zu implementieren, wenn Sie der Benutzer auf einen bestimmten Bereich Ihrer app, dann ziehen auf das Zielfenster und lassen Sie die Maustaste, während Sie über das Ziel hinaus. Dies ist, weil windows die Auffassung, dass ein Klick auf eine andere app zu gehören, die app, und Sie haben, um zusätzliche Arbeit zu tun, um Sie abzufangen. Doch es gibt einen einfachen Weg - genannte Maus-capture, um Informationen über eine drag/release wenn es beginnt wie ein Klick auf Ihrer eigenen app.
Dies ist auch der Ansatz, dass der Windows-SDK-tool Spy++ verwendet; also by doing es auf diese Weise, Sie sind auch im Einklang mit einem bekannten tool. (Pic von Spy++ hier - beachten Sie das Fadenkreuz Finder-Tool im dialog - das ist es, was Sie klicken und ziehen, um das Ziel. Würde empfehlen, das Windows SDK heruntergeladen und das Spiel mit diesem tool, wenn Sie nicht getan haben, bevor, es ist auch eine sehr nützliche Möglichkeit, zu sehen, wie andere Anwendungen sind gebaut, so groß, wie eine Windows-API-learning-tool.)
Schritte:
Beachten Sie, dass Sie mit der Maus verschieben, Veranstaltungen, sowohl während des ziehen, auch wenn der Benutzer gerade passiert, bewegen Sie den Mauszeiger über Ihre Steuern, vielleicht auf dem Weg zu einigen anderen Steuern. Der einfachste Weg, zu sagen, in diesen zwei Fällen abgesehen, ist die Verwendung einer Flagge in Ihrer Hand, die Sie festlegen, wenn Sie mit der Maus nach unten, und klar, wenn man die Maus nach oben, und verarbeiten nur die Maus bewegen-Ereignisse, wenn das flag gesetzt ist.
Oben beschrieben, den Prozess im Hinblick auf einfache Win32-APIs, die Sie nennen würden, die von C/C++; aber es sieht aus wie Delphi bietet direkte Unterstützung für die meisten oder alle von Ihnen.
edit: Möglich Delphi-Umsetzung:
Edit: Es ist Weg, aber Sie werden in der Lage zum download Delphi Window Spy von Eddie Shipman, aus delphipages.com, das sich in einem schwelenden Haufen nutzloser linkbait.