这是vb的世界,这是程序源代码的海洋,我借此与众多朋友共同交流编程思想,编程技巧,望我能够在帮助大家的同时,得到大家的恩惠。魔灵圣域欢迎大家的到来。

批量生成资源文件工具

2008-05-16 13:16:36 / 个人分类:VB 类别

'**************************************************************************
c6L8D%Mw.\0'**模 块 名:RES批量生成 - frmRES
FFtK5A$qQ&p0'**说    明:魔灵圣域 版权所有2008 - 2009(C)VBGood社区门户$~ymp2D3qn!N
'**创 建 人:郭卫(魔灵)VBGood社区门户eo+X9Z#y~6IZ
'**日    期:2008-05-16 01:33:59
qj;ki.[0Q1y2z)^ H0'**修 改 人:郭卫VBGood社区门户Db+O5X!fI.bX)N D
'**日    期:VBGood社区门户cCn:T8{ l l[
'**描    述:郭卫制作VBGood社区门户%Z$g `m5M2@4I
'**版    本:V1.0.2    http://icecept.blog.sohu.com
#Y#`_)v8XAN8n#O0'*************************************************************************
9NZ8{3B*W0Option Explicit
|3E^|?~.B0'让shell等待的API及参数
K4fh om P]S0Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredaccess&, ByVal bInherithandle&, ByVal dwProcessid&) As Long
1?+E"m,E p0Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpexitcode As Long) As Long
8B Nb-J f0Private Const STILL_ACTIVE = &H103VBGood社区门户p~-[.\g%t$\2w&]
Private Const PROCESS_QUERY_INFORMATION = &H400VBGood社区门户FFdT eUZ g1L$]
Private Sub Form_Load()    '选择默认路径VBGood社区门户p7T-R ztd\
    Dir1.Path = App.PathVBGood社区门户}(z-t0lhw{;}/q
    File1.Path = Dir1.PathVBGood社区门户4F _uO,X
    File1.Pattern = "*.bmp"
~Y7A+G!X-q|1\jfq0    Text2.Text = File1.PathVBGood社区门户I'p%Kc!w_d
End SubVBGood社区门户JXEBLvz
Private Sub Combo1_Change()
&^M.@hH)q0    File1.Pattern = "*" & "." & Combo1.TextVBGood社区门户d4o i"o5`J(E
End Sub
L['F%U(Pq0Private Sub Combo1_Click()VBGood社区门户+f~2o2OD_w
    File1.Pattern = "*" & "." & Combo1.Text
!G m c6W ] lD0End Sub
[GJ:g)Eh0Private Sub Drive1_Change()    '选择驱动器
9W%k2luAY e?l0    Dir1.Path = Drive1.Drive
8DM R(Bu:E*h9Hnv$h0End SubVBGood社区门户H@7E%E"P#V(l
Private Sub Dir1_Change()    '选择文件夹VBGood社区门户X _Hi2J_S
    File1.Pattern = "*" & "." & Combo1.Text
x-SQW.v3]0    File1.Path = Dir1.PathVBGood社区门户ankC9I'Y @n
    Text2.Text = File1.Path
~8WH/w(ibq0End Sub
`e9^_(@ ~0ED/G0Private Sub Command1_Click()VBGood社区门户L9Mn6}1y!w8u,A`
    On Error Resume NextVBGood社区门户+oo+hm"x6zM
    If InStr(Dir1.Path, Chr(32)) Then
+V`1k8u2^0        MsgBox "路径中不能含有空格,此文件未编译!请把此程序放到没有空格的文件夹中运行", vbOKOnly Or vbInformation, "提示"
z'CZG+y d+K h wV0        Exit Sub
u"N F%G6~K0    End IfVBGood社区门户3db,l.^'s {+t(b
    Dim DestinationFile As String, SourceFile As String, i As LongVBGood社区门户L:A$HU}%^\'n!FDp?
    Dim RES As String, FileStyle As String
u$?A8g5Mx{0    Open CheckFilePath(App.Path) & "RES.rc" For Output As #1
)Jv+E{ k;rw5~[&i]0    Print #1, vbNullString;
9Oa ZKtq8}l4s/{[#v0    Close #1VBGood社区门户 T1y3A'{c6i"gI#p!{
    If File1.ListCount > 0 ThenVBGood社区门户)CL5x%P0p"]-`(U`6U
        For i = 0 To File1.ListCount - 1VBGood社区门户]]J%rdK8J
            File1.ListIndex = i
HVmce:q0            SourceFile = File1.Path & "\" & File1.FileName
,E.X9Z9gho S0            Select Case Combo1.TextVBGood社区门户T1E W#v+tc }
                Case "bmp"VBGood社区门户'x1aD_Kc$P G)dm j
                FileStyle = "BITMAP"VBGood社区门户K%{0XPs{:`T
                Case "txt"
]H:B8fkVY ~ u0                FileStyle = "TEXTFILE"VBGood社区门户RJ,Ki'kA
                Case "ico"VBGood社区门户 }lJN4M zc1IN
                FileStyle = "ICON"
,G6Y^-n}2?'\0                Case "cur"
7d~Tei0                FileStyle = "CURSOR"
9A%^%VVj @0T;A0                Case "wav"
Rm-|S2c%XblB`&D0                FileStyle = "WAVE"VBGood社区门户2o1]7y7d!Y1psC&I!_7T
            End SelectVBGood社区门户Jo pR#xJbT/WHa
            DestinationFile = File1.Path & "\" & "A" & i + 1 & "." & Combo1.Text
-IGs({IQ0            Name SourceFile As DestinationFile
%[E6fb0U0            Open CheckFilePath(App.Path) & "RES.rc" For Append As #1
"m`I[6Y~/d0            Print #1, 100 + i + 1 & Space(2) & FileStyle & Space(2) & DestinationFileVBGood社区门户?S#HZ[5T*M D2Y
            Close #1
_]4eL@(Ly0        Next i
`x]!x.d-QD.Sb&M3XZv(J0        File1.RefreshVBGood社区门户7H AUKK&]b h]8\
        ShellWait CheckFilePath(App.Path) & "RC.EXE /r RES.rc", vbHide
W6zU$b+m9x0    End If
g0?Lb [KN0    Kill CheckFilePath(App.Path) & "RES.rc"
"{3oF Y iB|g0End Sub
y]6A9g_~(|1w0Private Sub Command2_Click()VBGood社区门户8bmPCEf-hZ7o
    Unload Me
l8DW{G0End Sub
3J*aQS6]'_aD/u2\x5?0Function CheckFilePath(ByVal Path As String) As String
R:R*}i(Z V/r1e0    '检查文件是否在根目录下
9R3X@y8RJHb.C}0    If Right(Path, 1) <> "\" ThenVBGood社区门户o9ZB0Z`
        CheckFilePath = Path & "\"
6y'th$Zc*|i!T'[0    Else
~ uT1UI;BLz0        CheckFilePath = Path
){IO-Zf0    End IfVBGood社区门户_{dB5f3AM^ u8aw
End Function
a1y@ R7l3G$I0e(MU#Q0'让shell等待的函数VBGood社区门户@OcN)t$b%]$k1[
Public Sub ShellWait(cCommandLine As String, Optional WindowsStyle As VbAppWinStyle)VBGood社区门户)PE'@\E0J7Vc6\l'aw
    Dim hShell As LongVBGood社区门户0i]v o:\'a2W
    Dim hProc As LongVBGood社区门户8}%n2A.pO@z
    Dim lExit As LongVBGood社区门户1kO8ig,\Z|
    If Not IsMissing(WindowsStyle) Then WindowsStyle = vbNormalFocusVBGood社区门户OBb9n3K!W
    hShell = Shell(cCommandLine, WindowsStyle)
Yb'n6{:xB+E/u0    hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
#u$o&De5r*? {gR0    DoVBGood社区门户8BV*OL1Xd
        GetExitCodeProcess hProc, lExitVBGood社区门户@$pm"hL.iug%A
        DoEvents
1Q+`(Y3b r7c@IUu0    Loop While lExit = STILL_ACTIVEVBGood社区门户VR1?/m%dNhK1JN ?
End SubVBGood社区门户*Fj\"j2^.k
Private Sub mnuabout_Click()VBGood社区门户"h"|;k },Eno?n
    Dim about As StringVBGood社区门户4B#q7dP)V7@Ap
    about = "作者:郭卫,昵称:魔灵。喜欢用Visual Basic编程序的平面设计师,从中学时代就酷爱编程,"VBGood社区门户:`I.U1hrB/`
    about = about & "从Gwbasic到Visual Basic,创作了不少的作品。并且我还特别喜"VBGood社区门户/?:k!p,F%d
    about = about & "欢平面设计,熟练使用photoshop和coreldraw,并创作了不少的作品."VBGood社区门户7| lR*y_h/NZx
    about = about & "作品有记事薄(类似于写字板)、华容道(20局的游戏)、企业商品"VBGood社区门户![r+lly[Wk
    about = about & "管理、程序自动保存、整点报时、可产生关联的flash播放器、资源文件批量生成工具等一批软件,"
*q]T Q:TOA0    about = about & "如果大家对我的程序感兴趣,请与我联系." & vbCrLf & "QQ:543375508"
:v+g!zS5K&s(S:Q0    about = about & vbCrLf & "E-mail:icecept@163.com"
;GhU5vH0    about = about & vbCrLf & "魔灵圣域之情感世界 http://icecept.blog.sohu.com"
+A'T;hi)U7[0    MsgBox about, vbOKOnly Or vbInformation, "作者信息"VBGood社区门户 zFb#^r6_il-Yl&j
End Sub
9j1m9Q.vl U h0Private Sub mnutishi_Click()
AT/Nd&g"R(y l'`0    MsgBox "本程序为了加快资源生成速度,会批量更改文件夹中文件的名称" & vbCrLf & "请备份此文件夹中的文件.", vbOKOnly Or vbInformation, "提示"
7mC k0LH7|0End SubVBGood社区门户qix8MT"U F

批量生成资源文件.rar
"Y+ET e8u ]2W)N#aI0(2008-05-16 11:04:12, Size: 453 kB, Downloads: 6)


TAG: 批量生成资源文件工具 资源文件 VB RES

yangzn的个人空间 yangzn 发布于2008-06-17 10:26:36
个人认为:^3|)}Udp
            'DestinationFile = File1.Path & "\" & "A" & i + 1  & "." & Combo1.Text  '改为下面一句应更好了4w1XJ3p5D4Xt
            DestinationFile = File1.Path & "\" & "A" & i + 1 & File1.FileName+f,w+c"sE,F
