Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 防止整个屏幕更新_Windows_Delphi_Winapi - Fatal编程技术网

Windows 防止整个屏幕更新

Windows 防止整个屏幕更新,windows,delphi,winapi,Windows,Delphi,Winapi,编辑1:实际上,我只是想避免关闭Word文档并打开另一个文档时出现闪烁。但现在看来,这种方法是不可行的 您好,是否可以阻止整个屏幕(不仅仅是桌面)更新?这个问题源于。我想做的是,在我的Word插件中,当我关闭Word文档并打开另一个文档时,锁定整个屏幕更新,并在完成后重新启用更新 一个想法是: 获取整个屏幕的图像(如何获取?) 显示最顶部的窗口,以显示步骤1中捕获的屏幕图像,覆盖整个屏幕 完成我的工作,完成后关闭最上面的窗口 可能吗?或者你还有其他更好的想法吗?谢谢 要防止屏幕更新: SendM

编辑1:实际上,我只是想避免关闭Word文档并打开另一个文档时出现闪烁。但现在看来,这种方法是不可行的

您好,是否可以阻止整个屏幕(不仅仅是桌面)更新?这个问题源于。我想做的是,在我的Word插件中,当我关闭Word文档并打开另一个文档时,锁定整个屏幕更新,并在完成后重新启用更新

一个想法是:

  • 获取整个屏幕的图像(如何获取?)
  • 显示最顶部的窗口,以显示步骤1中捕获的屏幕图像,覆盖整个屏幕
  • 完成我的工作,完成后关闭最上面的窗口

  • 可能吗?或者你还有其他更好的想法吗?谢谢

    要防止屏幕更新:

    SendMessage(GetDesktopWindow, WM_SETREDRAW, 0, 0);
    
    SendMessage(GetDesktopWindow, WM_SETREDRAW, 1, 0);
    
    要重新启用屏幕更新,请执行以下操作:

    SendMessage(GetDesktopWindow, WM_SETREDRAW, 0, 0);
    
    SendMessage(GetDesktopWindow, WM_SETREDRAW, 1, 0);
    
    不要

    任何应用程序、插件或其他非常好的代码都不会如此特殊,以至于侵入用户拥有的用户界面——即使是在很短的时间内

    ()在这方面有一些非常好的帖子,从、到和其他

    生活在一个多线程的世界中,意味着你应该期望你的用户会同时做很多事情

    为了“让它看起来漂亮”而锁定任何东西——即使是在很短的时间内——是完全不允许的

    您的请求只是进入可怕的系统模式对话框“您确定要对您的计算机做这件坏事吗?”的第一步,该对话框有按钮
    Yes
    No
    ,其中
    Yes
    是默认按钮,用户在键入长篇大论时,按下空格键


    --jeroen

    我相信您确实意识到这是一个非常糟糕的主意。警告一句:应用程序的此类行为(更糟糕的是,文字处理应用程序的附加组件)可能被视为边缘恶意软件(“劫持其他应用程序和/或窗口管理器的控制?检查。阻止用户操作其他应用程序?检查”)。我相信你的意图是纯粹的,但当我作为一个用户第一次遇到这种情况时,我会极度偏执(“我安装了这个外接程序,现在它阻止屏幕更新,它想对我隐藏什么?!”),除非转换确实是你的外接程序的重点。首先打开新文档。一旦出现,请关闭旧文档。根本不需要锁定屏幕。不管这个插件是什么,我都不希望它靠近我的屏幕computer@Edwin:你的意思是它应该只有一小部分秒。但是,如果有任何问题(在自动化中,由于代码之外的原因可能发生),你已经挂上了用户的计算机。那么,所有顶级应用程序的应用程序又是什么?如果你的外接程序在第一个和第二个消息之间崩溃了怎么办?(当然,你的代码从来不会崩溃。如果Word崩溃了怎么办,带上你的外接程序?)这需要注销、重新启动,或者采取更激烈的措施来修复吗?(不是拖拉,只是好奇)谢谢glob,它似乎可以禁用桌面的绘制,但会导致错误,并且无法使用您提供的第二行代码恢复绘制。也许这种方法会导致不可预测的问题…@Edwin也许整个误入歧途的想法会导致非常可预测的问题…@David,你是对的,我一直在绞尽脑汁寻找解决问题的方法(在同一Word窗口中重新打开Word文档),所以这可能不是一个好主意…+1“是的,让我们暂时禁用UI——Word遇到问题,需要关闭。给您带来的不便,我们深表歉意。“@Edwin:UI已被禁用,本应重新启用它的进程已不存在。现在该怎么办?(不要说“Windows用户习惯于重新启动”,这已经不是1998年了)