مشاهده نسخه کامل
: نحوه استفاده از Api در #C
مي خوام از WinInet.dll براي ساخت connection استفاده كنم ولي نه بلدم چطور از API ها استفاده كنم و نمي دونم كلا بايد چكار كنم .
اگر كسي برنامه كوچكي داره كه به يك شماره تلفن connect بشه ممنون ميشم اگر در اختيارم بزاره.
اگر راه ديگري هم براي اتصال وجود داره بم معرفي كنيد.
سلام.
برای استفاده از unmanage operatins در Net. سه روش وجود داره. برای استفاده از API ها و کلا فراخوانی
یک تابع از یک Dll از Platform Invoke استفاده میشه.
برای call کردن یک Dll در #C و استفاده از Method مورد نظر از DllImport استفاده میشه. در نظر داشته باشید که اسم Method مورد نظر نقطه ی ورود به DLL مورد نظر هست. که مثلا DllImport به این شکل در میآد :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با استفاده از این کد میتونید از متود مورد نظرتون استفاده کنید.
این یه خلاصه درباره نحوه ی استفاده از DllImport
اما در مورد سوالتون یه نمونه کد براتون گذاشتم. این کد رو به راحتی میتونید گسترش بدید.
برای اینکه با باقی توابع موجود برای Dialing آشنا بشید در MSDN این کلید رو search کنید :
Automatic Dialing Functions
یا به link زیر مراجعه کنید :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای استفاده از این کلاس هم کافی یک نمونه از کلاس بسازید و با استفاده از این نمونه متود مورد نظر رو
استفاده کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگه مشکلی پیش اومد اطلاع بدید.
kamal114
27-02-2007, 08:49
اگر امکان داره کمی در مورد api توضیح بدید.
ممنون از راهنمایتون ولی اگر ممکنه یکم کاملتر بگین ممنون میشم
چون بازم نتونستم استفاده کنم.
فرض کنید می خوام به یک شماره مثل 2344323 اتصال برقرار کنم باید چکار کنم.
دوباره سلام.
متاسفم که اینقدر طول کشید که جواب بدم.
در مورد Connect شدن و به طور کلی ساخت یک Connection بهترین روش استفاده از RasAPI32.dll
هست که شامل یک سری تابع و ساختار هست. همونطور که میدونید با استفاده از DllImport میتونید
توابع مورد نظرتون رو Invoke کنید. برای structures ها هم روشی نظیر DllImport وجود داره.
برای invoke کردن یک struct از کلاس StructLayout استفاده میشه. یه نمونه ازش به این شکل هست:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که میبیند در Constructor این کلاس چندین آرگومان وجود داره که LayoutKind یک از اونهاست.
این آرگومان نحوه مدیریت حافظه رو مشخص میکنه.
بطور کلی کدها به دو دسته تقسیم میشن:
1-کد مدیریت نشده unmanaged Code
2-کد مدیریت شده managed Code
در مورد کدهای مدیرت نشده مدیرت حافظه با شما هست. که حتما با اون آشنا هستید. مثلا وقتی در ++C
چنین کدی رو مینویسید :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در حقیقت pInt روی Heap ایجاد میشه و در پایان برنامه شما باید با استفاده از []delete اون رو از Heap پاک
کنید. همونطور که میبینید در این جا مدیریت حافظه با شماست. این یک مثال خیلی ساده بود. چون مسائلی
مثل تغییر آدرس ها یا فشرده سازی درش مطرح نشد.
در مورد کدهای مدیرت شده ای مدیریت توسط کامپایلر انجام میشه. فشرده سازی و یا جابه جای رو خودش
انجام میشه و در پایان حافظه استفاده شده رو خالی میکنه.
این توضیح رو دادم بابت اینکه وقتی از LayoutKind.Sequential استفاده میکنید در حقیقت از کدی که
unmanaged هست به صورت managed استفاده میکنید. (ترتیبی) در Net. مبحثی به نام Marshaling وجود
داره تعبیر اون مهاجرت از managed به unmanaged و برعکس هست که تحت عنوان Marshal استفاده میشه.
البته در قالب یک کلاس.
خب فکر کنم این توضیحات لازم بود.
نمونه این که براتون میذارم به صورت هست:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که میبنید قبل از شبیه سازی بعضی از property های structure از عبارت MarshalAs استفاده
شده.اگه به ساخاتر struct توجه کنید (MSDN) میبیند که این آرگومان ها یک رشته با طول ثابت هستند. برای
مدیریت کردن این رشته ها از این کلاس استفاده میشه. توضیحش خیلی مفصل تر هست.
اگه مشکلی پیش اومد اطلاع بدید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.