【问题标题】:How to place ENML on Windows clipboard so that pasting into Evernote works如何将 ENML 放置在 Windows 剪贴板上以便粘贴到 Evernote 中
【发布时间】:2019-03-04 01:08:49
【问题描述】:

当 Windows 剪贴板有从 Evernote 复制的内容时,它会包含一个格式类型为“ENML 格式”的数据对象。例如,如果我从 Evernote Windows 版中的笔记中复制“Chirp Chirp”,我会在剪贴板上看到以下与“ENML 格式”相关的数据:

<en-clipboard Cookie="6479053"><en-note>Chirp Chirp</en-note></en-clipboard>

我有一个 C# Windows 应用程序,我想在其中生成待办事项列表项并将它们放在 Windows 剪贴板上,以便可以使用复选框将它们粘贴到 Evernote 中。 (印象笔记使用的复选框元素在 HTML 中不存在,所以我不能只将 HTML 放在剪贴板上——它必须是 ENML。)

生成 ENML 并将其放在剪贴板上很容易,但我无法让 Evernote 接受它。如果 Evernote 识别出“Cookie”编号,它似乎只会接受剪贴板中的 ENML。作为一个实验,我尝试重用我从 Evernote 中发生的复制操作中捕获的“Cookie”值,并且有了这个神奇的值,粘贴操作就成功了。但是,在现实生活中,我无法获得 Evernote 将接受的“Cookie”编号。

如果我关闭“Cookie”属性或输入随机值,粘贴到 Evernote 会失败。只有当我将“Cookie”属性设置为 Evernote 最近生成的数字时,我才能让 Evernote 粘贴我放置在剪贴板上的 ENML。但是,如果我随后退出 Evernote 并重新启动它,我粘贴的内容将再次被拒绝——我之前使用的幻数不再被接受。

我尝试不使用 &lt;en-clipboard&gt; 元素,只粘贴以 &lt;en-note&gt; 元素开头的 ENML,但 Evernote 会默默拒绝剪贴板负载。

有没有什么方法可以从 Evernote 外部将 ENML 放到剪贴板上,以便将格式化的内容粘贴到 Evernote 中? “Cookie”属性有什么用途?

【问题讨论】:

    标签: c# windows clipboard evernote


    【解决方案1】:

    事实证明,Evernote 并非旨在接受来自外部应用程序的 ENML。 “Cookie”属性用于确认“ENML 格式”有效负载是由 Evernote 生成的——因此不需要针对 ENML DTD 进行验证。理想情况下,这意味着符合 DTD 的 ENML 也将被接受,假设它是有效的。但是,有一些问题 22:Evernote 拒绝“ENML 格式”剪贴板有效负载,如果它没有根元素......但该元素未在 DTD 中定义。 (这里是Evernote forum post,工作人员确认不支持从另一个应用程序粘贴 ENML。)

    但是... 我确实找到了解决方法。我能够粘贴包含来自 ENML 的待办事项复选框样式的 HTML,然后 Evernote 将其翻译成一个复选框,这最终是我想要的。我希望能够从另一个 Windows 应用程序中粘贴正确的 ENML,但能够在 HTML 中定义复选框并在粘贴时显示它们是可以接受的解决方法,就我的目的而言。

    这是一个显示在剪贴板负载中的待办事项的 HTML 示例:

    <div><span style="-en-todo:true;">[]</span>Daily To-Do Item</div>
    

    为了说明这一点,下面是整个 HTML 剪贴板有效负载的示例,包括 Windows 剪贴板上 HTML 数据标准的荒谬标头:

    Version:0.9
    StartHTML:000000149
    EndHTML:000000720
    StartFragment:000000251
    EndFragment:000000682
    StartSelection:000000251
    EndSelection:000000682
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <body>
    <!--StartFragment-->
    <div style="-en-clipboard:true;"><span style="font-weight: bold;">Sunday, March 3</span></div><div>Example of a daily reminder</div><div><span style="-en-todo:true;">[]</span>Daily To-Do Item</div><div><span style="font-weight: bold;">Monday, March 4</span></div><div>Example of a daily reminder</div><div><span style="-en-todo:true;">[]</span>Daily To-Do Item</div><div><span style="-en-todo:true;">[]</span>Weekday Item</div>
    <!--EndFragment-->
    </body>
    </html>
    

    如果 Evernote 发生变化,使得符合 DTD 的 ENML 可以由另一个应用程序生成,放置在 Windows 剪贴板上,并粘贴到现有的 Evernote 笔记中,我很想听听 - 并且很乐意更改接受的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 2018-03-09
      • 1970-01-01
      • 2023-04-08
      • 2010-09-24
      • 2017-12-23
      • 2012-04-16
      • 1970-01-01
      相关资源
      最近更新 更多