本来不想发出来的,毕竟这些都是抢饭碗的东西.
而且我也学坏了,写了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来启动目标程序,而使用命令参数呢?
答:如果你不想做个通用的,即用参数的,当然可以直接启动目标程序,我是为了以后不想为每个目标程序都做一次启动画面,所以用参数的方式.
问:回复该帖能有多少分?
答:恭喜你,回复本帖你将得到零分!
......................