这样便知道,被编进源文件的资源号,都对应哪些文件(文件是有意义的),而不是被生生变成一些无意义的文件名。
魔灵圣域之VB世界 icecept 发布于2008-06-16 14:22:02
If InStr(Dir1.Path, Chr(32)) Thenblog.vbgood.comT y2er h
        MsgBox "路径中不能含有空格,此文件未编译!请把此程序放到没有空格的文件夹中运行", vbOKOnly Or vbInformation, "提示",iE.\y&t
        Exit Sub X7L0u2dh SRj
  End If
7{8k7fE
K+L5F.u(@(L
上面已有说明,且路径中不能是长路径名,且不支持中文文件名。dos 命令的局限性
#}7e$R(j
b;]:q:a
Hy'|'E(Vs
[ 本帖最后由 icecept 于 2008-6-16 15:43 编辑 ]
zzi617发布于2008-06-16 13:26:06
谢谢楼主,正在使用,提一点意见:blog.vbgood.comSn,L0D
N1s"BR

Name SourceFile As DestinationFile
0Q0u^+t^V$|]如果在重复运行后,因为没有判断文件名是否已存在,会造成出错,
/Qs)V6Q/{hn因你已使用了On Error Resume Next,所以便无提醒,@l4wA7e2w_/i
ShellWait CheckFilePath(App.Path) & "RC.EXE /r RES.rc", vbHideVBGood社区门户D6[;K3S:ZFX
编译时,我首先都在中文文件夹中,始终无法成功,原本想转到DOS手动操作,结果移到英文文件夹编译则成功,所以可能需要再检查看看,是否有错.
B9u1r,i`以上是我用你的源码运行时发现的错误,不知是否因我的操作或理解有误或水平原因造成的,谨此提出
0s1_%N oR*^)@-X0ne再次谢谢!
魔灵圣域之VB世界 icecept 发布于2008-06-13 18:28:21
此程序是借用RC.EXE来编译rc文件为res文件,照此推断,exe文件也可以做到用程序的方法来编译。这个程序回过头来看,给了我一个不错的借鉴。
追梦计算机及电子技术实验室 DreamonII 发布于2008-05-16 19:55:42
嗯啦~~qfJ;W.f
ND
Q"E)G

谢谢sgz888的鼓励哦~~blog.vbgood.comz3@/k9wc0?9Qi;`.Ep
加油加油~~
sgz888的个人空间 sgz888 发布于2008-05-16 19:48:06
这么快就梦想成真了,恭喜啊,真是想不到这么快啊。
追梦计算机及电子技术实验室 DreamonII 发布于2008-05-16 19:44:16
谢谢谢谢~~
s$DqgtjJfd0U
G9Td
?Plju
嘿嘿~blog.vbgood.com+p7h-m-i-S:G]V4y

4M0|NNn @"jaE}blog.vbgood.com多多支持哦~~~ 
魔灵圣域之VB世界 icecept 发布于2008-05-16 19:40:44
恭喜DreamonII 成为版主
ctzl8发布于2008-05-16 18:42:37
学习了。
追梦计算机及电子技术实验室 DreamonII 发布于2008-05-16 18:33:28
终于又有分可送了~~
!G y
w"`,g7g;Ex
P
偶级别不够,一次只能加这么多了~~ 嘿嘿~~
~_e }m6RY4NVBGood社区门户
sgz888的个人空间 sgz888 发布于2008-05-16 11:08:09
看到源码了,一定要好好研究啊。谢谢
追梦计算机及电子技术实验室 DreamonII 发布于2008-05-16 11:07:55
晕啊~~
c'~!_S?Kz我今天的评分用光了~~VBGood社区门户H hv+q`4u,^"GW,N
g

好东东啊
6t4Ov!y2}q        w$ci晚些一定补上~~~~
我来说两句

(可选)

Open Toolbar