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




CommitLineData
b31da37a 1VERSION 4.00\r
2Begin 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
90End\r
91Attribute VB_Name = "frmMpq"\r
92Attribute VB_Creatable = False\r
93Attribute VB_Exposed = False\r
94Option Explicit\r
95\r
96Dim MpqHeader As Long, IsEXE As Boolean, FileDialog As OPENFILENAME\r
97Private Sub cmdAdd_Click()\r
98Dim OldFileName As String, NewMpqHeader As Long, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
99FileDialog.Flags = &H1000 Or &H4 Or &H2\r
100FileDialog.Filter = "Mpq Archives (*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x)|*.mpq;*.exe;*.snp;*.scm;*.scx;*.w3m;*.w3x|All Files (*.*)|*.*"\r
101OldFileName = FileDialog.FileName\r
102FileDialog.hwndOwner = hWnd\r
103If ShowOpen(FileDialog) = False Then GoTo Cancel\r
104NewMpqHeader = FindMpqHeader(FileDialog.FileName)\r
105If NewMpqHeader = -1 Then\r
106 MsgBox "This file does not contain an MPQ archive.", , "MPQ Embedder"\r
107 GoTo Cancel\r
108End If\r
109fNum = FreeFile\r
110Open FileDialog.FileName For Binary As #fNum\r
111fNum2 = FreeFile\r
112Open OldFileName For Binary As #fNum2\r
113If 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
120End If\r
121For 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
131Next bNum\r
132Close #fNum2\r
133Close #fNum\r
134cmdAdd.Enabled = False\r
135cmdRemove.Enabled = True\r
136cmdSaveMPQ.Enabled = True\r
137cmdSaveEXE.Enabled = True\r
138If MpqHeader / 512 = Int(MpqHeader / 512) Then\r
139 Label1.Caption = "This file contains an MPQ archive."\r
140Else\r
141 Label1.Caption = "This file contains an MPQ archive, but other programs may not be able to read it."\r
142End If\r
143Cancel:\r
144FileDialog.FileName = OldFileName\r
145End Sub\r
146Private Sub cmdRemove_Click()\r
147Dim fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
148bNum = MsgBox("Are you sure you want to permanently" + vbCrLf + "remove the MPQ archive from this file?", vbQuestion Or vbYesNo Or vbDefaultButton2, "MPQ Embedder")\r
149If bNum = vbNo Then Exit Sub\r
150fNum = FreeFile\r
151Open FileDialog.FileName For Binary As #fNum\r
152fNum2 = FreeFile\r
153If Dir(FileDialog.FileName + ".remove") <> "" Then Kill FileDialog.FileName + ".remove"\r
154Open FileDialog.FileName + ".remove" For Binary As #fNum2\r
155For 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
165Next bNum\r
166Close #fNum2\r
167Close #fNum\r
168Kill FileDialog.FileName\r
169Name FileDialog.FileName + ".remove" As FileDialog.FileName\r
170cmdAdd.Enabled = True\r
171cmdRemove.Enabled = False\r
172cmdSaveMPQ.Enabled = False\r
173cmdSaveEXE.Enabled = True\r
174Label1.Caption = "This file does not contain an MPQ archive."\r
175End Sub\r
176Private Sub cmdSaveEXE_Click()\r
177Dim OldFileName As String, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
178FileDialog.Flags = &H1000 Or &H4 Or &H2\r
179FileDialog.Filter = "File (*.*)|*.*"\r
180FileDialog.DefaultExt = ""\r
181OldFileName = FileDialog.FileName\r
182FileDialog.FileName = FileDialog.FileName\r
183FileDialog.hwndOwner = hWnd\r
184If ShowSave(FileDialog) = False Then GoTo Cancel\r
185fNum = FreeFile\r
186Open OldFileName For Binary As #fNum\r
187fNum2 = FreeFile\r
188If Dir(FileDialog.FileName) <> "" Then Kill FileDialog.FileName\r
189Open FileDialog.FileName For Binary As #fNum2\r
190For 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
200Next bNum\r
201Close #fNum2\r
202Close #fNum\r
203Cancel:\r
204FileDialog.FileName = OldFileName\r
205End Sub\r
206Private Sub cmdSaveMPQ_Click()\r
207Dim OldFileName As String, fNum As Long, Text As String, fNum2 As Long, Text2 As String, bNum As Long\r
208FileDialog.Flags = &H1000 Or &H4 Or &H2\r
209FileDialog.Filter = "MPQ Archive (*.mpq)|*.mpq"\r
210FileDialog.DefaultExt = "mpq"\r
211OldFileName = FileDialog.FileName\r
212FileDialog.FileName = FileDialog.FileName + ".mpq"\r
213FileDialog.hwndOwner = hWnd\r
214If ShowSave(FileDialog) = False Then GoTo Cancel\r
215fNum = FreeFile\r
216Open OldFileName For Binary As #fNum\r
217fNum2 = FreeFile\r
218If Dir(FileDialog.FileName) <> "" Then Kill FileDialog.FileName\r
219Open FileDialog.FileName For Binary As #fNum2\r
220For 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
230Next bNum\r
231Close #fNum2\r
232Close #fNum\r
233Cancel:\r
234FileDialog.FileName = OldFileName\r
235End Sub\r
236\r
237Private Sub Form_Load()\r
238FileDialog = CD\r
239End Sub\r
240Private Sub mnuFExit_Click()\r
241Unload Me\r
242End Sub\r
243Private Sub mnuFOpen_Click()\r
244Dim OldFileName As String, OldMpqHeader As Long, fNum As Long, Text As String\r
245FileDialog.Flags = &H1000 Or &H4 Or &H2\r
246FileDialog.Filter = "All Files (*.*)|*.*"\r
247OldFileName = FileDialog.FileName\r
248OldMpqHeader = MpqHeader\r
249FileDialog.hwndOwner = hWnd\r
250If ShowOpen(FileDialog) = False Then GoTo Cancel\r
251If FileLen(FileDialog.FileName) = 0 Then\r
252 MsgBox "This is an empty file.", vbExclamation, "MPQ Embedder"\r
253 GoTo Cancel\r
254End If\r
255fNum = FreeFile\r
256Open FileDialog.FileName For Binary As #fNum\r
257Text = String(2, Chr(0))\r
258If LOF(fNum) >= 2 Then Get #fNum, 1, Text\r
259Close #fNum\r
260If Text = "MZ" Then IsEXE = True Else IsEXE = False\r
261If IsEXE Then mnuRun.Enabled = True Else mnuRun.Enabled = False\r
262MpqHeader = FindMpqHeader(FileDialog.FileName)\r
263If 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
270ElseIf 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
276ElseIf 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
286End If\r
287Exit Sub\r
288Cancel:\r
289FileDialog.FileName = OldFileName\r
290MpqHeader = OldMpqHeader\r
291End Sub\r
292Private Sub mnuHAbout_Click()\r
293About.Show 1\r
294End Sub\r
295Private Sub mnuHReadme_Click()\r
296Dim Path As String\r
297Path = App.Path\r
298If Right(Path, 1) <> "\" Then Path = Path + "\"\r
299If Dir(Path + "WMpqEmbed.rtf") = "" Then MsgBox "Could not find WMpqEmbed.rtf!", vbCritical, "MPQ Embedder"\r
300ShellExecute hWnd, vbNullString, Path + "WMpqEmbed.rtf", vbNullString, vbNullString, 1\r
301End Sub\r
302Private Sub mnuRun_Click()\r
303On Error GoTo NotExecutable\r
304Shell FileDialog.FileName, 1\r
305Exit Sub\r
306NotExecutable:\r
307MsgBox "This file is not a .exe file.", vbInformation, "MPQ Embedder"\r
308End Sub\r