PDA

View Full Version : سوال: برنامه نویسی WinAPI



zrahimic
سه شنبه 24 مرداد 1391, 00:54 صبح
با سلام خدمت اساتید محترم.

میشه بفرمایید که در سی شارپ چه طوری میشه برنامه نویسی WinAPI انجام داد؟

من یه نرم افزار دارم که میتونه با DLL ارتباط برقرار کنه و توابع اون رو فراخوانی کنه، ولی نمیدونم این پروژه رو چه طوری باید بنویسم که نرم افزارم بتونه توابع اون DLL رو پیدا کنه. خود نرم افزاره میگه باید WINAPI باشه.

ali_habibi1384
سه شنبه 24 مرداد 1391, 08:05 صبح
بعنوان مثال:

using System;
using System.Runtime.InteropServices;

class Example
{
// Use DllImport to import the Win32 MessageBox function.
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

static void Main()
{
// Call the MessageBox function using platform invoke.
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}

zrahimic
سه شنبه 24 مرداد 1391, 12:17 عصر
ممنون از توجه شما.
ولی سوال من اینه که بتونم با سی شارپ یک سری تابع بنویسم که بشه مثل همین تابع MessageBox که شما مثال زدید از برنامه های دیگه فراخوانی ش کرد.

Mahmoud.Afrad
سه شنبه 24 مرداد 1391, 12:55 عصر
خوب اینکه شما میخواهید یک dll ایجاد کنید چه ربطی به winAPI داره؟!!!

باید پروژه ای از نوع Class Library ایجاد کنید و توابعتون را به صورت پابلیک توش تعریف کنید.

zrahimic
سه شنبه 24 مرداد 1391, 17:47 عصر
خب من هم همین کار رو کردم ولی اون نرم افزاری که اول گفتم نمیتونه توابعی که تعریف میکنم رو پیدا کنه.

یه جورایی باید از قالب namespace و اسم کلاس رد بشه که انگار نمی تونه.

توابعش باید فرمت خاصی داشته باشن یا WINAPI باشن یا CDECL.

zrahimic
پنج شنبه 26 مرداد 1391, 13:52 عصر
یعنی واقعا با سی شارپ نمیشه مثل سی پلاس پلاس یا دلفی کد نویسی کرد یا هیچ کی نمیدونه؟

پس من چی کار کنم؟

ali_habibi1384
پنج شنبه 26 مرداد 1391, 16:12 عصر
شايد توابع روpublic تعريف نكرديد؟

zrahimic
پنج شنبه 26 مرداد 1391, 16:23 عصر
میگن باید کد native باشه تا اون نرم افزار بتونه باهاش ارتباط برقرار کنه. یعنی با سی شارپ هم میشه؟