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




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