locked
自定义壳启动遇到的顺序问题 RRS feed

  • 问题

  • 我的应用程序作为自定义壳,在启动时遇到了下面的问题:一、在应用程序的Form_Load()里面调用.setResolution()方法设置分辨率,无效果,将.setResolution()方法放到Form_Load()完成数秒钟之后,再调用,有效果;二、在在应用程序的Form_Load()里面操作系统的“网络连接”组件,报错,改成Form_Load()完成数秒钟之后,再对系统的“网络连接”组件操作,正常。
    上述两个问题,折腾了我好多天,其中的第一个问题我曾于上个月在论坛中以《自定义壳的分辨率设置问题》提出过。
    分析原因,我猜测是否是当程序作为自定义壳时,会启动得较早,以至于程序在Form_Load()里面所调用的一些系统组件都还没来得及启动并可用,从而导致出错。
    不知道各位老师在运用自定义壳的时候是否也遇到过类似问题、能否一起分析探讨一下问题产生的原因,从而找到更完美的解决办法?
    希望各位高手指点一下,谢谢!
    2009年8月20日 8:59

答案

  • shell的程序编程的时候要添加延时。
    我都是用一个小程序加载作为shell的程序,用ini文件配置。这样很方便。并且加载多个程序作为shell。

    用注册表runonce 加载shell会在资源管理器被加载前起作用(会在run之前)。
    只用使用服务类的加载才能在登录前进行加载。

    • 已建议为答案 happymy 2009年8月20日 13:38
    • 已标记为答案 雷志刚 2009年8月26日 11:04
    2009年8月20日 13:38

全部回复

  • 你是怎么启动自定义shell的,是通过RunOnce的方式吗,如果是通过RunOnce的方式,就不存在启动较早的问题,因为这个shell会在每次FBA、登陆之后才启动的。

    另外你另一个帖子里说分辨率设置有问题。
    1,你的显卡驱动组件里有设置分辨率吗,设置的话是设置的多少?这里应该可以设置最大分辨率的,如果你没有设置的话,很可能是问题的原因。
    2,据我所知,clone组件会在你clone的过程中固定分辨率,如果你添加了这个组件,并在使用过程中更换显示器的话就会出现你所说的使用时设置正确,重启后分辨率又错误的现象
    2009年8月20日 9:41
  • 谢谢楼上的啊,我试试通过RUNONECE,看看怎样。。。
    2009年8月20日 10:02
  • shell的程序编程的时候要添加延时。
    我都是用一个小程序加载作为shell的程序,用ini文件配置。这样很方便。并且加载多个程序作为shell。

    用注册表runonce 加载shell会在资源管理器被加载前起作用(会在run之前)。
    只用使用服务类的加载才能在登录前进行加载。

    • 已建议为答案 happymy 2009年8月20日 13:38
    • 已标记为答案 雷志刚 2009年8月26日 11:04
    2009年8月20日 13:38
  • 嗯,我好像明白了。我试试,有结果了后,再来汇报。谢谢!

    2009年8月21日 1:58