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 string in ein beliebiges fenster schreiben (https://www.delphipraxis.net/40577-string-ein-beliebiges-fenster-schreiben.html)

fadz 17. Feb 2005 20:49


string in ein beliebiges fenster schreiben
 
hi,
ich habe zwar schon gesucht aber noch nichts gefunden was ich brauche :(
folgende situation:
ich habe einen string, also beispiel 'hallo welt'
diesen will ich z.b. wenn das editor fenstern aktiv ist darein kopieren lassen,
wie sieht eine prozedur für soetwas aus ?
thx für eure hilfe

Ultimator 17. Feb 2005 20:52

Re: string in ein beliebiges fenster schreiben
 
Hol dir das Handle vom Control, in das du den Text schreiben willst, und schicke ihn per SendMessage dorthin ;-)

Luckie 17. Feb 2005 20:52

Re: string in ein beliebiges fenster schreiben
 
Das ist nicht trivial. Wir haben darüber schon einen langen Thread. Such mal nach Beiträgen von FriFra. Hab den Thread gefunden: http://www.delphipraxis.net/internal...594&highlight=

fadz 17. Feb 2005 21:07

Re: string in ein beliebiges fenster schreiben
 
ich will ja nix ersetzten ;)
will ja komplett neuschreiben lassen ;) lol

fadz 17. Feb 2005 21:13

Re: string in ein beliebiges fenster schreiben
 
manchmal frage ich mich echt ob ich dumm bin??!? ;) lool
ich habs jetzt irgendwie ganz simpel gepackt,
THX

malo 17. Feb 2005 21:14

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von fadz
ich will ja nix ersetzten ;)
will ja komplett neuschreiben lassen ;) lol

Wenn du komplett neuschreiben willst, ersetzt du halt alles (evtl. einen leeren string) ;)

fadz 17. Feb 2005 21:26

Re: string in ein beliebiges fenster schreiben
 
obwohl, wo isn hier der kleine fehler? ;)

Delphi-Quellcode:
var
FocusHWnd: HWND;
WndText: String;
begin
wndtext:='hallo';
FocusHWnd := GetFocus;

SendMessage(FocusHWnd, WM_SETTEXT, Length(WndText), LPARAM(PChar(WndText)));

malo 17. Feb 2005 21:30

Re: string in ein beliebiges fenster schreiben
 
Was für ein Fehler? Gibt es eine Fehlermeldung oder wie? Leider sind die Glaskugeln der ganzen DP bei einem stromausfall kaputt gegangen ;)

fadz 17. Feb 2005 21:32

Re: string in ein beliebiges fenster schreiben
 
nee, aber es funktioniert nicht ;)
er schreibt keinen text,
ich mache das folgendermassen,
ich lasse delphi in z.b. notepad klicken, damit er da eigentlich schreiben könnte, aber dann macht er nichts ...

es passiert einfach nichts :(

Sprint 17. Feb 2005 22:03

Re: string in ein beliebiges fenster schreiben
 
Die Funktion GetFocus funktioniert nur im eigenen Prozess. Also wirst du nie mit GetFocus das Handle von Notepad bekommen.

TStringlist 18. Feb 2005 00:06

Re: string in ein beliebiges fenster schreiben
 
Mit "WindowFromPoint" statt "GetFocus" und 'ner zeitverzögerten Auslösung davor (z.B. per sleep, um mit der Maus über das Control zu kommen) könnte es aber klappen.

Sprint 18. Feb 2005 00:27

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von TStringlist
Mit "WindowFromPoint" statt "GetFocus" und 'ner zeitverzögerten Auslösung davor (z.B. per sleep, um mit der Maus über das Control zu kommen) könnte es aber klappen.

Einfachere Lösung

fadz 18. Feb 2005 12:52

Re: string in ein beliebiges fenster schreiben
 
hmm, selbst damit will es einfach nicht ?!? :(
könnt ihr mir bitte noch nen bisl helfen ? ;) thx

Sprint 18. Feb 2005 13:53

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von fadz
könnt ihr mir bitte noch nen bisl helfen ?

Das funktioniert einwandfrei. Der Fehler muss irgendwo bei dir liegen. Poste mal den Quelltext, der bei dir nicht läuft. Dann kann man auch besser sagen, was falsch gelaufen ist.

fadz 18. Feb 2005 14:25

Re: string in ein beliebiges fenster schreiben
 
Delphi-Quellcode:
procedure tform1.test;
var
FocusHWnd: HWND;
AppHWnd: HWND;
ThreadId: DWORD;
WndText: String;
begin
FocusHWnd := GetFocus;
  if not IsWindow(FocusHWnd) then
  begin
    AppHWnd := GetForegroundWindow;
    if AppHWnd <> Self.Handle then
    begin
      ThreadId := GetWindowThreadProcessId(AppHWnd, nil);
      if ThreadId <> 0 then
        if AttachThreadInput(GetCurrentThreadId, ThreadId, True) then
        begin
          FocusHWnd := GetFocus;
          AttachThreadInput(GetCurrentThreadId, ThreadId, False);
        end;
    end;
  end;
wndtext:='hallo';
//FocusHWnd := GetForegroundWindow;
SendMessage(FocusHWnd, WM_SETTEXT, Length(WndText), LPARAM(PChar(WndText)));
end;

Luckie 18. Feb 2005 14:53

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von fadz
ich will ja nix ersetzten ;)
will ja komplett neuschreiben lassen ;) lol

