نمایش نتایج 1 تا 6 از 6

نام تاپیک: سوال در مورد API و dll

  1. #1

    Exclamation سوال در مورد API و dll

    سلام
    من مي خوام تو يه سورس يك dll تابعي بنويسم كه از آن طريق اسم برنامه اي كه اين dll رادر هنگام اجرا فراخواني كرده برگرداند
    كسي مي داند از كدام API ويندوز مي شود كمك گرفت ؟؟؟

  2. #2

    نقل قول: سوال در مورد API و dll

    نقل قول نوشته شده توسط mesgar مشاهده تاپیک
    سلام
    من مي خوام تو يه سورس يك dll تابعي بنويسم كه از آن طريق اسم برنامه اي كه اين dll رادر هنگام اجرا فراخواني كرده برگرداند كسي مي داند از كدام API ويندوز مي شود كمك گرفت ؟؟؟
    GetModuleFileName

  3. #3

    نقل قول: سوال در مورد API و dll

    سلام
    ممنون از راهنمايتون
    من الان يك dll با زبان سي پلاس پلاس به نام "dll_new.dll"ساخته ام با كد :
    #include "stdafx.h"

    BOOL APIENTRY DllMain( HANDLE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
    )
    {
    return TRUE;
    };
    char name[100];
    char* GetName()
    {
    GetModuleFileName(NULL,name,100);
    return name;
    }
    و بعد يك پروژه سي شارپ ساخته ام تا بتوانم از آن dll استفاده كنم با كد :
    private const string DLLFileName = @"dll_new.dll";
    [DllImport(DLLFileName, EntryPoint = "GetName")]
    public static extern string GetName();
    public Form1()
    {
    InitializeComponent();
    MessageBox.Show(GetName());
    }
    ولي هنگام اجرا هنگامي كه به خط نشان دادن مسيج باكس مي رسد ارور مي دهد كه :
    Unable to find an entry point named 'GetName' in DLL 'dll_new.dll'.
    نمي دانم مشكل كجاست ؟؟؟
    ممنون مي شم اگه كسي راهنماييم كند

  4. #4

    نقل قول: سوال در مورد API و dll

    سلام.
    آیا GetName رو در DLL اتون EXPORT کردین؟ در فایل .DEF منظورمه، یا بصورت declarative...؟

  5. #5

    نقل قول: سوال در مورد API و dll

    به شکل زیر می توانید عمل export را انجام دهید: (باید DLL_EXPORTS را تعریف کنید با define)

    #ifdef DLL_EXPORTS
    #define DLL_API __declspec(dllexport)
    #else
    #define DLL_API __declspec(dllimport)
    #endif

    // DllMain here....

    DLL_API char* GetName()
    {
    GetModuleFileName(NULL,name,100);
    return name;
    }

  6. #6

    نقل قول: سوال در مورد API و dll

    سلام
    ممنون از پاسختون ولي كدي كه گفتيد جايگزين كردم ولي ارور داد
    ولي با راهنماييتون فهميدم كه چه چيزي كم دارد و كد به صورت زير جواب داد
    #include "stdafx.h"
    extern "C" {
    __declspec(dllexport) char* __cdecl GetName ();
    }
    char name[100];
    extern char* GetName()
    {
    GetModuleFileName(NULL,name,100);
    return name;
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •