3
我编写了一个小程序来跟踪我的剪贴板活动并使用反应香蕉和System.Clipboard将其打印到终端。从剪贴板中读取权限被拒绝
module Main where
import Reactive.Banana
import Reactive.Banana.Frameworks
import System.Clipboard
import Data.Maybe(fromJust)
main :: IO()
main = do
sources <- (,) <$> newAddHandler <*> newAddHandler
network <- setupNetwork sources
actuate network
s <- getClipboardString
loop s sources
loop s (epop, epush) = do
c <- getClipboardString
if s /= c then
snd epush [fromJust c]
else
loop s (epop, epush)
setupNetwork (epop, epush) = compile $ do
ePop <- fromAddHandler $ fst epop
ePush <- fromAddHandler $ fst epush
bStack <- accumB [""] $ (++) <$> ePush
eStack <- changes bStack
reactimate' $ fmap print <$> eStack
当我运行它时,我移动到另一个窗口(如chrome)并复制一些文本。当我这样做时,我得到Main.hs: CloseClipboard: invalid argument (Thread does not have a clipboard open.)
。我在Windows上运行这个。 任何帮助将是伟大的!
干杯
适用于Windows 10 64bit,stackage 1.3.2,ghci 8.0.1。 ''直接在ghci工作中做getClipboardString'吗? –
是的,当我在ghci中使用剪贴板功能时,一切都按预期工作。我会比较今天晚些时候的版本,看看它是不是原因, –
@ja。你能给我你在终端上输入的命令吗?我的版本与您的版本相同,但仍然无效。 –