![]() |
Eine komponente einer anderen Applikation anektieren
Hallo zusammen,
Im thema ein Explizites tasten Event wurde leider keine wirklich zufriedenstellende lösung für mein Problem mit den tastenevents gefunden. Daher hier ein neuer ansatz resp. eine Frage. Ist es möglich ein Editfeld einer beliebigen applikation über z.b. den Handle zu anektieren und eine referenz im eigenen code zu erstellen? So das ich in das ich das edit direkt befüllen kann OHNE mit postmessage irgendwelche tastenevents in das edit zu generieren? Oder kennt sonst jemand einen weg ein Fremdes Edit mit Zahlen zu befüllen ohne über postmessage oder ähnliches benützen? Oder kennt jemand eine Methode SendInput und Postmessage zu kombinieren? Sozusagen mehrere zeichen gleichzeitig an einen bestimmten handle zu senden? Etwas an einen Handle zu senden kann ja Postmessage, und eine zeichen kette versenden kann sendinput. Genaueres findet ihr im ![]() mit der hoffnung auf eine gute lösung gibb |
Re: Eine komponente einer anderen Applikation anektieren
Ohne "postmessage oder ähnliches benützen" wird es wohl nicht funktionieren.
Die der Nachricht WM_SETTEXT ändert den Text eines Controls bzw. Editfeldes. |
Re: Eine komponente einer anderen Applikation anektieren
wenn du nonVCL ein Edit-Feld machst, kannst du das in deiner eigenen Anwendung auch nicht mit Text befüllen, ohne Fensternachrichten zu verschicken. Die VCL kapselt diesen Vorgang nur für dich. Du könntest jetzt im Speicher raten, wo sich der Text des Edit-Feldes gerade befindet und dementsprechend den Speicher manipulieren und dann per Fensternachricht dem Edit-Feld sagen, es solle sich neu zeichnen.
Du kommst also nicht um Send/PostMessage() herum. Bernhard ADD: manuell gedrücktes Strg/Alt/Shift kannst du umgehen, indem du die Tasten per API "anhebst" also das drücken aufhebst (Taste-hoch-Parameter). Dann meint Windows, die Taste wäre nicht gedrückt, obwohl du den Finger drauf hast. |
Re: Eine komponente einer anderen Applikation anektieren
Zudem könnten neuere Windowsversionen diesen weg verbauen
|
Re: Eine komponente einer anderen Applikation anektieren
Zitat:
|
Re: Eine komponente einer anderen Applikation anektieren
Ich meinte beim direkten Zugriff, z.B. über den Speicher
|
Re: Eine komponente einer anderen Applikation anektieren
Moin gibb,
für den Zweck schlage ich die Messages ![]() ![]() ![]() ![]() |
Re: Eine komponente einer anderen Applikation anektieren
Und bei sendMessage in kombination mit wm_SETTEXT werden vom benutzer gedrückte tasten ignoriert?
Sonst seh ich den sinn nicht das zu benutzen ;) Werds aber auf jeden fall testen. Gruss Sev Edit:@rollstuhlfahrer: Das mit dem anheben hat bei postmessage nicht funktioniert. genaueres findest du im anderen Thread. |
Re: Eine komponente einer anderen Applikation anektieren
Hi,
Also, ich habe das mal versucht, und es scheint auch ziemlich gut zu funktionieren. zumindest in meinem "Testfall"
Delphi-Quellcode:
Das einzige was mich stutzig macht ist das es kein repaint auslöst der komponente resp. das edit aussieht als sei es leer bis ich mit der maus den text markiere. oder so tue als ob ich was markieren möchte.
SendMessage(hwndControl,WM_SETTEXT,0,(Integer(PChar(strNewSpeed))));
ctrl, shift scheint er so sowieso schon zu ignorieren. Gruss Sev |
Re: Eine komponente einer anderen Applikation anektieren
Wenn das Steuerelement nicht selbst mitbekommt das es sich neu zeichnen muss, geht immer noch
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 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 by Thomas Breitkreuz