PDA

View Full Version : سوال: فراخوانی api در سی شارپ



mehran_286
چهارشنبه 19 فروردین 1394, 15:20 عصر
با عرض سلام و خسته نباشید

چجوری میشه یه api رو فراخوانی کرد تو سی شارپ

و نحوه تشخیص توابع api چجوری هستش ؟

یه سوال دیگه اینکه api های سی پلاس پلاس تو سی شارپ میشه استفاده کرد؟

من هر کاری میکنم نمیتونم winpcap رو تو سی شارپ استفاده کنم ؟
دوستان اگر میشه راهنمایی کنید با تشکر

am_al_59
چهارشنبه 19 فروردین 1394, 15:44 عصر
روش کلی اینه

[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);

خط اول نام کتابخونه ای هست که تابع توش قرار داره
خط بعدی هم نام تابع و مقدار خروجی (اگر داشته باشه) به همراه پارامتر های اون هست

اگر بخوای از طریق API از توابعی که در C++‎ نوشتی استفاده کنی باید اون توابع رو طبق استاندار خاصی پیاده سازی کنی
DLLImport در C#‎ فقط با توابعی مار میکنه که خروجی و ورودیشون از نوع c باشه

mehran_286
چهارشنبه 19 فروردین 1394, 17:01 عصر
روش کلی اینه

[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);

خط اول نام کتابخونه ای هست که تابع توش قرار داره
خط بعدی هم نام تابع و مقدار خروجی (اگر داشته باشه) به همراه پارامتر های اون هست

اگر بخوای از طریق API از توابعی که در C++‎‎‎‎‎ نوشتی استفاده کنی باید اون توابع رو طبق استاندار خاصی پیاده سازی کنی
DLLImport در C#‎‎‎‎‎ فقط با توابعی مار میکنه که خروجی و ورودیشون از نوع c باشه

public partial class Form1 : Form
{
[DllImport("wpcap.dll")]
public static extern int MessageBox(int h, string m, string c, int type);

جای درستی نوشتم
یا باید بعد از usingها تعریف بشه ؟؟

Mr.Csharp
چهارشنبه 19 فروردین 1394, 22:20 عصر
public partial class Form1 : Form
{
[DllImport("wpcap.dll")]
public static extern int MessageBox(int h, string m, string c, int type);

جای درستی نوشتم
یا باید بعد از usingها تعریف بشه ؟؟

[DllImport("wpcap.dll")]
این خط کلا خارج از {} نوشته میشه

public static extern int MessageBox(int h, string m, string c, int type);

اینم که باید به طور مستقل خارج از {} تعریف بشه

رو فرمتون دو بار کلیک کنید و بالای بلوک Form_Load این دو خط رو بنویسید