Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Includere file nell'eseguibile
Forum - C/C++ - Includere file nell'eseguibile - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 21:39
Lunedė, 01/09/2008
Sė gli dai dei nomi in modo tale da essere ritrovate

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:42
Lunedė, 01/09/2008
ok quello capito, ma poi per copiarle come faccio ?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 21:57
Martedė, 02/09/2008
Non ho capito dove le vuoi copiare:

1) Eseguibile -> Disco
Il sorgente lo scritto un po' pių su, rieccolo
Codice sorgente - presumibilmente Plain Text

  1. //Cerco la risorsa nell'eseguibile
  2. HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(ID_RISORSA), RT_RCDATA);
  3.  
  4. //Carico la risorsa
  5. HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc);
  6.  
  7. //Ricavo il puntatore.
  8. void* pRsrcData = LockResource(hLoadRsrc);
  9.  
  10. //...utilizzo la risorsa....



2) Disco -> Eseguibile :
Aggiungi il file dall'rc editor.

;)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:47
Mercoledė, 03/09/2008
si ho gia provato a fare cosi, ho inserito la risorsa e gli ho dato il nome IDB_CAMMELLO e poi ho inserito il tuo codice cosi :
Codice sorgente - presumibilmente Plain Text

  1. //Cerco la risorsa nell'eseguibile
  2. HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDB_CAMMELLO), RT_RCDATA);
  3.  
  4. //Carico la risorsa
  5. HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc);
  6.  
  7. //Ricavo il puntatore.
  8. void* pRsrcData = LockResource(hLoadRsrc);
  9.  
  10. //...utilizzo la risorsa....


ma non me la copia da nessuna parte, cosa devo aggiungere ?

Ultima modifica effettuata da il 03/09/2008 alle 17:48
PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 21:44
Mercoledė, 03/09/2008
Non la copia da nessuna parte, perchč il codice non fa altro che ricavare un puntatore alla risorsa desiderata, si ferma lė :D

Per salvarla FISICAMENTE, credo che i passi da seguire siano i seguenti (dopo che hai ricavato il puntatore alla risorsa desiderata):

- Ricavi la dimensione con SizeOfResource
- Scrivi su file i dati puntati dal puntatore che hai ricavato in precedenza, il numero dei bytes da scrivere te lo da SizeOfResource

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:00
Mercoledė, 03/09/2008
scusa l'ignoranza ma non riesco a ottenere il numero di byte da scrivere, io faccio cosi:

int size = pRsrcData.SizeOfResource();

e una volta ottenuto il numero come faccio a tirarli fuori dal puntatore uno per volta ? cosi ?

int b;

for(numero di byte)
{
b=pRsrcData++;
}

e poi per scriverli uso ofstream ?

PM Quote
Avatar
Dax89 (Member)
Expert


Messaggi: 283
Iscritto: 07/04/2007

Segnala al moderatore
Postato alle 0:14
Giovedė, 04/09/2008
Ehm, stiamo facendo un po' di confusione....:-|

Codice sorgente - presumibilmente C/C++

  1. //Cerco la risorsa nell'eseguibile
  2. HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDB_CAMMELLO), RT_RCDATA);
  3.  
  4. //Carico la risorsa
  5. HGLOBAL hLoadRsrc = LoadResource(NULL, hRsrc);
  6.  
  7. //Ricavo il puntatore.
  8. void* pRsrcData = LockResource(hLoadRsrc);
  9.  
  10. int resSize = SizeOfResource(GetModuleHandle(NULL), hRsrc);
  11.  
  12. //Salvo la risorsa
  13. HANDLE hFile = CreateFile("C:\\MiaRisorsa.dat", GENERIC_READ, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
  14.  
  15. DWORD bytesWritten;
  16.  
  17. WriteFile(hFile, pRsrcData, resSize, &bytesWritten, NULL);
  18.  
  19. CloseHandle(hFile);



Dovrebbe essere pių o meno una cosa cosė ;)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:33
Giovedė, 04/09/2008
ho inserito il tuo codice, ma visual studio non me lo compila
mi dice: SizeOfResource identifier not found, e si che ho inserito
#include <winbase.h>
#include <windows.h>
#pragma comment (lib,kernel32.lib)

ho anche provato a inserire kernel32.dll invece e .lib ma non va

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo