System Userlib
Übersicht

![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine Dll beizufügen weil "es professionell aussieht" ist doch -man verzeihe- Bullshit.
Ich bau mir doch nicht Extraballast rein nur weil es gut aussieht und ich damit meine angeben zu können. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Mit PowerBasic kann man eine Dll aus eine Exe als Resource laden und ausführen. Laden der Ressource Code: [AUSKLAPPEN] DECLARE FUNCTION MyFunction() AS String Resinfo=FindResource(hInstance, "#100", "bin") Res=LoadResource(hInstance,Resinfo) Lang=SizeofResource(hInstance,Resinfo) Code: [AUSKLAPPEN] LoadPbDllFromMemory Res,SizeofResource(hInstance,Resinfo),My_Dll addr_MyFunction=GetProcAddressDirectly(My_Dll, "MyFunction") CALL DWORD addr_MyFunction using MyFunction() TO S$ Function Code: [AUSKLAPPEN] FUNCTION GetProcAddressDirectly ALIAS "GetProcAddressDirectly" (BYVAL lpImageDosHeader AS IMAGE_DOS_HEADER PTR, FuncName AS ASCIIZ) EXPORT AS DWORD DIM lpImageNtHeaders AS LOCAL IMAGE_NT_HEADERS PTR DIM lpImageExportDirectory AS LOCAL IMAGE_EXPORT_DIRECTORY PTR DIM lpNameOrdinals AS LOCAL WORD PTR DIM lpFunctions AS LOCAL DWORD PTR DIM lpExpFuncName AS LOCAL ASCIIZ PTR DIM lpName AS LOCAL DWORD PTR DIM lpFuncName AS ASCIIZ PTR DIM i AS LOCAL DWORD DIM j AS LOCAL DWORD IF @lpImageDosHeader.e_magic <> %IMAGE_DOS_SIGNATURE THEN FUNCTION = 1 EXIT FUNCTION ' invalid DOS signature END IF lpImageNtHeaders = lpImageDosHeader + @lpImageDosHeader.e_lfanew IF @lpImageNtHeaders.Signature <> %IMAGE_NT_SIGNATURE THEN FUNCTION = 1 EXIT FUNCTION ' invalid NT signature END IF IF @lpImageNtHeaders.FileHeader.SizeOfOptionalHeader <> SIZEOF(@lpImageNtHeaders.OptionalHeader) OR _ @lpImageNtHeaders.OptionalHeader.Magic <> %IMAGE_NT_OPTIONAL_HDR32_MAGIC THEN EXIT FUNCTION lpImageExportDirectory = @lpImageNtHeaders.OptionalHeader.DataDirectory(%IMAGE_DIRECTORY_ENTRY_EXPORT).VirtualAddress IF lpImageExportDirectory = 0 THEN EXIT FUNCTION lpImageExportDirectory = lpImageExportDirectory + lpImageDosHeader lpNameOrdinals = @lpImageExportDirectory.AddressOfNameOrdinals + lpImageDosHeader lpName = @lpImageExportDirectory.AddressOfNames + lpImageDosHeader lpFunctions = @lpImageExportDirectory.AddressOfFunctions + lpImageDosHeader lpFuncName = VARPTR(FuncName) IF HIWRD(lpFuncName) THEN ' Name FOR i = 0 TO @lpImageExportDirectory.NumberOfFunctions - 1 IF @lpFunctions[i] THEN FOR j = 0 TO @lpImageExportDirectory.NumberOfNames - 1 IF @lpNameOrdinals[j] = i THEN lpExpFuncName = @lpName[j] + lpImageDosHeader IF @lpExpFuncName = FuncName THEN FUNCTION = @lpFunctions[i] + lpImageDosHeader EXIT FUNCTION END IF END IF NEXT END IF NEXT ELSE FOR i = 0 TO @lpImageExportDirectory.NumberOfFunctions - 1 IF lpFuncName = @lpImageExportDirectory.nBase + i THEN IF @lpFunctions[i] THEN FUNCTION = @lpFunctions[i] + lpImageDosHeader EXIT FUNCTION END IF NEXT END IF END FUNCTION FUNCTION LoadPbDllFromMemory ALIAS "LoadDllFromMemory" (BYVAL lpRawDll AS DWORD, BYVAL RawDllSize AS DWORD, lpImageDll AS DWORD) EXPORT AS DWORD DIM sSysInfo AS LOCAL SYSTEM_INFO DIM ImagePages AS LOCAL DWORD DIM lpImageDosHeader AS LOCAL IMAGE_DOS_HEADER PTR DIM lpImageNtHeaders AS LOCAL IMAGE_NT_HEADERS PTR DIM lpImageSectionHeader AS LOCAL IMAGE_SECTION_HEADER PTR DIM lpImageImportDescriptor AS LOCAL IMAGE_IMPORT_DESCRIPTOR PTR DIM lpImageImportByName AS LOCAL IMAGE_IMPORT_BY_NAME PTR DIM lpImageBaseRelocTable AS LOCAL IMAGE_BASE_RELOCATION PTR DIM lpDllName AS LOCAL ASCIIZ PTR DIM szDllName AS LOCAL STRING DIM hDll AS LOCAL DWORD DIM lpFuncNameRef AS LOCAL DWORD PTR DIM lpFuncAddr AS LOCAL DWORD PTR DIM lpTypeOffset AS WORD PTR DIM TpOffset AS WORD DIM lpLink AS LOCAL DWORD PTR DIM fOldProtect AS LOCAL DWORD DIM i AS LOCAL DWORD DIM j AS LOCAL DWORD DIM k AS LOCAL DWORD DIM Protection() AS LOCAL BYTE DIM Addr1 AS LOCAL DWORD DIM Addr2 AS LOCAL DWORD DIM Pg AS LOCAL DWORD DIM Pg1 AS LOCAL DWORD DIM Pg2 AS LOCAL DWORD lpImageDosHeader = lpRawDll IF RawDllSize < SIZEOF(IMAGE_DOS_HEADER) THEN FUNCTION = 1: EXIT FUNCTION IF @lpImageDosHeader.e_magic <> %IMAGE_DOS_SIGNATURE THEN FUNCTION = 1: EXIT FUNCTION ' invalid DOS signature IF RawDllSize < @lpImageDosHeader.e_lfanew + SIZEOF(IMAGE_NT_HEADERS) THEN FUNCTION = 1: EXIT FUNCTION lpImageNtHeaders = lpImageDosHeader + @lpImageDosHeader.e_lfanew IF @lpImageNtHeaders.Signature <> %IMAGE_NT_SIGNATURE THEN FUNCTION = 1: EXIT FUNCTION ' invalid NT signature IF @lpImageNtHeaders.FileHeader.SizeOfOptionalHeader <> SIZEOF(@lpImageNtHeaders.OptionalHeader) OR _ @lpImageNtHeaders.OptionalHeader.Magic <> %IMAGE_NT_OPTIONAL_HDR32_MAGIC THEN FUNCTION = 1: EXIT FUNCTION IF @lpImageNtHeaders.FileHeader.NumberOfSections < 1 THEN FUNCTION = 1: EXIT FUNCTION FOR i = 0 TO %IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1 IF @lpImageNtHeaders.OptionalHeader.DataDirectory(i).VirtualAddress <> 0 THEN SELECT CASE AS LONG i CASE %IMAGE_DIRECTORY_ENTRY_EXPORT ' Export Directory CASE %IMAGE_DIRECTORY_ENTRY_IMPORT ' Import Directory CASE %IMAGE_DIRECTORY_ENTRY_RESOURCE ' Resource Directory CASE %IMAGE_DIRECTORY_ENTRY_BASERELOC ' Base Relocation Table CASE %IMAGE_DIRECTORY_ENTRY_IAT ' Import Address Table CASE ELSE ' Strange for PB FUNCTION = 2: EXIT FUNCTION END SELECT END IF NEXT lpImageSectionHeader = lpImageNtHeaders + SIZEOF(IMAGE_NT_HEADERS) k = lpImageSectionHeader - lpImageDosHeader + SIZEOF(IMAGE_SECTION_HEADER) * @lpImageNtHeaders.FileHeader.NumberOfSections j = k FOR i = 0 TO @lpImageNtHeaders.FileHeader.NumberOfSections - 1 j = MAX(j, @lpImageSectionHeader[i].VirtualAddress + @lpImageSectionHeader[i].SizeOfRawData) NEXT GetSystemInfo sSysInfo ImagePages = j \ sSysInfo.dwPageSize: IF (j MOD sSysInfo.dwPageSize) THEN INCR ImagePages lpImageDll = VirtualAlloc(BYVAL 0, CDWD(ImagePages * sSysInfo.dwPageSize), %MEM_COMMIT, %PAGE_EXECUTE_READWRITE) IF lpImageDll = 0 THEN FUNCTION = 5: EXIT FUNCTION MoveMemory BYVAL lpImageDll, BYVAL lpRawDll, k FOR i = 0 TO @lpImageNtHeaders.FileHeader.NumberOfSections - 1 MoveMemory BYVAL CDWD(lpImageDll + @lpImageSectionHeader[i].VirtualAddress), _ BYVAL CDWD(lpRawDll + @lpImageSectionHeader[i].PointerToRawData), @lpImageSectionHeader[i].SizeOfRawData NEXT ' Switch to new image lpImageDosHeader = lpImageDll lpImageNtHeaders = lpImageDosHeader + @lpImageDosHeader.e_lfanew lpImageSectionHeader = lpImageNtHeaders + SIZEOF(IMAGE_NT_HEADERS) ' Import section lpImageImportDescriptor = @lpImageNtHeaders.OptionalHeader.DataDirectory(%IMAGE_DIRECTORY_ENTRY_IMPORT).VirtualAddress IF lpImageImportDescriptor <> 0 THEN lpImageImportDescriptor = lpImageImportDescriptor + lpImageDosHeader WHILE @lpImageImportDescriptor.OriginalFirstThunk <> 0 ' Dlls lpDllName = @lpImageImportDescriptor.pName + lpImageDosHeader szDllName = @lpDllName hDll = GetModuleHandle(BYVAL STRPTR(szDllName)) IF hDll = 0 THEN hDll = LoadLibrary(BYVAL STRPTR(szDllName)) IF hDll = 0 THEN FUNCTION = 2: EXIT FUNCTION ' Can't find lpFuncNameRef = @lpImageImportDescriptor.OriginalFirstThunk + lpImageDosHeader lpFuncAddr = @lpImageImportDescriptor.FirstThunk + lpImageDosHeader WHILE @lpFuncNameRef <> 0 lpImageImportByName = @lpFuncNameRef + lpImageDosHeader IF (@lpFuncNameRef AND %IMAGE_ORDINAL_FLAG) THEN @lpFuncAddr = GetProcAddress(hDll, BYVAL @lpFuncNameRef AND &HFFFF???) ELSE @lpFuncAddr = GetProcAddress(hDll, @lpImageImportByName.ImpName) END IF IF @lpFuncAddr = 0 THEN FUNCTION = 2: EXIT FUNCTION INCR lpFuncAddr INCR lpFuncNameRef WEND INCR lpImageImportDescriptor LOOP END IF lpImageBaseRelocTable = @lpImageNtHeaders.OptionalHeader.DataDirectory(%IMAGE_DIRECTORY_ENTRY_BASERELOC).VirtualAddress IF lpImageBaseRelocTable <> 0 THEN lpImageBaseRelocTable = lpImageBaseRelocTable + lpImageDosHeader WHILE @lpImageBaseRelocTable.VirtualAddress <> 0 lpTypeOffset = lpImageBaseRelocTable + SIZEOF(IMAGE_BASE_RELOCATION) WHILE lpTypeOffset < lpImageBaseRelocTable + @lpImageBaseRelocTable.SizeOfBlock TpOffset = @lpTypeOffset AND &HF000?? IF TpOffset = &H3000 THEN lpLink = lpImageDosHeader + @lpImageBaseRelocTable.VirtualAddress + (@lpTypeOffset AND &HFFF??) @lpLink = @lpLink - @lpImageNtHeaders.OptionalHeader.ImageBase + lpImageDosHeader ELSEIF TpOffSet = 0 THEN ELSE FUNCTION = 3: EXIT FUNCTION ' Uknown type END IF INCR lpTypeOffset WEND lpImageBaseRelocTable = lpImageBaseRelocTable + @lpImageBaseRelocTable.SizeOfBlock WEND END IF REDIM Protection(ImagePages - 1) FOR i = 0 TO @lpImageNtHeaders.FileHeader.NumberOfSections IF i = @lpImageNtHeaders.FileHeader.NumberOfSections THEN Addr1 = 0: Addr2 = k: j = &H60000000??? ' %PAGE_EXECUTE_READ ELSE Addr1 = @lpImageSectionHeader[i].VirtualAddress Addr2 = @lpImageSectionHeader[i].SizeOfRawData j = @lpImageSectionHeader[i].Characteristics END IF Addr2 = Addr1 + Addr2 - 1 Pg1 = Addr1 \ sSysInfo.dwPageSize Pg2 = Addr2 \ sSysInfo.dwPageSize FOR Pg = Pg1 TO Pg2 IF (j AND &H20000000???) THEN Protection(Pg) = Protection(Pg) OR 1 ' Execute IF (j AND &H40000000???) THEN Protection(Pg) = Protection(Pg) OR 2 ' Read IF (j AND &H80000000???) THEN Protection(Pg) = Protection(Pg) OR 4 ' Write NEXT NEXT Addr1 = lpImageDosHeader FOR Pg = 0 TO ImagePages - 1 SELECT CASE AS LONG Protection(Pg) CASE 2: fOldProtect = %PAGE_READONLY CASE 3: fOldProtect = %PAGE_EXECUTE_READ CASE 6: fOldProtect = %PAGE_READWRITE CASE ELSE: fOldProtect = %PAGE_EXECUTE_READWRITE ' Ignore strange combinations END SELECT IF fOldProtect <> %PAGE_EXECUTE_READWRITE THEN _ IF VirtualProtect (BYVAL Addr1, sSysInfo.dwPageSize, fOldProtect, fOldProtect) = 0 THEN FUNCTION = 4: EXIT FUNCTION Addr1 = Addr1 + sSysInfo.dwPageSize NEXT i = @lpImageNtHeaders.OptionalHeader.AddressOfEntryPoint + lpImageDosHeader CALL DWORD i USING EntryPoint (lpImageDosHeader, %DLL_PROCESS_ATTACH, 0) END FUNCTION FUNCTION UnloadPbDllFromMemory ALIAS "UnloadDllFromMemory" (BYVAL lpImageDosHeader AS IMAGE_DOS_HEADER PTR) EXPORT AS DWORD DIM lpImageNtHeaders AS LOCAL IMAGE_NT_HEADERS PTR DIM i AS LOCAL DWORD lpImageNtHeaders = lpImageDosHeader + @lpImageDosHeader.e_lfanew i = @lpImageNtHeaders.OptionalHeader.AddressOfEntryPoint + lpImageDosHeader CALL DWORD i USING EntryPoint (lpImageDosHeader, %DLL_PROCESS_DETACH, 0) FUNCTION = VirtualFree (BYVAL lpImageDosHeader, 0, %MEM_RELEASE) END FUNCTION MfG Florian |
||
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
könntest du das vielleicht noch ein wenig mehr erläutern ![]() wo soll ich das einfügen, was ist powerbasic und was soll ich mit der dll machen, um sie aus einer exe zu laden. Muss ich sie dann nicht mehr extra in den ordner stecken oder oder oder xD? |
||
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Erstellung einer Resource-File *.rc Code: [AUSKLAPPEN] #include "Resource.h" 100 bin "MyDll.dll" Compilieren der Resource mit RC.EXE. Name der Resource-File *.Res Aufruf PBRes.exe *.Res Resource im Programm einbenden #Resource "MyDll.PBR" 'PowerBasicResource 'Function bekannt machen. DECLARE FUNCTION MyFunction() AS String 'Resource ermitteln Resinfo=FindResource(hInstance, "#100", "bin") 'Die Resource wird im Hauptspeicher geladen. 'Res ist Adresse Res=LoadResource(hInstance,Resinfo) 'Länge ermitteln Lang=SizeofResource(hInstance,Resinfo) 'Inst DLL 'My_Dll ist ein zeiger der auf die Adresse zeigt. LoadPbDllFromMemory Res,SizeofResource(hInstance,Resinfo),My_Dll 'Hier mit wird die Adresse der Function "MayFunction" ermittelt addr_MyFunction=GetProcAddressDirectly(My_Dll, "MyFunction") 'Die Function wird über einen Zeiger aufgerufen. CALL DWORD addr_MyFunction using MyFunction() TO S$ MfG Florian |
||
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Eine Dll beizufügen weil "es professionell aussieht" ist doch -man verzeihe- Bullshit.
Ich bau mir doch nicht Extraballast rein nur weil es gut aussieht und ich damit meine angeben zu können. Finde ich nicht. Ach komm, da bei großen Spiele meistens viele Dateien sind, ist es doch egal, ob da nun paar x KB kleine Dlls reinkommen. Wenn ich z.B die Unreal Engine bei einem Spiel dabei sehe ist mir sofort klar, das muss ein Hammer Spiel sein. Du kopiert die Dll einfach in die Exe rein(Per writebyte) und beim Laden des Spiel erstellst du eine leere Dll und kopierst den Wert von der exe in die Dll. |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso.
Du bewertest Spiele nach Größe und Anzahl/Art der Dateien. Also ist irgendsoein Kiddie-Mist hier aus dem Forum toll, weil es zig Dlls benutzt und den Source dabei hat (sind ja viele Dateien) besser, als die Standalone-Exe-Demo von Don't get Angry 2? ![]() |
||
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Mit den Types geht es nicht. Types haben bei PowerBasic immer eine feste Länge. BlitzBasic hingegen Dynamische-Types. Die länge und Adresse kann sich zur laufzeit ändern. Mit der Userlib müste es gehen. In die User-lib müssen viele dafür hinein geschrieben. Liste der nötzlichen Function Enthalten Peek und Poke Code: [AUSKLAPPEN] DECLARE FUNCTION SysAllocString LIB "OLEAUT32.DLL" ALIAS "SysAllocString" (sz AS ANY) AS DWORD DECLARE FUNCTION SysReAllocString LIB "OLEAUT32.DLL" ALIAS "SysReAllocString" (pbstr AS ANY, psz AS ANY) AS LONG DECLARE FUNCTION SysAllocStringLen LIB "OLEAUT32.DLL" ALIAS "SysAllocStringLen" (pch AS ANY, BYVAL cch AS DWORD) AS DWORD DECLARE FUNCTION SysReAllocStringLen LIB "OLEAUT32.DLL" ALIAS "SysReAllocStringLen" (pbstr AS ANY, psz AS ANY, BYVAL cch AS DWORD) AS LONG DECLARE SUB SysFreeString LIB "OLEAUT32.DLL" ALIAS "SysFreeString" (bstr AS ANY) DECLARE FUNCTION SysStringLen LIB "OLEAUT32.DLL" ALIAS "SysStringLen" (bstr AS ANY) AS DWORD DECLARE FUNCTION SysStringByteLen LIB "OLEAUT32.DLL" ALIAS "SysStringByteLen" (bstr AS ANY) AS DWORD DECLARE FUNCTION SysAllocStringByteLen LIB "OLEAUT32.DLL" ALIAS "SysAllocStringByteLen" (psz AS ASCIIZ, BYVAL ulen AS DWORD) AS DWORD DECLARE SUB GlobalFix LIB "KERNEL32.DLL" ALIAS "GlobalFix" (BYVAL hMem AS DWORD) DECLARE FUNCTION GlobalFlags LIB "KERNEL32.DLL" ALIAS "GlobalFlags" (BYVAL hMem AS DWORD) AS LONG DECLARE FUNCTION GlobalFree LIB "KERNEL32.DLL" ALIAS "GlobalFree" (BYVAL hMem AS DWORD) AS LONG DECLARE FUNCTION HeapAlloc LIB "KERNEL32.DLL" ALIAS "HeapAlloc" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD, BYVAL dwBytes AS DWORD) AS DWORD DECLARE FUNCTION HeapCompact LIB "KERNEL32.DLL" ALIAS "HeapCompact" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD) AS DWORD DECLARE FUNCTION HeapCreate LIB "KERNEL32.DLL" ALIAS "HeapCreate" (BYVAL flOptions AS DWORD, BYVAL dwInitialSize AS DWORD, BYVAL dwMaximumSize AS DWORD) AS DWORD DECLARE FUNCTION HeapDestroy LIB "KERNEL32.DLL" ALIAS "HeapDestroy" (BYVAL hHeap AS DWORD) AS LONG DECLARE FUNCTION HeapFree LIB "KERNEL32.DLL" ALIAS "HeapFree" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD, BYVAL lpMem AS DWORD) AS LONG DECLARE FUNCTION HeapLock LIB "KERNEL32.DLL" ALIAS "HeapLock" (BYVAL hHeap AS DWORD) AS LONG DECLARE FUNCTION HeapReAlloc LIB "KERNEL32.DLL" ALIAS "HeapReAlloc" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD, BYVAL lpMem AS DWORD, BYVAL dwBytes AS DWORD) AS DWORD DECLARE FUNCTION HeapSize LIB "KERNEL32.DLL" ALIAS "HeapSize" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD, BYVAL lpMem AS DWORD) AS DWORD DECLARE FUNCTION HeapUnlock LIB "KERNEL32.DLL" ALIAS "HeapUnlock" (BYVAL hHeap AS DWORD) AS LONG DECLARE FUNCTION HeapValidate LIB "KERNEL32.DLL" ALIAS "HeapValidate" (BYVAL hHeap AS DWORD, BYVAL dwFlags AS DWORD, BYVAL lpMem AS DWORD) AS LONG DECLARE FUNCTION VirtualAlloc LIB "KERNEL32.DLL" ALIAS "VirtualAlloc" (lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL flAllocationType AS LONG, BYVAL flProtect AS LONG) AS LONG DECLARE FUNCTION VirtualAllocEx LIB "KERNEL32.DLL" ALIAS "VirtualAllocEx" (BYVAL hProcess AS DWORD, lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL flAllocationType AS DWORD, BYVAL flProtect AS DWORD) AS DWORD DECLARE FUNCTION VirtualFree LIB "KERNEL32.DLL" ALIAS "VirtualFree" (lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL dwFreeType AS DWORD) AS LONG DECLARE FUNCTION VirtualFreeEx LIB "KERNEL32.DLL" ALIAS "VirtualFreeEx" (BYVAL hProcess AS DWORD, lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL dwFreeType AS DWORD) AS LONG DECLARE FUNCTION VirtualLock LIB "KERNEL32.DLL" ALIAS "VirtualLock" (lpAddress AS ANY, BYVAL dwSize AS DWORD) AS LONG DECLARE FUNCTION VirtualProtect LIB "KERNEL32.DLL" ALIAS "VirtualProtect" (lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL flNewProtect AS LONG, lpflOldProtect AS LONG) AS LONG DECLARE FUNCTION VirtualProtectEx LIB "KERNEL32.DLL" ALIAS "VirtualProtectEx" (BYVAL hProcess AS DWORD, lpAddress AS ANY, BYVAL dwSize AS DWORD, BYVAL flNewProtect AS LONG, lpflOldProtect AS LONG) AS LONG DECLARE FUNCTION VirtualQuery LIB "KERNEL32.DLL" ALIAS "VirtualQuery" (lpAddress AS ANY, lpBuffer AS MEMORY_BASIC_INFORMATION, BYVAL dwLength AS DWORD) AS LONG DECLARE FUNCTION VirtualQueryEx LIB "KERNEL32.DLL" ALIAS "VirtualQueryEx" (BYVAL hProcess AS DWORD, lpAddress AS ANY, lpBuffer AS MEMORY_BASIC_INFORMATION, BYVAL dwLength AS DWORD) AS LONG Code: [AUSKLAPPEN] #INCLUDE "WIN32API.INC" %IMAGE_ORDINAL_FLAG = &H80000000 TYPE IMAGE_IMPORT_BY_NAME Hint AS WORD ImpName AS ASCIIZ * 254 END TYPE TYPE IMAGE_IMPORT_DESCRIPTOR OriginalFirstThunk AS DWORD TimeDateStamp AS DWORD ForwarderChain AS DWORD pName AS DWORD FirstThunk AS DWORD END TYPE TYPE IMAGE_BASE_RELOCATION VirtualAddress AS DWORD SizeOfBlock AS DWORD END TYPE MfG Florian |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Florian, das hier ist kein Powerbasic-board, insofern ist dein Code ein wenig fehlplaziert. Kannst Du ihm eine Lösung für BB anbieten? Poste sie. Der Rest hat hier nix verloren. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Florian |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
Die Lösung ist ein wenig kompliziert, da BlitzBasic keine Zeiger hat. Lad Dir am Besten die Win32API herunter und versucht die Zeiger-Technik mit API nach zubauen. MfG Florian |
||
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Achso.
Du bewertest Spiele nach Größe und Anzahl/Art der Dateien. Also ist irgendsoein Kiddie-Mist hier aus dem Forum toll, weil es zig Dlls benutzt und den Source dabei hat (sind ja viele Dateien) besser, als die Standalone-Exe-Demo von Don't get Angry 2? Lol. Nein. Aber wenn ich das Spiel noch nicht getestet habe und ich mir nur so den Inhalt angucke und sehen da eine Exe, dann denke ich "Na das kann ja spannen werden..-_-", sehe ich jedoch haufenweise Dlls + ne super 3d engine, weiß ich, dass das Spiel ein Kracher sein muss. Ist jetzt aber egal. >Lad Dir am Besten die Win32API herunter und versucht die Zeiger-Technik mit API nach zubauen. ![]() |
||
![]() |
SmilyBetreff: Re: System Userlib |
![]() Antworten mit Zitat ![]() |
---|---|---|
DW hat Folgendes geschrieben: (...)
Laufwerk öffnen, schließen Überschrift erklärt alles. DECLS Datei: Code: [AUSKLAPPEN] .lib "winmm.dll" mciExecute%(lpstrCommand$) : "mciExecute" lpstrCommand$: Öffnen: "Set CDaudio door open" Schließen: "Set CDaudio door closed" das interesiert mich. ^^ Dem Syntax nach zu urteilen gehe ich mal davon aus, dass man mit diesen Befehl noch mehr machen kann... kann dazu irgendwer was sagen? ![]() |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bloß weil ein spiel mit einer hochdotierten Engine erstellt wurde muss es kein Kracher sein. Die engine stellt nur Funktionalität zur Verfügung. Was draus gemacht wird kann auch totaler Mist sein.
Ich guck definitiv nicht ob irgendwelche Dateien mitgeliefert sind. Das Spiel selbst muss überzeugen. Mal ab von der Tatsache dass ich normalerweise schon weiss ob mich ein Spiel anspricht wenn ich es kaufen gehe. Sonst würd ich es ja nicht kaufen. Edit: Upps, totaler offtopic. Ich halt dann jetzt mal die Schnauze. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Als PRogrammierer interessiert es mich nunmal, welche Engine das Spiel benutzt und welche Dateiformate.
Und was Dlls sind muss mir nun keiner erklären. ![]() @Smily0412: Was genau willst du denn machen? |
||
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~GESCHLOSSEN~ Irgendwie ist mir dieser Thread schon länger ein Dorn im Auge. Das im DLLs und Userlibs Archiv nicht diskutiert werden sollte, wisst ihr ja. Zwischendurch waren wir auch bei Wünsch-Dir-Was-Als-DLL, was auch nicht so der Hit war. Würde ich splitten wollen, müsste ich wohl mindestens 3 Threads aufmachen, so viel Off-Topic Gelaber wie hier drin ist. Naja, nun reicht's. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group