سلام
من مي خوام تو يه سورس يك dll تابعي بنويسم كه از آن طريق اسم برنامه اي كه اين dll رادر هنگام اجرا فراخواني كرده برگرداند
كسي مي داند از كدام API ويندوز مي شود كمك گرفت ؟؟؟
سلام
من مي خوام تو يه سورس يك dll تابعي بنويسم كه از آن طريق اسم برنامه اي كه اين dll رادر هنگام اجرا فراخواني كرده برگرداند
كسي مي داند از كدام API ويندوز مي شود كمك گرفت ؟؟؟
سلام
ممنون از راهنمايتون
من الان يك dll با زبان سي پلاس پلاس به نام "dll_new.dll"ساخته ام با كد :
و بعد يك پروژه سي شارپ ساخته ام تا بتوانم از آن 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;
}
ولي هنگام اجرا هنگامي كه به خط نشان دادن مسيج باكس مي رسد ارور مي دهد كه :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'.
نمي دانم مشكل كجاست ؟؟؟
ممنون مي شم اگه كسي راهنماييم كند
به شکل زیر می توانید عمل 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;
}
سلام
ممنون از پاسختون ولي كدي كه گفتيد جايگزين كردم ولي ارور داد
ولي با راهنماييتون فهميدم كه چه چيزي كم دارد و كد به صورت زير جواب داد
#include "stdafx.h"
extern "C" {
__declspec(dllexport) char* __cdecl GetName ();
}
char name[100];
extern char* GetName()
{
GetModuleFileName(NULL,name,100);
return name;
}