Ja und? das Prinzip ist doch das gleiche. :roll:

fadz 18. Feb 2005 17:17

Re: string in ein beliebiges fenster schreiben
 
jo stimmt, aber mein code geht ja irgendwie trotzdem net :( ...

fadz 21. Feb 2005 14:04

Re: string in ein beliebiges fenster schreiben
 
ich pushe grade ma :(

kann mir keiner helfen den fehler im code zu finden ?

Neutral General 21. Feb 2005 14:38

Re: string in ein beliebiges fenster schreiben
 
Prüf mal ob du überhaupt ein Handle hast !
Wenn du ein Handle hast dann hast du schon einen Großteil geschafft.

fadz 24. Feb 2005 14:44

Re: string in ein beliebiges fenster schreiben
 
hi, wie überprüft man denn ob man ein handel hat ?!?

toms 24. Feb 2005 14:49

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von fadz
hi, wie überprüft man denn ob man ein handel hat ?!?

If IsWindow(handle) then
// Du hast ein Handle

fadz 24. Feb 2005 16:48

Re: string in ein beliebiges fenster schreiben
 
ahh ok, habs grade ma getestet, ich habe also ein handel !!! was soll ich jetzt machen ?

Ultimator 24. Feb 2005 16:51

Re: string in ein beliebiges fenster schreiben
 
Vielleicht das:
Entweder
Delphi-Quellcode:
SendMessage(FocusHWnd, WM_SETTEXT, Length(WndText), LPARAM(PChar(WndText)));
oder MSDN-Library durchsuchenSetWindowText

fadz 24. Feb 2005 16:58

Re: string in ein beliebiges fenster schreiben
 
hab beides versucht, hier beide versuceh kombiniert:
Delphi-Quellcode:
...
wndtext:='hallo';
SendMessage(FocusHWnd, WM_SETTEXT, Length(WndText), LPARAM(PChar(WndText)));
SetWindowText(FocusHWnd,PChar(WndText));
aber bei keinem der beiden funktioniert es ...

sECuRE 24. Feb 2005 17:22

Re: string in ein beliebiges fenster schreiben
 
Hi,

bist du sicher, dass die Anwendung in dem moment wirklich die aktive ist? Ich würde den Code erstmal in einen Timer setzen, damit ich genug Zeit habe, die Anwendung zu wechseln.. Sonst ist ja deine Anwendung zwangsläufig die, die dein Code findet.

cu

fadz 25. Feb 2005 13:28

Re: string in ein beliebiges fenster schreiben
 
ok habs auch damit getestet, aber nichts passiert :(

toms 26. Feb 2005 20:12

Re: string in ein beliebiges fenster schreiben
 
Zitat:

Zitat von fadz
ok habs auch damit getestet, aber nichts passiert :(

Poste mal etwas Code. Sonst kann niemand sagen, was falsch am Code ist.


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