Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240904 (2340)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Texte ins Clipboard
Werner Wesseler
| Datum:28.08.02 00:12 |
Hallo Community. Ich habe ein Richtext-Edit und möchte den ganzen Text kopieren. Per WM_Copy kann ich aber höchstens 32 KB kopieren, obwohl ich die Textgrösse mit EM_ExLimitText heraufgesetzt habe. Ein großer Text wird ja auch korrekt angezeigt, nur nie komplet ins Clipboard kopieret. Weiß jemand, wie das klappen könnte ? (Werner)
Horst Horn
| Datum:28.08.02 13:01 (info@web-treffpunkt.de) |
Hallo Werner Hier ist ein Quelltext von Thomas Hölzer. Der dürfte Dein Problem begeben: ' PRFellow-Vorlage ' Autor: Thomas Hölzer,1999 ' Text(!)-Daten per API in die Zwischenablage kopieren Def OpenClipboard(1) !"USER32","OpenClipboard" Def CloseClipBoard(0) !"USER32","CloseClipboard" Def SetClipboardData(2) !"USER32","SetClipboardData" Proc CopyTextToClip Parameters pointer& If Neq(OpenClipBoard(GetActiveWindow()),0) SetClipBoardData(1,pointer&) CloseClipBoard() EndIf EndProc ' Beispiel ''Cls ''Declare buf# ''Dim buf#,1024 ' das wird wohl reichen ''ReadText buf#,"C:\AUTOEXEC.BAT" ''CopyTextToClip buf# ''Dispose buf# ''WinExec("CLIPBRD.EXE",1) ''WaitInput CU horst
Frank Abbing
| Datum:01.09.02 15:37 |
Hallo, bin auch gerade dabei, größere Texte aus einem Richedit ins Clipboard zu kopieren und hab' das gleiche Problem. Horst, dein (oder Thomas's) Quellcode funktioniert aber unter WindowsXP definitiv nicht... SetClipboardData(...) liefert immer 0 zurück, Fehler ist ein falscher Handle-Typ (Error 6). Ein Blick in die WinHlp genügt, der erforderliche Speicher muß vom Typ "GMEM_MOVEABLE or GMEM_DDESHARE" (via GlobalAlloc) sein. Erfüllt Profan's Dim-Befehl diese Voraussetzungen? Anscheinend nicht (Roland?). Ich hab' momentan das Problem so gelöst:
    Def GlobalAlloc(2) !"KERNEL32","GlobalAlloc"
    Def GlobalLock(1) !"KERNEL32","GlobalLock"

    x&=SendMessage(richedit&,$0E,0,0)
    alloc&=GlobalAlloc($2042,x&+16)
    mem&=GlobalLock(alloc&)
    SendMessage(richedit&,$000D,x&+1,mem&)
    If Neq(OpenClipboard(GetActiveWindow()),0)
      EmptyClipboard()
      SetClipboardData(1,mem&)
      CloseClipBoard()
      SetFocus(%hwnd)
    EndIf
SetClipboardData(...) arbeitet jetzt korrekt, der Quellcode ebenfalls. Der Speicher braucht von uns auch nicht wieder freigegeben zu werden. Der Text wird jetzt ins Clipboard kopiert, allerdings immer noch maximal 32 KB... grrrr ... Hat jemand eine Idee? Gruß, Frank
Frank Abbing
| Datum:02.09.02 16:41 |
Hallo, ok, hab' die 32 KB Grenze jetzt überwunden, es lag an Paste... Das Paste meines Editors kann wohl nicht mehr kopieren als maximal 32 KB Text...grrmmpf... Ändert aber nichts daran, das die PrFellow-Vorlage unter Windows XP nicht funktioniert! Roland: Welchen Speichertyp allokiert Dim denn jetzt ? Gruß, Frank
Sven Schmidts
| Datum: 03.09.02 08:37 (schmidts@flat2serv.de) |
> Roland: Welchen Speichertyp allokiert Dim denn jetzt ? Den DDR-RAM ;) Sven

| Zurück zur Übersicht