这是我正在尝试做的完整设置:我们在网页上有一个ActiveX控件(呃),我们想将它的视图保存到图像,并将其发布到服务器。由于这个ActiveX控件不直接支持,我们必须采用稍微更圆的方法。
平台:IE8,Windows 7,UAC / IE保护模式关闭。
此方法向ActiveX控件发送一条消息,将其当前视图复制到剪贴板。完成后,我们通过协议处理程序启动应用程序(例如app:clipboard / blah / blah)。该程序应该从剪贴板中获取数据,使其格式正确(jpeg),并将其发布到URL。
我用于测试的代码是:
var dataObject = Clipboard.GetDataObject();
Trace.WriteLine("Data formats on clipboard: " + dataObject.GetFormats().Aggregate(" ",(s,v)=>s+v+ " "));
foreach (var fmt in dataObject.GetFormats())
{
Trace.WriteLine("GetDataPresent on " + fmt + ": " + dataObject.GetDataPresent(fmt));
Trace.WriteLine("GetData on " + fmt +": " + !(dataObject.GetData(fmt,true)==null));
}
从处理程序运行时会产生以下输出:
Data formats on clipboard: EnhancedMetafile MetaFilePict
GetDataPresent on EnhancedMetafile: True
GetData on EnhancedMetafile is null: True
GetDataPresent on MetaFilePict: True
GetData on MetaFilePict is null: True
现在,我绝对不知道为什么GetDataPresent返回true,然后GetData在相同的格式字符串上返回null。为了获得额外的奖励,我知道数据正在进入剪贴板,因为我可以转身进入Paint.Net并粘贴,这就是我的形象。
任何一个遇到类似的东西?
答案 0 :(得分:1)
我不知道托管API发生了什么。我最后只是为函数调用了WinAPI。