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 Externes Eingabefeld füllen??? (https://www.delphipraxis.net/44218-externes-eingabefeld-fuellen.html)

TriphunEM 15. Apr 2005 14:48


Externes Eingabefeld füllen???
 
Hallo!
Ist es möglich eine AKTIVE Eingabezeile eines anderen Programmes zu füllen? Das heißt ich klicke auf eine Eingabezeile einer anderen Anwendung und kann z.B. durch drücken eine Hotkeys einen bestimmten Text einfügen!
Das mit dem Hotkey ist ja kein Thema, aber wie bekomm ich das hin das mein Prog weißt wo der Text eingefügt werden soll???

Danke!

Waldteufel 15. Apr 2005 14:50

Re: Externes Eingabefeld füllen???
 
Hi.

Unter Umständen könnte man Tastenanschläge simulieren (frag jetzt bitte nicht, wie... :wink: ).

malo 15. Apr 2005 15:01

Re: Externes Eingabefeld füllen???
 
Eventuell könnte das hier interessant für dich sein ;)

Christian Seehase 15. Apr 2005 15:38

Re: Externes Eingabefeld füllen???
 
Moin TriphunEM,

das hatten wir schon öfter.
Such' hier mal nach Hier im Forum suchenWM_SETTEXT

Lesco 15. Apr 2005 15:45

Re: Externes Eingabefeld füllen???
 
Zitat:

Zitat von Christian Seehase
Moin TriphunEM,

das hatten wir schon öfter.
Such' hier mal nach Hier im Forum suchenWM_SETTEXT

wenn immer das aktive fenster das erhalten soll wäre das aufwendiger als tasten virtuell zu drücken

SirThornberry 15. Apr 2005 16:19

Re: Externes Eingabefeld füllen???
 
So kompliziert ist es doch gar nicht. Es geht einmal mit der Windowsfunktion "SetWindowText"
Delphi-Quellcode:
SetWindowText(handle, 'New Title');
oder eben mit wm_settext
Delphi-Quellcode:
var NewCaption: String;
begin
  NewCaption := 'abc';
  SendMessage(DestWindowHandle, WM_SETTEXT, 0, Integer(NewCaption));

Christian Seehase 15. Apr 2005 16:55

Re: Externes Eingabefeld füllen???
 
Moin Sir Thornberry,

Zitat:

Zitat von PSDK - SetWindowText - Remarks
To set the text of a control in another process, send the WM_SETTEXT message directly instead of calling SetWindowText.

;-)

@Lesco:

Zitat:

Zitat von Lesco
wenn immer das aktive fenster das erhalten soll wäre das aufwendiger als tasten virtuell zu drücken

Dann zeig' mir bitte mal eine Routine, die einen beliebigen Text (Gross-/Kleinschreibung, Sonderzeichen) mit Hilfe von simulierten Tastendrücken an ein Fenster schickt. Das ganze dann auch ohne dass man Gefahr läuft eventuell Funktionen des jeweiligen Programmes auszuführen, die man gar nicht aufrufen will.

Ich bitte das nicht misszuverstehen. Das soll nicht heissen, dass ich der Ansicht bin, dass es nicht geht, ich bezweifele nur, dass es weniger Aufwand macht.

TriphunEM 15. Apr 2005 18:52

Re: Externes Eingabefeld füllen???
 
Gruß. Ich denke ihr wisst ne so richtig was ich mein. jetzt erklär ich mal was ich machen will!

ich will eine kleines tool programmieren, mit dem ich seriennummern in der Zwischenablage zerflücken kann und einzeln in die entsprechende eingabefelder einer Seriennummernabfrage einfügen kann.

bsp. ich habe die seriennummer aaaa-bbbb-cccc-dddd-eeee, wir nehmen mal an es ist eine seriennummer von office 2003.

der sackgang ist immer der, das ich aaaa kopieren muss und dann per hand in das erste eingabefeld der serialabfrage einfügen muss. bbbb dann in das zweite und so weiter...und das geht mir auf den sack.

