[不顶别来]成功解决SplashScreen启动慢问题
本来不想发出来的,毕竟这些都是抢饭碗的东西.
而且我也学坏了,写了10年程序,共享了9年,今年学会私有了.
作了N久思想斗争,还是写出来.本帖没分,只有创意和灵感.
下载演示程序:
批量ENC加密1.exe
原因: .NET中的SplashScreen虽然名为启动画面,但实际显示出来还是要等N久,名不符其不实.
思路: 1 要显示图片 2 要能居中甚至置顶 3 要能自由控制,像窗体设计时那样 4 要能在主程序加载完成时自动消失
创意: 1 VB6的程序,只要只用自带控件的,而不需要另加载额外控件的,均能免运行库运行
2 VB6是VB.NET的前身,代码类似
3 加载图片并且居中或置顶只需API,可以免运行库
4 把VB6的窗体加个图片背景(加载画面),用它来启动目标程序(.NET程序),完成后自行END
实践:
1 打开VB6,新建工程,指定窗体背景图,设置窗体大小并居中显示(由于VB6默认单们是"缇",我多年不用忘了怎么算成PIX,结果算了个半天).
2 将以下代码中关键部分换成你自己的:
小结:如同拍一部电影一样,不要撑死在一个面包上,利用多种工具完成一个自己想要的效果,将解决很多高级困难.
说明: 上次有个朋友拿我的一个加解密DLL去用在收费软件上,实在是.....这次学坏了,我把里面的DLL和EXE都模糊了几次,没有授权也没法用这个DLL了,哎~被逼的.当然.你下载到的只是一个文件,是我用一个BAT和一个DLL和两个EXE打包了.目的是用户双击该文件后自动执行BAT,以参数方式启动DYLIKELOADER.EXE.
打包的好处是只需要一个文件就可以执行,但不能在同目录内与其他文件交互,看自己需要了,一般没事不要打包.
问:那么这样做出来的VB6的EXE如何用呢?
答:比如你的EXE叫ABC.EXE,用它做BCD.EXE的启动画面效果.就在命令行的情况下输入: ABC.EXE BCD.EXE
问:为什么不直接用这个VB6的EXE来启动目标程序,而使用命令参数呢?
答:如果你不想做个通用的,即用参数的,当然可以直接启动目标程序,我是为了以后不想为每个目标程序都做一次启动画面,所以用参数的方式.
问:回复该帖能有多少分?
答:恭喜你,回复本帖你将得到零分!
......................
而且我也学坏了,写了10年程序,共享了9年,今年学会私有了.
作了N久思想斗争,还是写出来.本帖没分,只有创意和灵感.
下载演示程序:
批量ENC加密1.exe
原因: .NET中的SplashScreen虽然名为启动画面,但实际显示出来还是要等N久,名不符其不实.
思路: 1 要显示图片 2 要能居中甚至置顶 3 要能自由控制,像窗体设计时那样 4 要能在主程序加载完成时自动消失
创意: 1 VB6的程序,只要只用自带控件的,而不需要另加载额外控件的,均能免运行库运行
2 VB6是VB.NET的前身,代码类似
3 加载图片并且居中或置顶只需API,可以免运行库
4 把VB6的窗体加个图片背景(加载画面),用它来启动目标程序(.NET程序),完成后自行END
实践:
1 打开VB6,新建工程,指定窗体背景图,设置窗体大小并居中显示(由于VB6默认单们是"缇",我多年不用忘了怎么算成PIX,结果算了个半天).
2 将以下代码中关键部分换成你自己的:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '由于VB6与VB.NET代码执行速度有出入,所以需要SLEEP来帮忙
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long '这个API用来使该窗体置顶(居于其他窗口之上,注意:不是月亮之上,哈哈)
Dim CMD As String '定义一个字串变量,用来接收启动参数
Private Sub Form_Load()
On Error Resume Next '不考虑程序是否会出错,如有错误仍然执行到END语句
CMD = Command '该字串变量赋值为启动参数,如: 1.exe 参数
If Trim(Command) <> "" Then '一定要,以免误操作
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3 '设置置顶
Me.Show '强制显示窗体
Me.Refresh '光强制显示是不行的,还得刷新一下
Shell CMD, vbNormalFocus '打开由参数指定的目标程序
Sleep (2000) '等待2秒,一般设置为2-5秒,看你的目标程序自己调整
End '任务完成,结束
Else
MsgBox "无效载入程序", vbOKOnly + vbCritical, "DYLIKELOADER" '如果用户非法操作,则提示
End
End If
End Sub
小结:如同拍一部电影一样,不要撑死在一个面包上,利用多种工具完成一个自己想要的效果,将解决很多高级困难.
说明: 上次有个朋友拿我的一个加解密DLL去用在收费软件上,实在是.....这次学坏了,我把里面的DLL和EXE都模糊了几次,没有授权也没法用这个DLL了,哎~被逼的.当然.你下载到的只是一个文件,是我用一个BAT和一个DLL和两个EXE打包了.目的是用户双击该文件后自动执行BAT,以参数方式启动DYLIKELOADER.EXE.
打包的好处是只需要一个文件就可以执行,但不能在同目录内与其他文件交互,看自己需要了,一般没事不要打包.
问:那么这样做出来的VB6的EXE如何用呢?
答:比如你的EXE叫ABC.EXE,用它做BCD.EXE的启动画面效果.就在命令行的情况下输入: ABC.EXE BCD.EXE
问:为什么不直接用这个VB6的EXE来启动目标程序,而使用命令参数呢?
答:如果你不想做个通用的,即用参数的,当然可以直接启动目标程序,我是为了以后不想为每个目标程序都做一次启动画面,所以用参数的方式.
问:回复该帖能有多少分?
答:恭喜你,回复本帖你将得到零分!
......................
...全文
相关推荐
Android12 SplashScreen使用案例代码下载
Android12 SplashScreen使用举例代码下载,运行效果 与 相关API使用介绍请参考博文: Android12适配指南——SplashScreen: https://xiaxl.blog.csdn.net/article/details/123522277 Android 12(API 31)引入了 SplashScreen 相关API,用于开发Android应用的启动页。 SplashScreen相关API的引入影响在Andorid 12设备上运行的所有应用。 若开发者未进行SplashScreen的适配工作,在应用冷启动和温启动时,可能会呈现两个启动页先后出现的情况(Android SplashScreen启动页 + Android应用自定义开发的启动页或引导页)。
SplashScreen with progressBar 启动画面 进度条 VB VS 2010
鉴于 很多人在寻找 如何做一个带进度条的启动屏,所以特作此例子,供大家参考。因为启动屏和主程序是异步开始的,所以需要用到代理来更新进度条。
java-splashscreen:Java启动画面
Java(Swing)启动画面 Java:8 IDE:Netbeans 8 来自以下示例的GIF:
C#实现SplashScreen
C#实现SplashScreen,不同于VB.NET,需要在MAIN中控制加载界面的顺序。
C++ GUI QT 启动画面 SplashScreen
C++ GUI QT 启动画面 SplashScreen 持续3秒


