用Fiddle将Ruby复制到剪贴板

时间:2015-12-19 11:46:59

标签: ruby winapi clipboard fiddle

我正在尝试使用Fiddle模块将字符串复制到剪贴板,但此代码失败。

require'fiddle';
user32 = Fiddle.dlopen 'USER32.dll';
$openClipboard = Fiddle::Function.new(user32['OpenClipboard'],[Fiddle::TYPE_INT],Fiddle::TYPE_INT);
$closeClipboard = Fiddle::Function.new(user32['CloseClipboard'],[],Fiddle::TYPE_INT);
$emptyClipboard = Fiddle::Function.new(user32['EmptyClipboard'],[],Fiddle::TYPE_INT);
$setClipboardData = Fiddle::Function.new(user32['SetClipboardData'],[Fiddle::TYPE_INT,Fiddle::TYPE_VOIDP],Fiddle::TYPE_VOIDP);
class Clipboard
    def initialize
        @closed = false;
        puts "openClipboard : #{$openClipboard.call(0)}";
        puts "emptyClipboard : #{$emptyClipboard.call}";
    end
    def data=(d)
        return 'Cannot write to closed clipboard' if @closed;
        puts "setClipboardData : #{$setClipboardData.call(1,d)}"; # 1 is CF_TEXT
    end
    def close
        return 'Already closed' if @closed;
        @closed = true;
        puts "closeClipboard : #{$closeClipboard.call}";
    end
end
c = Clipboard.new
puts 'going to write';
gets;
c.data = 'red'; # Should write 'red' to the clipboard
p 'after writing to the clipboard';
gets;
c.close;
p 'closed';
gets

但它在#data =方法中失败了。 (这只是尝试翻译http://www.codeproject.com/Articles/2242/Using-the-Clipboard-Part-I-Transferring-Simple-Tex处的代码)。 如何在不使用外部gem /库的情况下做任何想法?

0 个答案:

没有答案