![]() |
Eingabefeld einer fremden Anwendung ausfüllen
Folgendes Problem:
Anwendung 1 start eine zweite Anwendung (PGPDISK wenn es jemand genau wissen will) diese soll eine Verzweichnis auf der Festplatte entschlüsseln, benötigt dazu aber die Eingabe einer Passwortphrase. Dieses muss/will ich nun automatisieren, ein Handle auf das Fenster der zweiten Anwendung habe ich auch schon. Den OK und den Cancel Button kann ich auch schon fernsteuern, jedoch bekomme ich die Eingabe in das Feld für die Passwortphrase nicht hin. Hoffe mir kann da jemand helfen. |
Re: Eingabefeld einer fremden Anwendung ausfüllen
WM_SETTEXT heißt das Zauberweort bzw. die Zaubernachricht.
Delphi-Quellcode:
var
s: String; begin s := 'Hello world.'; SendMessage(hEdt, WM_SETTEXT, 0, Integer(@s[1])); |
Re: Eingabefeld einer fremden Anwendung ausfüllen
Wie bekommst du den das Handle deiner Fremdanwendung ?
Ich schreibe an soetwas ähnlichem, aber habe das über den Tastaturpuffer direkt realisiert. Nur für das Handle habe ich noch keine vernünftige Lösung..... :gruebel: |
Re: Eingabefeld einer fremden Anwendung ausfüllen
|
Re: Eingabefeld einer fremden Anwendung ausfüllen
Zitat:
hallo luckie, wieso "Integer(@s[1]);" statt "Integer(s);" ist @ ein zeiger? und wenn ja, wieso setzt man nicht einfach nur "s" statt "@s" ein? achja und nochwas, wieso eigentlich "integer"? woher weiss die funktion welchen text sie übergeben muss wenn es ein integer ist? |
Re: Eingabefeld einer fremden Anwendung ausfüllen
Moin Pseudemys Nelsoni,
mit integer(s) würdest Du den Wert der Adresse der Variablen übergeben die die Adresse des Strings enthält, mit integer(@s[1]) ist es die Adresse des ersten Zeichens des Strings. Dieser wird intern automatisch nullterminiert, so dass eine API Funktion etwas damit anfangen kann. Ersatzweise ginge auch integer(PChar(s)). Der Typecast mit integer ist notwendig, da Borland die Funktion so importiert, dass man dort nicht direkt die Adresse eines Strings angeben kann. [EDIT] Durch die Nachricht WM_SETTEXT sollte die WindowsProc die die Message auswertet "wissen", dass der Wert von LParam die Adresse eines nullterminierten Strings bedeutet. [/EDIT] |
Re: Eingabefeld einer fremden Anwendung ausfüllen
danke, für die erklärung, christian :thuimb:
Das bringt mich auf ne neue Frage (neuen Thread :cheers: ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00: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