Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Code xuất file từ resource dll, lỗi: xuất ra 1 file mà nó chẳng có gì cả

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    93

    Mặc định Code xuất file từ resource dll, lỗi: xuất ra 1 file mà nó chẳng có gì cả

    HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_DATA2), RT_RCDATA);
    HGLOBAL hMem = LoadResource(0, hRes);
    PVOID pMem = LockResource(hMem);
    DWORD dwSize = SizeofResource(0, hRes);
    HANDLE hFile = CreateFile("c:\\1.txt",GENERIC_ALL,NULL,CREATE_ALW AYS,FILE_ATTRIBUTE_NORMAL,NULL);
    DWORD dwByteWritten = WriteFile(hFile,hMem,dwSize,&dwByteWritten,NULL);


    Chỉnh sửa dùm em. Xuất ra 1 file mà nó chẳng có gì cả, trống rỗng

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Bạn đang tự extract resource từ chính chương trình của bạn ra. Nhưng bạn có chắc là file exe của chương trình của bạn có resource dạng RCDATA với tên là IDR_DATA2 ko ? Bạn dùng resource hacker xem thử xem.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trích dẫn Nguyên bản được gửi bởi hsagduag Xem bài viết
    HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_DATA2), RT_RCDATA);
    HGLOBAL hMem = LoadResource(0, hRes);
    PVOID pMem = LockResource(hMem);
    DWORD dwSize = SizeofResource(0, hRes);
    HANDLE hFile = CreateFile("c:\\1.txt",GENERIC_ALL,NULL,CREATE_ALW AYS,FILE_ATTRIBUTE_NORMAL,NULL);
    DWORD dwByteWritten = WriteFile(hFile,hMem,dwSize,&dwByteWritten,NULL);


    Chỉnh sửa dùm em. Xuất ra 1 file mà nó chẳng có gì cả, trống rỗng
    Nhìn đã thấy sai rồi. Bạn xem lại cấu trúc hàm WriteFile nhé

    Sửa đoạn

    C++ Code:
    1. DWORD dwByteWritten = WriteFile(hFile,hMem,dwSize,&dwByteWritten,NULL);
    thành

    C++ Code:
    1. DWORD dwByteWritten = 0;
    2. BOOL bRet = WriteFile(hFile, pMem, dwSize, &dwByteWritten, NULL);
    3. CloseHandle(hFile);

    hoặc đơn giản hơn. Có thể dùng mã C để thay thế toàn bộ đoạn đó

    C++ Code:
    1. FILE *f = fopen("C:\\abc.txt", "wb");
    2. fwrite(pMem, dwSize, 1, f);
    3. fclose(f);
    Đã được chỉnh sửa lần cuối bởi gianghoplus : 15-10-2011 lúc 12:24 PM.
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    93

    Mặc định Xuất resource trong DLL ra vẫn bị lỗi 0kb !

    Mình đã làm rất đầy đủ thao tác

    //resource.h

    #define IDR_DATA1 101


    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE 102
    #define _APS_NEXT_COMMAND_VALUE 40001
    #define _APS_NEXT_CONTROL_VALUE 1001
    #define _APS_NEXT_SYMED_VALUE 101
    #endif
    #endif


    Thậm chí KeyHook.rc của mình vẫn thông báo đường dẫn File resource đầy đủ

    IDR_DATA1 DATA "C:\\data.ccx"

    và mình đã add source như thế này ( thông tin nội dung vẫn đầy đủ )



    Và cpp của mình đây

    //KeyHook.cpp

    HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
    HGLOBAL hMem = LoadResource(0, hRes);
    PVOID pMem = LockResource(hMem);
    DWORD dwSize = SizeofResource(0, hRes);
    FILE *f = fopen("data.ccx", "w");
    fwrite(hMem, dwSize, 1, f);
    fclose(f);


    Khi xuất FILE, data.ccx của mình là 0kb !! giúp cho mình. mình sai chỗ nào >.<

  5. #5
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trời, bạn vẫn chưa phân biệt được biến kiểu h___ (handle) và p___ (pointer) ah.

    Hình như bạn chưa đọc các bài trả lời trước của mình

    fwrite(hMem, dwSize, 1, f);
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    93

    Mặc định Code xuất file từ resource dll, lỗi: xuất ra 1 file mà nó chẳng có gì cả

    mình đã đọc r mà >.< làm theo còn gì nữa. xem laiại mấy cái cpp và rc vẫn đầy đủ cả mà. rốt cuộc suất ra 0kb kìa >.<

  7. #7
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trích dẫn Nguyên bản được gửi bởi hsagduag Xem bài viết
    mình đã đọc r mà >.< làm theo còn gì nữa. xem laiại mấy cái cpp và rc vẫn đầy đủ cả mà. rốt cuộc suất ra 0kb kìa >.<
    vậy thì sửa cái hMem thay pMem ở đoạn fwrite đi
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    93

    Cũng không được bạn ơi.

    Không biết mình add Source có đúng không nhưng tập tin Resource có 1 data.bin khi mình chuyển nó từ tập tin tổng sang.

    HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
    HGLOBAL hMem = LoadResource(0, hRes);
    PVOID pMem = LockResource(hMem);
    DWORD dwSize = SizeofResource(0, hRes);
    FILE *f = fopen("data.ccx", "wb");
    fwrite(pMem, dwSize, 1, f);
    fclose(f);


    vẫn không có hiệu quả từ bộ code này.

    mình cũng thử luôn

    HMODULE hModule = NULL;
    HRSRC ACV = FindResource(hModule,MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
    HGLOBAL gl = LoadResource(hModule,ACV);
    char *lp=(char*)LockResource(gl);
    HANDLE fp = CreateFile("data.acv",GENERIC_WRITE,FILE_SHARE_REA D,NULL,CREATE_ALWAYS,0,NULL);
    DWORD dwWrite,dwLen = SizeofResource(hModule,ACV);
    WriteFile (fp,lp,dwLen,&dwWrite,NULL);
    CloseHandle(fp);
    FreeResource(gl);


    Cũng 0Kb !!

    Mình thua rồi. bạn xem lại dùm còn sai sót chỗ nào ko

  9. #9
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trích dẫn Nguyên bản được gửi bởi hsagduag Xem bài viết
    Cũng không được bạn ơi.

    Không biết mình add Source có đúng không nhưng tập tin Resource có 1 data.bin khi mình chuyển nó từ tập tin tổng sang.

    HRSRC hRes = FindResource(0, MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
    HGLOBAL hMem = LoadResource(0, hRes);
    PVOID pMem = LockResource(hMem);
    DWORD dwSize = SizeofResource(0, hRes);
    FILE *f = fopen("data.ccx", "wb");
    fwrite(pMem, dwSize, 1, f);
    fclose(f);


    vẫn không có hiệu quả từ bộ code này.

    mình cũng thử luôn

    HMODULE hModule = NULL;
    HRSRC ACV = FindResource(hModule,MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
    HGLOBAL gl = LoadResource(hModule,ACV);
    char *lp=(char*)LockResource(gl);
    HANDLE fp = CreateFile("data.acv",GENERIC_WRITE,FILE_SHARE_REA D,NULL,CREATE_ALWAYS,0,NULL);
    DWORD dwWrite,dwLen = SizeofResource(hModule,ACV);
    WriteFile (fp,lp,dwLen,&dwWrite,NULL);
    CloseHandle(fp);
    FreeResource(gl);


    Cũng 0Kb !!

    Mình thua rồi. bạn xem lại dùm còn sai sót chỗ nào ko
    Code thì đúng rồi. Nhưng cách add Resouce vào project của bạn bị sai

    Phải đặt tên type của resouce là RCDATA nó mới chấp nhận. OK ?

    IDR_DATA1 RCDATA "C:\\data.ccx"
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  10. #10
    Ngày gia nhập
    03 2009
    Bài viết
    93

    thua rồi. cũng chẳng được. add vào MFC thì ngon còn dll thì....không ổn

Các đề tài tương tự

  1. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  2. Đếm các xâu thuận nghịch xuất hiện trong file và số lần xuất hiện của các xâu đó
    Gửi bởi orchidshl1 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 19-09-2012, 10:47 AM
  3. Lập trình C++: Lỗi code không xuất ra file được?
    Gửi bởi trankieu90 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 06-04-2011, 03:01 AM
  4. đếm số lần xuất hiện các kí tự của 1 file trong c++ về nhập và xuất file
    Gửi bởi hoangphuc_nd92 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-04-2011, 09:00 PM
  5. Code nhập xuất file trên C, lỗi in ra toàn ô vuông, sửa thế nào?
    Gửi bởi stalin trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 12-05-2009, 05:00 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn