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 Clipboard Copy Paste (https://www.delphipraxis.net/79922-clipboard-copy-paste.html)

nezumi 31. Okt 2006 09:53


Clipboard Copy Paste
 
Guten Tag,

leider schon wieder ein Problem:
Ich versuche einen string zu einer anderen Anwendung zu schicken, eine Aktion auszuführen und dann den Text in der Anwendung in mein Programm zu kopieren. Leider klappts nicht.

Um dem Fehler auf den Grund zu gehen, hab ich das Ganze mit einem stark vereinfachten Prog versucht:
- Es soll der erste Eintrag meiner Listbox in ein geöffnetes Notepad kopiert werden.
- Dann soll der gesamte Notepad Inhalt kopiert...
- ...und in ein Memo meines Programms geschrieben werden:

Delphi-Quellcode:
uses
  ...shellapi, sndkey32, Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
var
  h_anwendung, h_fenster: HWND;
  i  : Integer;
  s, s2   : string;
begin
  i2 := 0;
  s2 := '';

  h_anwendung := FindWindow('notepad',nil);
  if h_anwendung <> 0 then begin
  h_fenster := FindWindowEx(h_anwendung,0,'Edit',nil);
  s := Listbox1.Items[2];
  For i := 1 to Length(s) do begin
  SendMessage(h_fenster, WM_CHAR, Word(s[i]), 0) end;
  BringWindowToTop(h_anwendung);

  clipboard.open;

  SendKeys('^a',true);
  SendKeys('^c',true);
  sleep(50);
  s2 := Clipboard.Astext;

  clipboard.close;

  Memo1.Lines.Add(s2);

  end;
  end;
end.
Das Einfügen in Notepad klappt, auch das Markieren des gesamten Inhalts. In meinem Memo-fenster kommt der aber nicht an, sondern irgendwas, was vorher schon in der Zwischenablage war (oder gar nichts). Was mache ich falsch?

Luckie 31. Okt 2006 09:57

Re: Clipboard Copy Paste
 
Nur mal ein paar Denkanstösse: MSDN-Library durchsuchenWM_SETTEXT und MSDN-Library durchsuchenWM_GETTEXT.

nezumi 31. Okt 2006 10:04

Re: Clipboard Copy Paste
 
Zitat:

Zitat von Luckie
Nur mal ein paar Denkanstösse: MSDN-Library durchsuchenWM_SETTEXT und MSDN-Library durchsuchenWM_GETTEXT.

Danke für den Hinweis.
Wie gesagt ist das nur ein Teil aus einem größeren Programm, welches ich nicht grundlegend ändern will. Da ich Copy/Paste auch mehrfach verwenden möchte, interessiert mich auch grundsätzlich, warum das so nicht geht...

Gruß,


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