[VB] Anwendungsicon nachträglich ändern?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ich hab dazu einen code allerdings funktioniert dieser nicht richtig:

    in ein modul kommt:

    Quellcode

    1. Option Explicit
    2. Public Type IMAGE_DOS_HEADER
    3. Magic As Integer
    4. cblp As Integer
    5. cp As Integer
    6. crlc As Integer
    7. cparhdr As Integer
    8. minalloc As Integer
    9. maxalloc As Integer
    10. ss As Integer
    11. sp As Integer
    12. csum As Integer
    13. ip As Integer
    14. cs As Integer
    15. lfarlc As Integer
    16. ovno As Integer
    17. res(3) As Integer
    18. oemid As Integer
    19. oeminfo As Integer
    20. res2(9) As Integer
    21. lfanew As Long
    22. End Type
    23. Public Type IMAGE_FILE_HEADER
    24. Machine As Integer
    25. NumberOfSections As Integer
    26. TimeDateStamp As Long
    27. PointerToSymbolTable As Long
    28. NumberOfSymbols As Long
    29. SizeOfOtionalHeader As Integer
    30. Characteristics As Integer
    31. End Type
    32. Public Type IMAGE_DATA_DIRECTORY
    33. DataRVA As Long
    34. DataSize As Long
    35. End Type
    36. Public Type IMAGE_OPTIONAL_HEADER
    37. Magic As Integer
    38. MajorLinkVer As Byte
    39. MinorLinkVer As Byte
    40. CodeSize As Long
    41. InitDataSize As Long
    42. unInitDataSize As Long
    43. EntryPoint As Long
    44. CodeBase As Long
    45. DataBase As Long
    46. ImageBase As Long
    47. SectionAlignment As Long
    48. FileAlignment As Long
    49. MajorOSVer As Integer
    50. MinorOSVer As Integer
    51. MajorImageVer As Integer
    52. MinorImageVer As Integer
    53. MajorSSVer As Integer
    54. MinorSSVer As Integer
    55. Win32Ver As Long
    56. ImageSize As Long
    57. HeaderSize As Long
    58. Checksum As Long
    59. Subsystem As Integer
    60. DLLChars As Integer
    61. StackRes As Long
    62. StackCommit As Long
    63. HeapReserve As Long
    64. HeapCommit As Long
    65. LoaderFlags As Long
    66. RVAsAndSizes As Long
    67. DataEntries(15) As IMAGE_DATA_DIRECTORY
    68. End Type
    69. Public Type IMAGE_SECTION_HEADER
    70. SectionName(7) As Byte
    71. Address As Long
    72. VirtualAddress As Long
    73. SizeOfData As Long
    74. PData As Long
    75. PReloc As Long
    76. PLineNums As Long
    77. RelocCount As Integer
    78. LineCount As Integer
    79. Characteristics As Long
    80. End Type
    81. Type IMAGE_RESOURCE_DIR
    82. Characteristics As Long
    83. TimeStamp As Long
    84. MajorVersion As Integer
    85. MinorVersion As Integer
    86. NamedEntries As Integer
    87. IDEntries As Integer
    88. End Type
    89. Type RESOURCE_DIR_ENTRY
    90. Name As Long
    91. Offset As Long
    92. End Type
    93. Type RESOURCE_DATA_ENTRY
    94. Offset As Long
    95. Size As Long
    96. CodePage As Long
    97. Reserved As Long
    98. End Type
    99. Public Type IconDescriptor
    100. ID As Long
    101. Offset As Long
    102. Size As Long
    103. End Type
    104. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    105. Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    106. Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
    107. Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
    108. Public Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
    109. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    110. Private SectionAlignment As Long
    111. Private FileAlignment As Long
    112. Private ResSectionRVA As Long
    113. Private ResSectionOffset As Long
    114. Public Function Valid_PE(hFile As Long) As Boolean
    115. Dim Buffer(12) As Byte
    116. Dim lngBytesRead As Long
    117. Dim tDosHeader As IMAGE_DOS_HEADER
    118. If (hFile > 0) Then
    119. ReadFile hFile, tDosHeader, ByVal Len(tDosHeader), lngBytesRead, ByVal 0&
    120. CopyMemory Buffer(0), tDosHeader.Magic, 2
    121. If (Chr(Buffer(0)) & Chr(Buffer(1)) = "MZ") Then
    122. SetFilePointer hFile, tDosHeader.lfanew, 0, 0
    123. ReadFile hFile, Buffer(0), 4, lngBytesRead, ByVal 0&
    124. If (Chr(Buffer(0)) = "P") And (Chr(Buffer(1)) = "E") And (Buffer(2) = 0) And (Buffer(3) = 0) Then
    125. Valid_PE = True
    126. Exit Function
    127. End If
    128. End If
    129. End If
    130. Valid_PE = False
    131. End Function
    132. Public Function GetResTreeOffset(hFile As Long) As Long
    133. On Error GoTo ErrHandler:
    134. Dim tDos As IMAGE_DOS_HEADER
    135. Dim tFile As IMAGE_FILE_HEADER
    136. Dim tOptional As IMAGE_OPTIONAL_HEADER
    137. Dim tSections() As IMAGE_SECTION_HEADER
    138. Dim BytesRead As Long
    139. Dim intC As Integer
    140. Dim TreeFound As Boolean
    141. TreeFound = False
    142. If (hFile > 0) Then
    143. SetFilePointer hFile, 0, 0, 0
    144. ' Get the offset of the Image File Header
    145. ReadFile hFile, tDos, Len(tDos), BytesRead, ByVal 0&
    146. SetFilePointer hFile, ByVal tDos.lfanew + 4, 0, 0
    147. ' Get the Image File Header and the Image Optional Header
    148. ReadFile hFile, tFile, Len(tFile), BytesRead, ByVal 0&
    149. ReadFile hFile, tOptional, Len(tOptional), BytesRead, ByVal 0&
    150. ' Get section headers
    151. ReDim tSections(tFile.NumberOfSections - 1) As IMAGE_SECTION_HEADER
    152. ReadFile hFile, tSections(0), Len(tSections(0)) * tFile.NumberOfSections, BytesRead, ByVal 0&
    153. ' Make sure there is a resource tree in this file
    154. If (tOptional.DataEntries(2).DataSize) Then
    155. ' Save section alignment and file alignment of image
    156. SectionAlignment = tOptional.SectionAlignment
    157. FileAlignment = tOptional.FileAlignment
    158. ' Determine which section contains the resource tree
    159. For intC = 0 To UBound(tSections)
    160. If (tSections(intC).VirtualAddress <= tOptional.DataEntries(2).DataRVA) _
    161. And ((tSections(intC).VirtualAddress + tSections(intC).SizeOfData) > tOptional.DataEntries(2).DataRVA) Then
    162. TreeFound = True
    163. ' Save RVA and offset of resource section for future calculations
    164. ResSectionRVA = tSections(intC).VirtualAddress
    165. ResSectionOffset = tSections(intC).PData
    166. ' Calculate the physical file offset of the resouce tree
    167. GetResTreeOffset = tSections(intC).PData + (tOptional.DataEntries(2).DataRVA - tSections(intC).VirtualAddress)
    168. Exit For
    169. End If
    170. Next intC
    171. If Not TreeFound Then
    172. GetResTreeOffset = -1
    173. End If
    174. Else
    175. GetResTreeOffset = -1
    176. End If
    177. Else
    178. GetResTreeOffset = -1
    179. End If
    180. Exit Function
    181. ErrHandler:
    182. MsgBox "An error occurred while locating the resource tree. " _
    183. & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _
    184. App.EXEName & " - " & Err.Description
    185. End Function
    186. Public Function GetIconOffsets(hFile As Long, TreeOffset As Long, Icons() As IconDescriptor) As Long
    187. On Error GoTo ErrHandler:
    188. Dim Root As IMAGE_RESOURCE_DIR ' Root node of resource tree
    189. Dim L1Entries() As RESOURCE_DIR_ENTRY ' 1st level of directory entries
    190. Dim L2Root() As IMAGE_RESOURCE_DIR ' Level 2 resource directories
    191. Dim L2Entries() As RESOURCE_DIR_ENTRY ' 2nd level of directory entries
    192. Dim L3Root() As IMAGE_RESOURCE_DIR ' Level 3 resource directories
    193. Dim L3Entries() As RESOURCE_DIR_ENTRY ' 3rd level of directory entries
    194. Dim DataEntries() As RESOURCE_DATA_ENTRY ' Resource data entries
    195. Dim DIB As DIB_HEADER ' Descriptor for icon images
    196. Dim iLvl1 As Integer ' Loop Counter (first level)
    197. Dim iLvl2 As Integer ' Loop Counter (second level)
    198. Dim iLvl3 As Integer ' Loop Counter (third level)
    199. Dim Cursor As Long ' Temp val for setting file pointer
    200. Dim BytesRead As Long ' For ReadFile()
    201. Dim Count As Integer ' Number of icons found
    202. If (hFile > 0) Then
    203. Count = 0
    204. SetFilePointer hFile, ByVal TreeOffset, 0, 0
    205. ' Get the root node and begin navigating the resource tree
    206. ReadFile hFile, Root, Len(Root), BytesRead, ByVal 0
    207. ReDim L2Root(Root.NamedEntries + Root.IDEntries) As IMAGE_RESOURCE_DIR
    208. ReDim L1Entries(Root.NamedEntries + Root.IDEntries) As RESOURCE_DIR_ENTRY
    209. ' Get first level child nodes
    210. For iLvl1 = 1 To (Root.NamedEntries + Root.IDEntries)
    211. SetFilePointer hFile, TreeOffset + 8 + (iLvl1 * 8), 0, 0
    212. ReadFile hFile, L1Entries(iLvl1), 8, BytesRead, ByVal 0&
    213. If L1Entries(iLvl1).Name = 3 Then
    214. ' Jump to level 2 and get directory
    215. ' Strip high-order byte from offset
    216. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    217. Cursor = Cursor + TreeOffset
    218. SetFilePointer hFile, ByVal Cursor, 0, 0
    219. ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0&
    220. ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR
    221. ReDim L2Entries(L2Root(iLvl1).IDEntries + L2Root(iLvl1).NamedEntries) As RESOURCE_DIR_ENTRY
    222. For iLvl2 = 1 To (L2Root(iLvl1).IDEntries + L2Root(iLvl1).NamedEntries)
    223. ' Read second level child nodes
    224. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    225. Cursor = Cursor + TreeOffset
    226. SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0
    227. ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0&
    228. ' Jump to level 3 and get directory
    229. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    230. Cursor = Cursor + TreeOffset
    231. SetFilePointer hFile, ByVal Cursor, 0, 0
    232. ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0&
    233. ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY
    234. ReDim DataEntries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DATA_ENTRY
    235. For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries)
    236. ' Read third level child nodes
    237. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    238. Cursor = Cursor + TreeOffset
    239. SetFilePointer hFile, (Cursor + 8 + (iLvl3 * 8)), 0, 0
    240. ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0&
    241. ' Jump to IMAGE_DATA_ENTRY and get RVA of IconDir structure
    242. SetFilePointer hFile, TreeOffset + (L3Entries(iLvl3).Offset), 0, 0
    243. ReadFile hFile, DataEntries(iLvl3), 16, BytesRead, ByVal 0&
    244. ' Convert RVA of IconDir structure to file offset and store
    245. Count = Count + 1
    246. ReDim Preserve Icons(Count) As IconDescriptor
    247. Icons(Count).Offset = RVA_to_Offset(DataEntries(iLvl3).Offset)
    248. ' Store ID of icon resource
    249. Icons(Count).ID = L2Entries(iLvl2).Name
    250. ' Store Size of icon resource
    251. SetFilePointer hFile, Icons(Count).Offset, 0, 0
    252. ReadFile hFile, DIB, ByVal Len(DIB), BytesRead, ByVal 0&
    253. Icons(Count).Size = DIB.ImageSize + 40
    254. Next iLvl3
    255. Next iLvl2
    256. End If
    257. Next iLvl1
    258. Else
    259. Count = 0
    260. End If
    261. ' Return the number of icons found
    262. GetIconOffsets = Count
    263. Exit Function
    264. ErrHandler:
    265. MsgBox "An error occurred while locating the icon resources. " _
    266. & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _
    267. App.EXEName & " - " & Err.Description
    268. End Function
    269. Public Function HackDirectories(hFile As Long, ResTree As Long, DIBOffset As Long, _
    270. DIBAttrib As ICON_DIR_ENTRY) As Boolean
    271. On Error GoTo ErrHandler:
    272. Dim Cursor As Long ' File pointer position
    273. Dim Root As IMAGE_RESOURCE_DIR ' Root node of res tree
    274. Dim L1Entries() As RESOURCE_DIR_ENTRY ' First-level child nodes
    275. Dim L2Root() As IMAGE_RESOURCE_DIR ' Second-level root nodes
    276. Dim L2Entries() As RESOURCE_DIR_ENTRY ' Second-level child nodes
    277. Dim L3Root() As IMAGE_RESOURCE_DIR ' Third-level root nodes
    278. Dim L3Entries() As RESOURCE_DIR_ENTRY ' Third-level child nodes
    279. Dim DataEntries() As RESOURCE_DATA_ENTRY ' IMAGE_RESOURCE_DATA_ENTRY structs
    280. Dim IcoDir As ICON_DIR ' IconDirectory in EXE
    281. Dim iLvl1 As Integer ' Loop Counter (first level)
    282. Dim iLvl2 As Integer ' Loop Counter (second level)
    283. Dim iLvl3 As Integer ' Loop Counter (third level)
    284. Dim intC As Integer ' Loop Counter (general)
    285. Dim BytesRead As Long ' Returned by Read/WriteFile API's
    286. If (hFile >= 0) Then
    287. ' Convert DIBOffset to an RVA (needed for RESOURCE_DATA_ENTRY structures)
    288. DIBOffset = Offset_to_RVA(DIBOffset)
    289. SetFilePointer hFile, ByVal ResTree, 0, 0
    290. ReadFile hFile, Root, Len(Root), BytesRead, ByVal 0&
    291. ReDim L1Entries(Root.NamedEntries + Root.IDEntries) As RESOURCE_DIR_ENTRY
    292. ReDim L2Root(Root.NamedEntries + Root.IDEntries) As IMAGE_RESOURCE_DIR
    293. ' Loop through first-level child nodes and find RT_GROUP_ICON branch
    294. For iLvl1 = 1 To (Root.NamedEntries + Root.IDEntries)
    295. SetFilePointer hFile, ResTree + 8 + (iLvl1 * 8), 0, 0
    296. ReadFile hFile, L1Entries(iLvl1), 8, BytesRead, ByVal 0&
    297. If L1Entries(iLvl1).Name = &HE Then
    298. ' RT_GROUP_ICON branch found
    299. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    300. Cursor = Cursor + ResTree
    301. SetFilePointer hFile, Cursor, 0, 0
    302. ' Read second-level directory
    303. ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0&
    304. ReDim L2Entries(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As RESOURCE_DIR_ENTRY
    305. ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR
    306. For iLvl2 = 1 To (L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries)
    307. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    308. Cursor = Cursor + ResTree
    309. SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0
    310. ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0&
    311. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    312. Cursor = Cursor + ResTree
    313. SetFilePointer hFile, Cursor, 0, 0
    314. ' Read thrid-level directory
    315. ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0&
    316. ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY
    317. For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries)
    318. ' Read third-level child nodes
    319. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    320. Cursor = Cursor + ResTree + 8 + (iLvl3 * 8)
    321. SetFilePointer hFile, Cursor, 0, 0
    322. ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0&
    323. ' Jump to RESOURCE_DATA_ENTRY
    324. CopyMemory Cursor, L3Entries(iLvl3).Offset, 3
    325. Cursor = Cursor + ResTree
    326. SetFilePointer hFile, Cursor, 0, 0
    327. ReDim Preserve DataEntries(iLvl3) As RESOURCE_DATA_ENTRY
    328. ReadFile hFile, DataEntries(iLvl3), 16, BytesRead, ByVal 0&
    329. ' Jump to and read ICON_DIR structure
    330. Cursor = RVA_to_Offset(DataEntries(iLvl3).Offset)
    331. SetFilePointer hFile, Cursor, 0, 0
    332. ReadFile hFile, IcoDir, 6, BytesRead, ByVal 0&
    333. For intC = 1 To IcoDir.Count
    334. WriteFile hFile, DIBAttrib, Len(DIBAttrib) - 4, BytesRead, ByVal 0&
    335. SetFilePointer hFile, 2, 0, 1
    336. Next intC
    337. Next iLvl3
    338. Next iLvl2
    339. ElseIf L1Entries(iLvl1).Name = 3 Then
    340. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    341. Cursor = Cursor + ResTree
    342. SetFilePointer hFile, ByVal Cursor, 0, 0
    343. ' Read second-level directory
    344. ReadFile hFile, L2Root(iLvl1), 16, BytesRead, ByVal 0&
    345. ReDim L2Entries(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As RESOURCE_DIR_ENTRY
    346. ReDim L3Root(L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries) As IMAGE_RESOURCE_DIR
    347. For iLvl2 = 1 To (L2Root(iLvl1).NamedEntries + L2Root(iLvl1).IDEntries)
    348. CopyMemory Cursor, L1Entries(iLvl1).Offset, 3
    349. Cursor = Cursor + ResTree
    350. SetFilePointer hFile, Cursor + 8 + (iLvl2 * 8), 0, 0
    351. ReadFile hFile, L2Entries(iLvl2), 8, BytesRead, ByVal 0&
    352. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    353. Cursor = Cursor + ResTree
    354. SetFilePointer hFile, Cursor, 0, 0
    355. ' Read thrid-level directory
    356. ReadFile hFile, L3Root(iLvl2), 16, BytesRead, ByVal 0&
    357. ReDim L3Entries(L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries) As RESOURCE_DIR_ENTRY
    358. For iLvl3 = 1 To (L3Root(iLvl2).NamedEntries + L3Root(iLvl2).IDEntries)
    359. ' Read third-level child nodes
    360. CopyMemory Cursor, L2Entries(iLvl2).Offset, 3
    361. Cursor = Cursor + ResTree + 8 + (iLvl3 * 8)
    362. SetFilePointer hFile, Cursor, 0, 0
    363. ReadFile hFile, L3Entries(iLvl3), 8, BytesRead, ByVal 0&
    364. ' Jump to and hack the RESOURCE_DATA_ENTRY
    365. Cursor = L3Entries(iLvl3).Offset + ResTree
    366. SetFilePointer hFile, Cursor, 0, 0
    367. WriteFile hFile, DIBOffset, 4, BytesRead, ByVal 0&
    368. WriteFile hFile, CLng(DIBAttrib.dwBytesInRes + 40), 4, BytesRead, ByVal 0&
    369. Next iLvl3
    370. Next iLvl2
    371. End If
    372. Next iLvl1
    373. Else
    374. HackDirectories = False
    375. Exit Function
    376. End If
    377. HackDirectories = True
    378. Exit Function
    379. ErrHandler:
    380. MsgBox "An error occurred while modifying the resource directories. " _
    381. & " Please make sure neither of the specified files are in use.", vbOKOnly + vbExclamation, _
    382. App.EXEName & " - " & Err.Description
    383. End Function
    384. Private Function RVA_to_Offset(RVA As Long) As Long
    385. On Error GoTo ErrHandler:
    386. Dim TempOffset As Long ' Difference of RVA and start of section
    387. TempOffset = RVA - ResSectionRVA
    388. If (TempOffset >= 0) Then
    389. ' Calculate the file offset of the RVA
    390. RVA_to_Offset = ResSectionOffset + TempOffset
    391. Else
    392. RVA_to_Offset = -1
    393. End If
    394. Exit Function
    395. ErrHandler:
    396. MsgBox "Error in RVA_to_Offset function: " & Err.Number & ": " & Err.Description, _
    397. vbOKOnly + vbExclamation, App.EXEName & " - Error"
    398. End Function
    399. Private Function Offset_to_RVA(Offset As Long) As Long
    400. On Error GoTo ErrHandler:
    401. Dim TempOffset As Long ' Difference of Offset and start of section
    402. ' Get distance between offset and start of resource section
    403. TempOffset = Offset - ResSectionOffset
    404. If TempOffset >= 0 Then
    405. ' Calculate RVA of the file offset
    406. Offset_to_RVA = ResSectionRVA + TempOffset
    407. Else
    408. Offset_to_RVA = -1
    409. End If
    410. Exit Function
    411. ErrHandler:
    412. MsgBox "Error in Offset_to_RVA function: " & Err.Number & ": " & Err.Description, _
    413. vbOKOnly + vbExclamation, App.EXEName & " - Error"
    414. End Function
    Alles anzeigen



    in der for rufe ich es folgendermaßen auf:

    Quellcode

    1. ReplaceIcons "Icon-Pfad", "EXE-Pfad", errorvariable



    allerdings erscheint bei mir immer ein fehler