Current News Archived News Search News Discussion Forum Old Forum Install Programs More Downloads... Troubleshooting Source Code Format Specs. Misc. Information Non-SF Stuff Links Small banner for links to this site: |
1 VERSION 4.00\r
2 Begin VB.Form frmMpq \r
3 BorderStyle = 1 'Fixed Single\r
4 Caption = "MPQ Embedder"\r
5 ClientHeight = 1695\r
6 ClientLeft = 3045\r
7 ClientTop = 2730\r
8 ClientWidth = 2775\r
9 Height = 2385\r
10 Icon = "frmMpq.frx":0000\r
11 Left = 2985\r
12 LinkTopic = "Form1"\r
13 MaxButton = 0 'False\r
14 ScaleHeight = 1695\r
15 ScaleWidth = 2775\r
16 Top = 2100\r
17 Width = 2895\r
18 Begin VB.CommandButton cmdSaveEXE \r
19 Caption = "Save &EXE"\r
20 Enabled = 0 'False\r
21 Height = 375\r
22 Left = 1440\r
23 TabIndex = 3\r
24 Top = 1200\r
25 Width = 1215\r
26 End\r
27 Begin VB.CommandButton cmdRemove \r
28 Caption = "&Remove"\r
29 Enabled = 0 'False\r
30 Height = 375\r
31 Left = 120\r
32 TabIndex = 2\r
33 Top = 1200\r
34 Width = 1215\r
35 End\r
36 Begin VB.CommandButton cmdSaveMPQ \r
37 Caption = "Save &MPQ"\r
38 Enabled = 0 'False\r
39 Height = 375\r
40 Left = 1440\r
41 TabIndex = 1\r
42 Top = 720\r
43 Width = 1215\r
44 End\r
45 Begin VB.CommandButton cmdAdd \r
46 Caption = "&Add"\r
47 Enabled = 0 'False\r
48 Height = 375\r
49 Left = 120\r
50 TabIndex = 0\r
51 Top = 720\r
52 Width = 1215\r
53 End\r
54 Begin VB.Label Label1 \r
55 Height = 615\r
56 Left = 120\r
57 TabIndex = 4\r
58 Top = 120\r
59 Width = 2565\r
60 WordWrap = -1 'True\r
61 End\r
62 Begin VB.Menu mnuFile \r
63 Caption = "&File"\r
64 Begin VB.Menu mnuFOpen \r
65 Caption = "&Open..."\r
66 End\r
67 Begin VB.Menu mnuFSep \r
68 Caption = "-"\r
69 End\r
70 Begin VB.Menu mnuFExit \r
71 Caption = "E&xit"\r
72 End\r
73 End\r
74 Begin VB.Menu mnuRun \r
75 Caption = "&Run EXE"\r
76 Enabled = 0 'False\r
77 End\r
78 Begin VB.Menu mnuHelp \r
79 Caption = "&Help"\r
80 Begin VB.Menu mnuHReadme \r
81 Caption = "View &Readme..."\r
82 End\r
83 Begin VB.Menu mnuHSep \r
84 Caption = "-"\r
85 End\r
86 Begin VB.Menu mnuHAbout \r
87 Caption = "&About..."\r
88 End\r
89 End\r
90 End\r
91 Attribute VB_Name = "frmMpq"\r
92 Attribute VB_Creatable = False\r
93 Attribute VB_Exposed = False\r
94 Option Explicit\r
95 \r
96 Dim MpqHeader As Long, IsEXE As Boolean, FileDialog As OPENFILENAME\r
97 Private Sub cmdAdd_Click()\r
98 Dim OldFileName As String, NewMpqHeader As Long, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
99 FileDialog.Flags = &H1000 Or &H4 Or &H2\r
100 FileDialog.Filter = "Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x|All Files (*.*)|*.*"\r
101 OldFileName = FileDialog.FileName\r
102 FileDialog.hwndOwner = hWnd\r
103 If ShowOpen(FileDialog) = False Then GoTo Cancel\r
104 NewMpqHeader = FindMpqHeader(FileDialog.FileName)\r
105 If NewMpqHeader = -1 Then\r
106 MsgBox "This file does not contain an MPQ archive.", , "MPQ Embedder"\r
107 GoTo Cancel\r
108 End If\r
109 fNum = FreeFile\r
110 Open FileDialog.FileName For Binary As #fNum\r
111 fNum2 = FreeFile\r
112 Open OldFileName For Binary As #fNum2\r
113 If MpqHeader / 512 <> Int(MpqHeader / 512) Then\r
114 bNum = MsgBox("The file you are adding the MPQ archive to" + vbCrLf + "is not the proper size; therefore, most MPQ" + vbCrLf + "archive readers will not be able to read it." + vbCrLf + "Do you want to increase the size of the file," + vbCrLf + "so other programs can read it?", vbQuestion Or vbYesNo Or vbDefaultButton1, "MPQ Embedder")\r
115 If bNum = vbYes Then\r
116 Text = String(512 - (MpqHeader - Int(MpqHeader / 512) * 512), Chr(0))\r
117 Put #fNum2, MpqHeader + 1, Text\r
118 MpqHeader = MpqHeader + Len(Text)\r
119 End If\r
120 End If\r
121 For bNum = NewMpqHeader + 1 To LOF(fNum) Step 2 ^ 20\r
122 Text = String(2 ^ 20, Chr(0))\r
123 If LOF(fNum) - bNum + 1 >= 2 ^ 20 Then\r
124 Get #fNum, bNum, Text\r
125 Put #fNum2, MpqHeader + bNum - NewMpqHeader, Text\r
126 Else\r
127 Text = String(LOF(fNum) - bNum + 1, Chr(0))\r
128 Get #fNum, bNum, Text\r
129 Put #fNum2, MpqHeader + bNum - NewMpqHeader, Text\r
130 End If\r
131 Next bNum\r
132 Close #fNum2\r
133 Close #fNum\r
134 cmdAdd.Enabled = False\r
135 cmdRemove.Enabled = True\r
136 cmdSaveMPQ.Enabled = True\r
137 cmdSaveEXE.Enabled = True\r
138 If MpqHeader / 512 = Int(MpqHeader / 512) Then\r
139 Label1.Caption = "This file contains an MPQ archive."\r
140 Else\r
141 Label1.Caption = "This file contains an MPQ archive, but other programs may not be able to read it."\r
142 End If\r
143 Cancel:\r
144 FileDialog.FileName = OldFileName\r
145 End Sub\r
146 Private Sub cmdRemove_Click()\r
147 Dim fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
148 bNum = MsgBox("Are you sure you want to permanently" + vbCrLf + "remove the MPQ archive from this file?", vbQuestion Or vbYesNo Or vbDefaultButton2, "MPQ Embedder")\r
149 If bNum = vbNo Then Exit Sub\r
150 fNum = FreeFile\r
151 Open FileDialog.FileName For Binary As #fNum\r
152 fNum2 = FreeFile\r
153 If Dir(FileDialog.FileName + ".remove") <> "" Then Kill FileDialog.FileName + ".remove"\r
154 Open FileDialog.FileName + ".remove" For Binary As #fNum2\r
155 For bNum = 1 To MpqHeader Step 2 ^ 20\r
156 Text = String(2 ^ 20, Chr(0))\r
157 If MpqHeader - bNum + 1 >= 2 ^ 20 Then\r
158 Get #fNum, bNum, Text\r
159 Put #fNum2, bNum, Text\r
160 Else\r
161 Text = String(MpqHeader - bNum + 1, Chr(0))\r
162 Get #fNum, bNum, Text\r
163 Put #fNum2, bNum, Text\r
164 End If\r
165 Next bNum\r
166 Close #fNum2\r
167 Close #fNum\r
168 Kill FileDialog.FileName\r
169 Name FileDialog.FileName + ".remove" As FileDialog.FileName\r
170 cmdAdd.Enabled = True\r
171 cmdRemove.Enabled = False\r
172 cmdSaveMPQ.Enabled = False\r
173 cmdSaveEXE.Enabled = True\r
174 Label1.Caption = "This file does not contain an MPQ archive."\r
175 End Sub\r
176 Private Sub cmdSaveEXE_Click()\r
177 Dim OldFileName As String, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
178 FileDialog.Flags = &H1000 Or &H4 Or &H2\r
179 FileDialog.Filter = "File (*.*)|*.*"\r
180 FileDialog.DefaultExt = ""\r
181 OldFileName = FileDialog.FileName\r
182 FileDialog.FileName = FileDialog.FileName\r
183 FileDialog.hwndOwner = hWnd\r
184 If ShowSave(FileDialog) = False Then GoTo Cancel\r
185 fNum = FreeFile\r
186 Open OldFileName For Binary As #fNum\r
187 fNum2 = FreeFile\r
188 If Dir(FileDialog.FileName) <> "" Then Kill FileDialog.FileName\r
189 Open FileDialog.FileName For Binary As #fNum2\r
190 For bNum = 1 To MpqHeader Step 2 ^ 20\r
191 Text = String(2 ^ 20, Chr(0))\r
192 If MpqHeader - bNum + 1 >= 2 ^ 20 Then\r
193 Get #fNum, bNum, Text\r
194 Put #fNum2, bNum, Text\r
195 Else\r
196 Text = String(MpqHeader - bNum + 1, Chr(0))\r
197 Get #fNum, bNum, Text\r
198 Put #fNum2, bNum, Text\r
199 End If\r
200 Next bNum\r
201 Close #fNum2\r
202 Close #fNum\r
203 Cancel:\r
204 FileDialog.FileName = OldFileName\r
205 End Sub\r
206 Private Sub cmdSaveMPQ_Click()\r
207 Dim OldFileName As String, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
208 FileDialog.Flags = &H1000 Or &H4 Or &H2\r
209 FileDialog.Filter = "MPQ Archive (*.mpq)|*.mpq"\r
210 FileDialog.DefaultExt = "mpq"\r
211 OldFileName = FileDialog.FileName\r
212 FileDialog.FileName = FileDialog.FileName + ".mpq"\r
213 FileDialog.hwndOwner = hWnd\r
214 If ShowSave(FileDialog) = False Then GoTo Cancel\r
215 fNum = FreeFile\r
216 Open OldFileName For Binary As #fNum\r
217 fNum2 = FreeFile\r
218 If Dir(FileDialog.FileName) <> "" Then Kill FileDialog.FileName\r
219 Open FileDialog.FileName For Binary As #fNum2\r
220 For bNum = MpqHeader + 1 To LOF(fNum) Step 2 ^ 20\r
221 Text = String(2 ^ 20, Chr(0))\r
222 If LOF(fNum) - bNum + 1 >= 2 ^ 20 Then\r
223 Get #fNum, bNum, Text\r
224 Put #fNum2, bNum - MpqHeader, Text\r
225 Else\r
226 Text = String(LOF(fNum) - bNum + 1, Chr(0))\r
227 Get #fNum, bNum, Text\r
228 Put #fNum2, bNum - MpqHeader, Text\r
229 End If\r
230 Next bNum\r
231 Close #fNum2\r
232 Close #fNum\r
233 Cancel:\r
234 FileDialog.FileName = OldFileName\r
235 End Sub\r
236 \r
237 Private Sub Form_Load()\r
238 FileDialog = CD\r
239 End Sub\r
240 Private Sub mnuFExit_Click()\r
241 Unload Me\r
242 End Sub\r
243 Private Sub mnuFOpen_Click()\r
244 Dim OldFileName As String, OldMpqHeader As Long, fNum As Long, Text As String\r
245 FileDialog.Flags = &H1000 Or &H4 Or &H2\r
246 FileDialog.Filter = "All Files (*.*)|*.*"\r
247 OldFileName = FileDialog.FileName\r
248 OldMpqHeader = MpqHeader\r
249 FileDialog.hwndOwner = hWnd\r
250 If ShowOpen(FileDialog) = False Then GoTo Cancel\r
251 If FileLen(FileDialog.FileName) = 0 Then\r
252 MsgBox "This is an empty file.", vbExclamation, "MPQ Embedder"\r
253 GoTo Cancel\r
254 End If\r
255 fNum = FreeFile\r
256 Open FileDialog.FileName For Binary As #fNum\r
257 Text = String(2, Chr(0))\r
258 If LOF(fNum) >= 2 Then Get #fNum, 1, Text\r
259 Close #fNum\r
260 If Text = "MZ" Then IsEXE = True Else IsEXE = False\r
261 If IsEXE Then mnuRun.Enabled = True Else mnuRun.Enabled = False\r
262 MpqHeader = FindMpqHeader(FileDialog.FileName)\r
263 If MpqHeader <= -1 Then\r
264 cmdAdd.Enabled = True\r
265 cmdRemove.Enabled = False\r
266 cmdSaveMPQ.Enabled = False\r
267 cmdSaveEXE.Enabled = True\r
268 MpqHeader = FileLen(FileDialog.FileName)\r
269 Label1.Caption = "This file does not contain an MPQ archive."\r
270 ElseIf MpqHeader = 0 Then\r
271 cmdAdd.Enabled = False\r
272 cmdRemove.Enabled = False\r
273 cmdSaveMPQ.Enabled = True\r
274 cmdSaveEXE.Enabled = False\r
275 Label1.Caption = "This file is an MPQ archive."\r
276 ElseIf MpqHeader > 0 Then\r
277 cmdAdd.Enabled = False\r
278 cmdRemove.Enabled = True\r
279 cmdSaveMPQ.Enabled = True\r
280 cmdSaveEXE.Enabled = True\r
281 If MpqHeader / 512 = Int(MpqHeader / 512) Then\r
282 Label1.Caption = "This file contains an MPQ archive."\r
283 Else\r
284 Label1.Caption = "This file contains an MPQ archive, but other programs may be unable to read it."\r
285 End If\r
286 End If\r
287 Exit Sub\r
288 Cancel:\r
289 FileDialog.FileName = OldFileName\r
290 MpqHeader = OldMpqHeader\r
291 End Sub\r
292 Private Sub mnuHAbout_Click()\r
293 About.Show 1\r
294 End Sub\r
295 Private Sub mnuHReadme_Click()\r
296 Dim Path As String\r
297 Path = App.Path\r
298 If Right(Path, 1) <> "\" Then Path = Path + "\"\r
299 If Dir(Path + "WMpqEmbed.rtf") = "" Then MsgBox "Could not find WMpqEmbed.rtf!", vbCritical, "MPQ Embedder"\r
300 ShellExecute hWnd, vbNullString, Path + "WMpqEmbed.rtf", vbNullString, vbNullString, 1\r
301 End Sub\r
302 Private Sub mnuRun_Click()\r
303 On Error GoTo NotExecutable\r
304 Shell FileDialog.FileName, 1\r
305 Exit Sub\r
306 NotExecutable:\r
307 MsgBox "This file is not a .exe file.", vbInformation, "MPQ Embedder"\r
308 End Sub\r
|