Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Text in anderen Programm schreiben (https://www.delphipraxis.net/87212-text-anderen-programm-schreiben.html)

Christian18 25. Feb 2007 10:00


Text in anderen Programm schreiben
 
Hallo,

ich weiß nicht, ob ich mit meinem Anliegen die richtige Sparte hier getroffen habe. Aber ich frage einfachmal. Ich will ein kleines Tool schreiben, mit dem ich mir Texte hinterlegen kann und in dem Progamm reingeschrieben wird wo der Fokus drinn ist.

Beispiel:

ich will hier einen Beitrag schreiben. Also klicke ich mit der Mouse in diese Textbox. Wenn ich in dem Tool den Button MFG drücke, dann soll das hier in das Textfeld der DP drinn stehen. Wie kann ich sowas machen. Das soll aber nicht nur hier in der DelphiPraxis funktionieren sondern auch mit anderen Programmen.

PS: Ist sowas möglich, wenn ja wie?

MFG Christian18

ghost007 25. Feb 2007 10:10

Re: Text in anderen Programm schreiben
 
Liste der Anhänge anzeigen (Anzahl: 3)
hi,
ich hab dazu mal ne unit gefunden.
Siehe anhang.

MfG - Ghost007

[EDIT]
hab noch ne 2te unit gefunden
->Anhang

Für die 2te unit sollte folgeder code für deine zwecke ausreichen:
Delphi-Quellcode:
uses sndkey32

var
 text:string;
.
.
.

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendKeys(text, True);
end;
in der variable text legst du deinen text ab, den du einfügen willst

eine frage zum schluss, wie willst du den fokus in dem textfeld lassen, und gleichzeitig einen button in deinem tool drücken? beokmmt dann nicht dein tool den fokus? dann müsstest du auf den button klicken und dann entweder mit delay die keys senden oder generell den fokus checken.
[/EDIT]

DGL-luke 25. Feb 2007 10:24

Re: Text in anderen Programm schreiben
 
Hallo,

dazu brauchst du zuerst das Handle eines Edit-Windows (MSDN-Library durchsuchenFindWIndow, MSDN-Library durchsuchenWindowFromPoint). Über MSDN-Library durchsuchengetWindowText(Len) kannst du den Text auslesen, mit der MSDN-Library durchsuchenWM_SETTEXT-Message wieder setzen.

Das ist eigentlich alles, was du brauchst. Selbst hineinzutippen, wie es ghost007 vorschlägt, halte ich für unnötig.

Rastaman 25. Feb 2007 10:26

Re: Text in anderen Programm schreiben
 
Die Editfenster im Browser haben aber kein eigenes Handle :shock:

ghost007 25. Feb 2007 10:27

Re: Text in anderen Programm schreiben
 
Zitat:

Zitat von DGL-luke
Das ist eigentlich alles, was du brauchst. Selbst hineinzutippen, wie es ghost007 vorschlägt, halte ich für unnötig.

hi,
wo habe ich gesagt das er was selber eintippen soll? :gruebel:

[EDIT]
mit der 2ten unit und dem dazugehörenden code von mir, werden einfach die zeichen an das fester/edit mit dem fokus gesendet.
dafür brauchst du keine handle.
[/EDIT]

DGL-luke 25. Feb 2007 10:29

Re: Text in anderen Programm schreiben
 
:shock:

das halt ich jetzt für unwahrscheinlich.

Aber tatsächlich, du hast recht... wie das denn?! Sind das keine EDIT-Windows?

@ghost007: sendkeys macht ja nix anderes ;-)

Christian18 25. Feb 2007 10:36

Re: Text in anderen Programm schreiben
 
das weiß ich auch noch nicht, wie kann man sag problem lösen

ghost007 25. Feb 2007 10:36

Re: Text in anderen Programm schreiben
 
Zitat:

Zitat von DGL-luke
@ghost007: sendkeys macht ja nix anderes ;-)

ja ok, damit hast du recht, aber wie willst du sonst in ein feld des browsers etwas reinschreiben?

Christian18 25. Feb 2007 10:38

Re: Text in anderen Programm schreiben
 
Hi DGL-luke,

hast du ein Bsp?

ghost007 25. Feb 2007 11:03

Re: Text in anderen Programm schreiben
 
wenn du eine möglichkeit suchst um an das handle zu kommen, schau dir ma das nette programm hier an, damit kannst du dir auch einen beispiel code generieren lassen.

MfG - Ghost007

Christian18 3. Mär 2007 18:14

Re: Text in anderen Programm schreiben
 
Hi,

ich habe jetzt die ganze zeit probiert das problem zu lösen, es funktioniert aber einfach nicht. kann mir jemand helfen???

MFG Christian18

DGL-luke 3. Mär 2007 18:46

Re: Text in anderen Programm schreiben
 
Hallo,

ich seh da im Moment wirklich nur Chancen mit SendKeys. und davor musst du den Focus auf das Edit-Feld setzen. Das ist der Knackpunkt, ich weiß nicht, wie das geht ohne Handle (mit Handle würd auch WM_SETTEXT einfach funktionieren).

@all: Warum HAT ein Eingabefeld in einem Webbrowser kein Handle?

Sunlight7 4. Mär 2007 06:38

Re: Text in anderen Programm schreiben
 
Moin!

Du könntest in Deinem Programm, wenn Du auf den MFG Button klickst das vorherige Fenster in der Z-Order wieder in den Vordergrund bringen, dann müsste der Fokus "noch" im Eingabefeld sein und mit Keybd_event Makros sollte es gehen Text zu tippen ähm tippen lassen :mrgreen:

Wie man die vorherige Anwendung wiederherstellen kann hab ich mal wo gepostet, aber den Thread nicht mit der Suche gefunden :shock:

SirThornberry 4. Mär 2007 08:52

Re: Text in anderen Programm schreiben
 
Zitat:

Zitat von DGL-luke
Hallo,

ich seh da im Moment wirklich nur Chancen mit SendKeys. und davor musst du den Focus auf das Edit-Feld setzen. Das ist der Knackpunkt, ich weiß nicht, wie das geht ohne Handle (mit Handle würd auch WM_SETTEXT einfach funktionieren).

@all: Warum HAT ein Eingabefeld in einem Webbrowser kein Handle?

Warum sollte das Editfeld im Browser ein Handle haben? TLabel, TImage etc. haben doch auch kein Handle und trotzdem kann über die Auswertung von Messages des Fensters worauf sich TLabel etc. zeischnen das ganze realisiert werden.

DGL-luke 4. Mär 2007 12:30

Re: Text in anderen Programm schreiben
 
@SirT: Weil normale Edits/Textboxen halt eins haben :roll:
Es kommt mir komisch vor, dass die Browser da alle komplett auf die WinAPI-Unterstützung verzichten.

3_of_8 23. Mär 2007 15:45

Re: Text in anderen Programm schreiben
 
Ein Label, ein Image sind auch nur TGraphicControls. Das heißt, sie malen einfach auf ihr Parent drauf. TEdits sind TWinControls, sie sind einfach eine Abstraktion eines Windows-Edits und die haben nunmal Handles. SirT, ich bin mir relativ sicher, dass du das weißt.

Ich könnte mir vorstellen, dass Webbrowser ihre eigenen Edits "basteln", weil man da ja auch HTML/CSS definierte optische Veränderungen vornehmen können muss. Außerdem, ich bin mir jetzt nicht mehr ganz sicher, kann es sein, dass der Firefox in Java geschrieben ist und ich glaube, Java-Controls bauen nicht auf WinAPI-Controls auf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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