Datei aus DLL bekommen, nur wie?
-
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 irre
mfg
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 Kriese

Wie 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