ich will also die komplette seriennummer markieren und in die Zwischenablage kopieren. Mein Programm was im hintergrund läuft zerflückt die seriennummer an hand von -.

Klick ich jetzt auf das erste eingabefeld der abfrage, will ich z.b. mit STRG+ALT+V (eigener Hotkey) mein programm mitteilen dass ich die seriennummer einfügen will. also nimmt er aaaa, und fügt sie in das erste eingabefeld ein (wo ich mit meiner maus drauf geklickt habe). dann wird aaaa- entfernt. nun klicke ich auf das zweiten eingabefeld und drücke wieder STRG+ALT+V und er schreibt bbbb in das zweiten eingabefeld. und so weiter!

Das Problem ist hier bei, wenn ich in das erste Eingabefeld KLICKE, und meinen hotkey drücke soll dort auch ein entsprechender Text eingefügt werden.

Also, jemand ne Idee wie ich das hinbekomme???

[edit=Christian Seehase]Doppelpost gelöscht. Mfg, Christian Seehase[/edit]

Christian Seehase 15. Apr 2005 23:11

Re: Externes Eingabefeld füllen???
 
Moin TriphunEM,

kann es sein, dass Du Dir nichts von dem bisher geposteten mal angesehen hast?

Falls doch: Wo hast Du jetzt noch Probleme?

TriphunEM 16. Apr 2005 09:00

Re: Externes Eingabefeld füllen???
 
hi. habs versucht mit :

NewCaption := 'abc';
SendMessage(FocusHWnd, WM_Settext,0,Integer(Pchar(NewCaption)));

aber da passiert nix. also mein programm führt mit einen globalen hotkey die funktion aus, aber eingefügt wird garnix...

SirThornberry 16. Apr 2005 09:29

Re: Externes Eingabefeld füllen???
 
also bei mir funzt es. habs einfach mal in ein OnClick des Buttons gemacht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMessage(GetFocus, WM_Settext,0,Integer(Pchar(Edit1.Text)));
end;
und resultat ist das nach dem Klick jedesmal der Button die Caption des Edit1.Text hat (weil ja der Button den Focus beim klick bekommen hat). Ich denk mal du machst irgendwo anders was falsch denn den geposteten source hab ich vorher beim explorer ausprobiert und somit von diesem die caption geändert..

Christian Seehase 16. Apr 2005 11:04

Re: Externes Eingabefeld füllen???
 
Moin TriphunEM,

das Handle, dass Du bei SendMessage angibst, muss das des Eingabefeldes sein.

TriphunEM 16. Apr 2005 13:25

Re: Externes Eingabefeld füllen???
 
ich hab das gefühl ihr versteht mich nicht ganz.

ich will nicht ein edit in MEINEM Programm füllen, sondern ein eingabfeld aus irgend einem anderen programm.
ob es die commandozeile vom totalcommander ist oder start->ausführen->öffnen.

[edit=Christian Seehase]Dreifach ( :!: ) Post gelöscht. Mfg, Christian Seehase[/edit]

SirThornberry 16. Apr 2005 13:30

Re: Externes Eingabefeld füllen???
 
ich hab das gefühl das du nicht liest was wir schreiben. ich hab ja auch geschrieben:
Zitat:

Ich denk mal du machst irgendwo anders was falsch denn den geposteten source hab ich vorher beim explorer ausprobiert und somit von diesem die caption geändert..
also hab ich nicht vom eigenen programm die caption geändert sondern vom explorer die caption der titelzeile.

TriphunEM 20. Apr 2005 12:15

Re: Externes Eingabefeld füllen???
 
äm bei mir funzt es ne weil ich ja nie weiß in welchen fenster bzw. programm der benutzer den text einfügen will.
wenn ich text in notepad einfügen will dann muss ich ja zuerst
Delphi-Quellcode:
wnd := FindWindow('notepad', nil);
aber ich weiss ja nen obs notepad ist oder ne???


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