Commit | Line | Data |
b31da37a |
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 |