Ich habe in einem Programm folgende Proc (stammt glaub ich von Oscar )
Nim
proc copyTextToClip(sText: string): bool {.discardable.} =
let data = newWideCString(sText)
let pData = cast[LPWSTR](data[0].addr)
let iLen = data.len * 2 + 2
let hMem = GlobalAlloc(GMEM_MOVEABLE, cast[SIZE_T](iLen))
if hMem == 0: return false
let pMem = GlobalLock(hMem)
if pMem == NULL: return false
copyMem(pMem, pData, iLen)
GlobalUnlock(hMem)
OpenClipboard(0)
if SetClipboardData(CF_UNICODETEXT, hMem) == 0:
GlobalFree(hMem)
CloseClipboard()
return false
return CloseClipboard() != 0
Alles anzeigen
Kompiliere ich die Datei mit nim c File.nim funktioniert das Kopieren. Da es aber eine Anwendung mit Fenster ist brauche ich den Schalter für GUI.
Verwende ich jedoch nim c --app:gui File.nim bzw. nim c --cpu:i386 --app:gui File.nim schlägt es fehl, es wird nichts in die Zwischenablage geschrieben.
Hat jemand eine Idee, wie ich das gebacken bekomme?
EDIT:
Ein weiteres Problem: Der kopierte Inhalt ist z.B. in Office-Dokumente nicht direkt einfügbar, das geht nur über ein Textfeld.
Aber ich habe zumindest eine Lösung gefunden: cliptomania. Damit funktioniert alles, wie gewünscht.