Datei aus DLL bekommen, nur wie?
-
Hallo Leute
Ich habe da ein großes Problem in sachen DLL und dateien laden.
Ich habe jetzt eine Datei (Kopierschutzmechanismen.ldat) in eine DLL gepackt.
Nun habe ich ein Programm geschrieben mit zwei ComboBoxen.
Die erste ComboBox soll nach starten der Anwendung 34 einträge auslesen.
Die zweite soll dan aber nur 13 auslesen.
Meine Frage dazu lautet:Wie kann Ich diese Liste aus einer DLL laden und dann ihre Werte an die entsprechenden ComboBoxen weitergeben.Sprich: ComboBox 1 soll [Daten CD] alle 34 Werte bekommen und ComboBox 2 soll dann [Audio CD] alle Werte bekommen.
[Kopierbare Kopierschutzmechanismen]
[Daten CD]
01=Alkatech
02=Burut 3P Lock
03=CD-Cops v1-v3
04=CD-Protector
05=CD Check
06=CopyKiller
07=CopyLok
08=CrypKey
09=DBB
10=DiskGuard
11=DummyFiles
12=Easy Lock
13=FADE
14=Free Lock
15=Illegal TOC
16=LaserLok
17=LaserLok Star
18=Lock Blocks
19=PhenoProtect
20=PhenoProtect 2
21=Plain Old Data
22=ProtectCD-VOB
23=Protector
24=RaeuberKS
25=Ring Protech
26=Roxxe
27=SafeDisc v1-v2
28=SafeDisc v3-v4.0
29=SecuRom/New
30=SecuRom New bis 4.77.00.0028
31=SYSIPHUS
32=TZ
33=WinLock
34=WTM CD Protect[Audio CD]
01=Cactus Data Shield v100-v300
02=CCD Lock
03=CD-Extra
04=CloneAudioProtector
05=CoffeeShop 4
06=CopyX
07=Duolizer
08=Karaoke
09=Key2Audio
10=MediaCloq v1-v2
11=MusicGuard
12=Multimedia Audio CD
13=SafeAudio[Beschädigte Daten/CD`s]
01=Damaged Audio
02=Defekte Sektoren
03=Überlänge
04=VCD/SVCD mit Defekten Sektoren
05=Zerkratzte CD[Andere Arten]
01=PSXLybCrypt
02=VCD SVCDIch würde mich über eine Detaierte Antwort sehr freuen. Wenn es geht sogar ein bsp oder code.
mfg pcfreak17
-
pcfreak17 schrieb:
Ich würde mich über eine Detaierte Antwort sehr freuen. Wenn es geht sogar ein bsp oder code.
oh, sehr nett
bevor du keine antwort kriegst: Schau dir die WinAPI-Funktionen FindResource, LoadResource, LockResource etc an in der MSDN.
-
Hallo Black Shadow
Sorry, aber irgentwie glaube ich, dass ich zu dumm bin.
Ich raf das einfach nicht.
Kennst du kein Code bsp?
Du musst wissen, dass ich aus geschriebenen Code am besten lerne.Außerdem ist das schon das zweite Forum wo ich nachfrage.
Bei www.winapi.net/forum möchte irgentwie keiner Antworten.Also bitte ich euch auf Knien, helft mir
mfg pcfreak17
-
Im Forum von winapi.net gibt es bereits ein Beispiel dazu.
-
// Extrahiere die neue Datei aus den Resourcen: HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_BIN1), _T("BIN")); if (hRes == NULL) return 1; // error HGLOBAL hResLoaded = LoadResource(NULL, hRes); if (hResLoaded == NULL) return 1; // error DWORD dwResSize = SizeofResource(NULL, hRes); if (dwResSize == 0) return 1; // error LPVOID pData = LockResource(hResLoaded); if (pData == NULL) return 1; // error HANDLE hTemp = CreateFile(szNewFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (hTemp == INVALID_HANDLE_VALUE) return 1; // error DWORD dwBytesWritten; if (WriteFile(hTemp, pData, dwResSize, &dwBytesWritten, NULL) == FALSE) { CloseHandle(hTemp); UnlockResource(hResLoaded); DeleteFile(szNewFile); return 1; // error } CloseHandle(hTemp); UnlockResource(hResLoaded);
-
Danke für eure Beiträge
Aber wenn ich das ganze Kompiliere, kommen bei mir 18 Fehler raus
hier der Code#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("Klassenname"); HWND hwnd; MSG msg; WNDCLASSEX wndclassex = {0}; wndclassex.cbSize = sizeof(WNDCLASSEX); wndclassex.style = CS_HREDRAW | CS_VREDRAW; wndclassex.lpfnWndProc = WndProc; wndclassex.cbClsExtra = 0; wndclassex.cbWndExtra = 0; wndclassex.hInstance = hInstance; wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW); wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wndclassex.lpszMenuName = NULL; wndclassex.lpszClassName = szAppName; wndclassex.hIconSm = wndclassex.hIcon; if (!RegisterClassEx (&wndclassex)) { MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil szAppName, // Name der Fensterklasse TEXT ("Fenstertitel"), // Fenstertitel WS_OVERLAPPEDWINDOW, // Fensterstil CW_USEDEFAULT, // X-Position des Fensters CW_USEDEFAULT, // Y-Position des Fensters CW_USEDEFAULT, // Fensterbreite CW_USEDEFAULT, // Fensterhöhe NULL, // übergeordnetes Fenster NULL, // Menü hInstance, // Programm-Kopiezähler (Programm-ID) NULL); // zusätzliche Parameter ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_CLONECD1), _T("CloneCD")); if (hRes == NULL) return 1; // error HGLOBAL hResLoaded = LoadResource(NULL, hRes); if (hResLoaded == NULL) return 1; // error DWORD dwResSize = SizeofResource(NULL, hRes); if (dwResSize == 0) return 1; // error LPVOID pData = LockResource(hResLoaded); if (pData == NULL) return 1; // error HANDLE hTemp = CreateFile(szNewFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (hTemp == INVALID_HANDLE_VALUE) return 1; // error DWORD dwBytesWritten; if (WriteFile(hTemp, pData, dwResSize, &dwBytesWritten, NULL) == FALSE) { CloseHandle(hTemp); UnlockResource(hResLoaded); DeleteFile(szNewFile); return 1; // error } CloseHandle(hTemp); UnlockResource(hResLoaded);
Und hier die Fehlermeldungen
Kompilierung läuft... main.cpp E:\Project Ablage\test\main.cpp(58) : error C2065: '_T' : nichtdeklarierter Bezeichner E:\Project Ablage\test\main.cpp(59) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(63) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(67) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(71) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(74) : error C2065: 'szNewFile' : nichtdeklarierter Bezeichner E:\Project Ablage\test\main.cpp(75) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(79) : error C2143: Syntaxfehler : Fehlendes ';' vor 'if' E:\Project Ablage\test\main.cpp(80) : error C2143: Syntaxfehler : Fehlendes ';' vor '{' E:\Project Ablage\test\main.cpp(80) : error C2447: Funktionskopf fehlt - Parameterliste im alten Stil? E:\Project Ablage\test\main.cpp(86) : error C2501: 'CloseHandle' : Fehlende Speicherklasse oder Typbezeichner E:\Project Ablage\test\main.cpp(86) : error C2373: 'CloseHandle' : Neudefinition; unterschiedliche Modifizierer e:\programme\anwendungen\vc98\include\winbase.h(2507) : Siehe Deklaration von 'CloseHandle' E:\Project Ablage\test\main.cpp(86) : error C2440: 'initializing' : 'void *' kann nicht in 'int' konvertiert werden Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat E:\Project Ablage\test\main.cpp(87) : error C2143: Syntaxfehler : Fehlendes ')' vor ',' E:\Project Ablage\test\main.cpp(87) : error C2501: 'hResLoaded' : Fehlende Speicherklasse oder Typbezeichner E:\Project Ablage\test\main.cpp(87) : error C2040: 'hResLoaded' : 'int' unterscheidet sich von 'void *' in bezug auf die Anzahl vorgenommener Dereferenzierungen E:\Project Ablage\test\main.cpp(87) : error C2059: Syntaxfehler : 'constant' E:\Project Ablage\test\main.cpp(87) : error C2059: Syntaxfehler : ')' Fehler beim Ausführen von cl.exe. test.exe - 18 Fehler, 0 Warnung(en)
Was zum Teufel mach ich jetzt schon wieder falsch.
Ich krig noch die Kriese
-
ähm ich kenne mich da nicht so aus..
aber sollte der ganze code mit der ganzen if-abfragen nicht in einer funktion stehen?
lasse mich gerne berichtigen falls ich mich irremfg
BigNeal
-
Hallo BigNeal
Ja du hast Recht,sorry.
Habe das jetzt so gemacht#include <windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT ("Klassenname"); HWND hwnd; MSG msg; WNDCLASSEX wndclassex = {0}; wndclassex.cbSize = sizeof(WNDCLASSEX); wndclassex.style = CS_HREDRAW | CS_VREDRAW; wndclassex.lpfnWndProc = WndProc; wndclassex.cbClsExtra = 0; wndclassex.cbWndExtra = 0; wndclassex.hInstance = hInstance; wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW); wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wndclassex.lpszMenuName = NULL; wndclassex.lpszClassName = szAppName; wndclassex.hIconSm = wndclassex.hIcon; if (!RegisterClassEx (&wndclassex)) { MessageBox (NULL, TEXT ("RegisterClassEx fehlgeschlagen!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, // erweiterter Fensterstil szAppName, // Name der Fensterklasse TEXT ("Fenstertitel"), // Fenstertitel WS_OVERLAPPEDWINDOW, // Fensterstil CW_USEDEFAULT, // X-Position des Fensters CW_USEDEFAULT, // Y-Position des Fensters CW_USEDEFAULT, // Fensterbreite CW_USEDEFAULT, // Fensterhöhe NULL, // übergeordnetes Fenster NULL, // Menü hInstance, // Programm-Kopiezähler (Programm-ID) NULL); // zusätzliche Parameter ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { // Extrahiere die neue Datei aus den Resourcen: HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_CLONECD1),("CloneCD")); if (hRes == NULL) return 1; // error HGLOBAL hResLoaded = LoadResource(NULL, hRes); if (hResLoaded == NULL) return 1; // error DWORD dwResSize = SizeofResource(NULL, hRes); if (dwResSize == 0) return 1; // error LPVOID pData = LockResource(hResLoaded); if (pData == NULL) return 1; // error HANDLE hTemp = CreateFile(szNewFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (hTemp == INVALID_HANDLE_VALUE) return 1; // error DWORD dwBytesWritten; if (WriteFile(hTemp, pData, dwResSize, &dwBytesWritten, NULL) == FALSE) { CloseHandle(hTemp); UnlockResource(hResLoaded); DeleteFile(szNewFile); return 1; // error } CloseHandle(hTemp); UnlockResource(hResLoaded); }
Aber es gibt immernoch eine Fehlermeldung
E:\Project Ablage\test\main.cpp(77) : error C2065: 'szNewFile' : nichtdeklarierter Bezeichner Fehler beim Ausführen von cl.exe.
-
Ist das dein Ernst? Wir sind hier kein Kindergartenverein, bitte lern erstal die Grundlagen der C Programmierung bevor du sowas versuchst.
-
Frickler
-
Ja ihr habt ja Recht.
Ich sollte wirklich erstmal lernen was Funktonen, Methoden usw. sind
Könnt ihr mir ein gutes Buch für Anfänger empfehlen
-
pcfreak17 schrieb:
Was zum Teufel mach ich jetzt schon wieder falsch.
Ich krig noch die KrieseWie gut, das man Dir ein doch ausfhrliches Beispiel gepostet hat...
Bye, TGGC (Das Jahr des Helden)
-
pcfreak17 schrieb:
Ja ihr habt ja Recht.
Ich sollte wirklich erstmal lernen was Funktonen, Methoden usw. sind
Könnt ihr mir ein gutes Buch für Anfänger empfehlenin der bücherecke von c-plusplus.net gibts einige empfehlungen, auch online-zeug. ansonsten wurde diese frage schon häufig gestellt (nicht nur in diesem forum), also einfach mal suchen