AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Text an ein anderes Fenster schicken.
Thema durchsuchen
Ansicht
Themen-Optionen

Text an ein anderes Fenster schicken.

Ein Thema von glb · begonnen am 25. Sep 2004 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
glb

Registriert seit: 16. Sep 2004
6 Beiträge
 
#1

Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 14:43
Hallo Leute,

gibt es eine Möglichkeit Text an eine andere Anwendung(z. Bsp Notepad) zu schicken?
Ich habe bereits folgende Möglichkeiten probiert:
SendMessage(Wnd, WM_Settext,0,Integer(Pchar(myString))); Das tut soweit aber leider wird bereits vorhandener Text gelöscht

dann habe ich noch
Delphi-Quellcode:
edit1.SelectAll;
edit1.CopyToClipboard;
PostMessage(Wnd, wm_Paste, 0,0);
probiert. Das tut ... aber nicht in allen Anwendungen und der vorherige Inhalt der Zwischenablage wird zerstört.

als letztes habe ich

PostMessage(Wnd, wm_KeyDown, ORD('A'),0); probiert. Das hat in allen Anwendungen funktioniert. Aber leider kann man ja immer nur ein
Zeichen schicken ...
Kennst ihr eine Möglichkeit Strings zu schicken oder habt evtl eine Funktion, welche einen
PostMessage(Wnd, wm_KeyDown, ORD('A'),0) kapselt und der man einen String mitgeben kann?

Danke für die Mühe!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 14:47
Hol dir erst den Text mit MSDN-Library durchsuchenwm_gettexx, häng deinen an und dann schickst du ihn wieder mit MSDN-Library durchsuchenwm_settetxt an das Edit.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 14:58
Such einfach mal überall (in der DP, auf deiner Platte, Google, ...) nach SendKeys. Bei Delphi6 ist so eine Unit dabei, und ich glaube, dass wir dieses Thema in der DP schonmal hatten... Hier im Forum suchenSendKeys
  Mit Zitat antworten Zitat
glb

Registriert seit: 16. Sep 2004
6 Beiträge
 
#4

Re: Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 15:00
Hi,

danke für die schnelle Antwort.

Ich möchte den Text aber nicht nur anhängen. Er soll einfach da eingefügt werden, wo gerade der Cursor steht. Unabhänig, ob der Cursor in einm Edit-Feld steht, in einem langen Brief im Word, Notepad etc.

bye
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 15:03
SendKeys emuliert Tastendrücke, also müsste das so gehen wie du das willst.
  Mit Zitat antworten Zitat
glb

Registriert seit: 16. Sep 2004
6 Beiträge
 
#6

Re: Text an ein anderes Fenster schicken.

  Alt 25. Sep 2004, 15:32
Ich hab' mir mal SendKeys besorgt(SRUtils).
Hmmmm .... wohin sendet SendKeys die Daten?
In der Source steht
Keybd_Event(Key, 0, KEYEVENTF_KEYUP, 0);

Wieso muss man kein handle angeben. Schickt Keybd_Event die Tasten an das aktive Fenster?

Wie dem auch sei, es funktioniert nicht
Jetzt hab' ich mir mal meinen eigenen SendKey gebastelt:

Delphi-Quellcode:
function SendKey (Handle : HWnd; Text : PChar) : Boolean;
var i : Integer;
    s : String;
begin
s := Text;
for i := 0 to length(s) -1 do
begin
  PostMessage(Handle, wm_KeyDown, Ord((Text[i])),0);
end;

end;
Es tut ... fast bis auf die Tatsache, daß im Notepad nicht "Hallo Du da" ankommt, sondern
h1/ d 41
Was ist den nun falsch?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Text an ein anderes Fenster schicken.

  Alt 26. Sep 2004, 00:37
Moin glb,

auf jeden KeyDown muss auch ein KeyUp erfolgen.
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
glb

Registriert seit: 16. Sep 2004
6 Beiträge
 
#8

Re: Text an ein anderes Fenster schicken.

  Alt 26. Sep 2004, 13:10
Hallo,

ich habe "meinen" SendKey nun etwas erweitert...

Delphi-Quellcode:
function SendKey (Handle : HWnd; Text : PChar) : Boolean;
var i : Integer;
    s : String;
    c : Char;
    ret : word;
    flag : DWORD;
    hByte : Byte;
    vKey : Byte;
begin
s := Text;

for i := 0 to length(s) -1 do
begin
  c := text[i];
  ret := VkKeyScan(c);
  hByte := HiByte(ret);
  vKey := LoByte(ret);
  if hByte = 0 then
  begin
    PostMessage(Handle, wm_Keydown, 0,0);
    PostMessage(Handle, wm_KeyUP , VKey ,0);
  end
  else
  begin
    PostMessage(Handle, wm_KeyDown, 0,xxx); // xxx= hier muss nun noch die Shift-Taste
    PostMessage(Handle, wm_KeyUP , VKey ,xxx); // "mitgedrüpckt werden.. aber wie???
  end;
end;
Ich möchte/muss PostMessage verwenden, da ich den Text an ein vorher ermitteltes Fenster schicken will.

mit keybd_event würde es ja so gehen:

Delphi-Quellcode:
keybd_event(VK_SHIFT, 1, 0, 0);
keybd_event(VkKeyScan('L'), 1, 0, 0);
keybd_event(VkKeyScan('L'), 1, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 1, KEYEVENTF_KEYUP, 0);
wie bekomme ich nun die Shift-taste mit PostMessage gedrückt?
HELP!!!!
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:09 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