WM6.1 把程序显示到文件夹中

WM6.1 把程序显示到文件夹中,第1张

1。资源管理器——我的设备——Windows——“开始”菜单——程序

2。复制或剪切“某个应用”(如果你的那个应用在它自带的文件夹里,可能移动到别的地方打不开,所以整个所在文件夹的复制或剪切)

3。资源管理器——我的设备——Windows——“开始”菜单——程序——游戏

粘贴

这个问题很难用简单办法解释 因为问题的原因太多了!

出现这个现象有方面的,一是硬件,二是软件,这就有多方面的问题了。

一:先说说硬件:

一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。

二、如果都没有,那就从软件方面排除故障了。

先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要 *** 作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的 *** 作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的 *** 作系统中,如Windows等,这个 *** 作会马上被系统的保护机制捕获,其结果就是由 *** 作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于 *** 作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。

在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向 *** 作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写 *** 作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被 *** 作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的 *** 作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。

首先建议:

1、 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致 *** 作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

2、 更新 *** 作系统,让 *** 作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候 *** 作系统本身也会有BUG,要注意安装官方发行的升级程序。

3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。

4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs

手机的程序在安装后会在菜单中显示快捷方式的。

如果要找某程序的安装目录,一般是在\ProgramFiles文件夹内,有程序安装的文件夹。

系统自带程序,是在根目录\Windows文件夹内。(如要修改,请谨慎)

以上所述 *** 作需要有资源管理器。

WM_CLOSE和WM_DESTROY

WM_DESTROY 是关闭程序

WM_CLOSE 是关闭窗口

WM_CLOSE和WM_DESTROY同属窗口消。两者先后执行顺序是WM_CLOSE、WM_DESTROY

但需要注意的是MFC窗口默认取消按钮函数OnCancel()是不会触发WM_CLOSE消息,只触发WM_DESTROY。

WM_CLOSE:

在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSE。DefWindowProc对WM_CLOSE的处理是调用DestroyWindow。当然,可以不让DefWindowProc处理,而是自己处理,例如询问用户是否保存更改等。如果用户选择“取消“,忽略此消息,那么程序照常运行;如果用户确认要退出,就调用DestroyWindow。

WM_DESTROY:

DestroyWindow完成窗口的清理工作,最后像窗口过程发送WM_DESTROY。对于WM_DESTROY,DefWindowProc不会处理。也就是说,如果不处理这个消息,虽然窗口已经销毁,但进程并不会结束。一般处理WM_DESTROY时都是释放资源(例如申请的内存等),然后调用PostQuitMessage。

另外还有:WM_QUIT:是关闭消息环

PostQuitMessage会发送WM_QUIT给消息队列。注意,WM_QUIT永远不会到达窗口过程,因为GetMessage得到WM_QUIT后就会返回FALSE,从而结束消息循环,最后进程结束,程序退出。

假设使用者执行HELLOWINexe,并且使用者最终单击了 Close按钮,或者假设用键盘或鼠标从系统菜单中选择了Close, DefWindowProc处理这一键盘或者鼠标输入,在检测到使用者选择了Close选项之后,它给窗口消息处理程序发送一条WM_SYSCOMMAND消息。WndProc将这个消息传给DefWindowProc。DefWindowProc给窗口消息处理程序发送一条WM_CLOSE消息来响应之。WndProc再次将它传给DefWindowProc。DestroyWindow呼叫DestroyWindow来响应这条WM_CLOSE消息。DestroyWindow导致Windows给窗口消息处理程序发送一条WM_DESTROY消息。WndProc再呼叫PostQuitMessage,将一条WM_QUIT消息放入消息队列中,以此来响应此消息。这个消息导致WinMain中的消息循环终止,然后程序结束。

测试环境:window10 版本1909 ,Microsoft Visual Studio Professional 2017 版本15929

WM_CLOSE:关闭应用程序窗口。

WM_DESTROY:关闭应用程序。

WM_QUIT:关闭消息循环。

当我们想要退出一个程序时,我们可以手动发送消息、也可以点击程序窗口右上角的x按钮来退出。

窗口右上角的x会默认发送一个 WM_CLOSE 消息,这在里我们通常有自己的处理,比如提示用户是否真正的想退出、提示是否保存更改等判断信息,当用户确认退出的时候,我们续集放行让 DefWindowProc(); 函数继续处理 WM_CLOSE,如果用户点击了取消不想退出,我们就直接 retrun; ,这时不能再让DefWindowProc() 去处理消息了。

当我们收到 WM_CLOSE消息并让 DefWindowProc(); 处理时,DefWindowProc会 调用一个 DestroyWindow(); 函数,这个函数会发送WM_DESTROY消息,当我们捕获到这个消息的时候,通常是释放各种资源,释放完后手动调用 PostQuitMessage(0); ,如果不调用这个函数,虽然窗口已经不存在了,但是进程不会结束。

PostQuitMessage(0) 会发送一个WM_QUIT给消息队列,GetMessage 得到WM_QUIT后就会返回FALSE,从而结束消息循环,不会走消息转换 TranslateMessage(&msg); 和消息分发 DispatchMessage(&msg);,所以我们在消息回调函数中是取不到 WM_QUIT消息的。

我用的IDE为vs2012,需要将项目的字符集改为多字符集。上面的例子中,我们创建了一个500500大小的窗口,在开始创建的时候,会默认发送一个 WM_CREATE 消息,我们在按下ESC键时,手动发送一个WM_CLOSE消息,注意SendMessage和PostMessage的区别;

当我们点击窗口右上角的x时,会自动发送一个WM_CLOSE消息; 接收消息顺序为 WM_CLOSE ->WM_DESTROY。

讲解完毕!!如有不对的地方,烦请大神指出!!

以上就是关于WM6.1 把程序显示到文件夹中全部的内容,包括:WM6.1 把程序显示到文件夹中、为什么我的程序没有响应WM、如何查找wm手机中的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9771856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存