AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Eine komponente einer anderen Applikation anektieren

Eine komponente einer anderen Applikation anektieren

Offene Frage von "David Martens"
Ein Thema von gibb · begonnen am 26. Mai 2010 · letzter Beitrag vom 10. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2   
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#1

Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 07:03
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 thema explizites tasten event auslösen. Wo es darum ging das es nicht möglich manuell gedrücktes ctrl/Shift per postmessage zu ignorieren.

mit der hoffnung auf eine gute lösung

gibb
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 14:41
Ohne "postmessage oder ähnliches benützen" wird es wohl nicht funktionieren.

Die der Nachricht WM_SETTEXT ändert den Text eines Controls bzw. Editfeldes.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 16:10
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.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 16:13
Zudem könnten neuere Windowsversionen diesen weg verbauen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 16:18
Zitat von mkinzler:
Zudem könnten neuere Windowsversionen diesen weg verbauen
In wie fern? - Nachrichten kommen nur dann nicht an, wenn 2 Prozesse mit unterschiedlich starken Rechten kommunizieren wollen.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 16:22
Ich meinte beim direkten Zugriff, z.B. über den Speicher
Markus Kinzler
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Eine komponente einer anderen Applikation anektieren

  Alt 26. Mai 2010, 22:20
Moin gibb,

für den Zweck schlage ich die Messages Hier im Forum suchenWM_GETTEXT/MSDN-Library durchsuchenWM_GETTEXT und Hier im Forum suchenWM_SETTEXT/MSDN-Library durchsuchenWM_SETTEXT vor.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Eine komponente einer anderen Applikation anektieren

  Alt 27. Mai 2010, 09:04
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.
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Eine komponente einer anderen Applikation anektieren

  Alt 28. Mai 2010, 15:15
Hi,

Also, ich habe das mal versucht, und es scheint auch ziemlich gut zu funktionieren. zumindest in meinem "Testfall"

SendMessage(hwndControl,WM_SETTEXT,0,(Integer(PChar(strNewSpeed)))); 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.

ctrl, shift scheint er so sowieso schon zu ignorieren.

Gruss Sev
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Eine komponente einer anderen Applikation anektieren

  Alt 28. Mai 2010, 16:50
Wenn das Steuerelement nicht selbst mitbekommt das es sich neu zeichnen muss, geht immer noch InvalidateRect.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
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