0

Windows 7 中出现了问题,尽管我没有尝试在其他系统中复制它。我在用:

  while Count <> SL.Count do
  begin
      SysUtils.Sleep(200);
      Clipboard.AsText := SL[Count];
      sendmessage(Appwin,WM_PASTE,0,0);
      sendmessage(Appwin,WM_PASTE,0,0);
      Keybd_event(VK_TAB, 0, 0, 0);
      inc(Count);
  end;
  SL.Free;
  Clipboard.AsText := TextoCompleto;
  EditTexto.SelectAll;

TextoCompleto 是一个字符串,只有文本/数字;

有时在使用该程序后,当我尝试在其中使用 ctr+c 时,我会在 Adob​​e Reader 最新版本 11 中收到此错误消息(我感觉它确实发生在其他程序中,但不是 100% 肯定):

"There was an error while copying to the Clipboard. An internal error occurred."

可能是什么原因?也许是因为我将剪贴板定义为文本?

4

1 回答 1

1

发生的情况是您经常访问剪贴板,以至于其他应用程序几乎没有机会访问它。当他们在您的应用程序正在写入的同时尝试访问它时,他们会收到“拒绝访问”错误。然后,一些应用程序会立即失败,并向用户显示错误消息(而不是重试几次)。

您应该减少剪贴板的锁定时间和访问频率,因为它是共享资源。

请阅读如何修复“无法打开剪贴板:拒绝访问”错误?,尤其是我引用的Chris Thornton的回答:

这可能与 Vista/Win7 如何处理剪贴板查看器通知有关。虽然它们仍然支持 XP “剪贴板查看器链”,它发送一条通知消息,必须依次重新发送给每个侦听器(如果一个应用程序未能执行此操作,则不会通知其他应用程序)。从 Vista 开始,应用程序会直接收到通知。没有什么可以阻止他们一次尝试访问剪贴板。

这意味着在 Windows Vista 中剪贴板的压力可能比在 Windows XP 中更高,应用程序在访问它时应该更加小心。

于 2013-06-04T19:32:25.870 回答