ايران ويج

نسخه‌ی کامل: توابع API ویندوز در سی شارپ
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
برنامه زیر 4 تابع API را مورد بررسی قرار داده است
کد:
using System.Runtime.InteropServices;
namespace CSharpWin32APICall
{
    public partial class Form1 : Form
    {
        [DllImport("User32.dll")]
        public static extern IntPtr CloseWindow(IntPtr hWnd);
        [DllImport("User32.dll")]
        public static extern IntPtr BringWindowToTop(IntPtr hWnd);
        [DllImport("User32.dll")]
        public static extern IntPtr DestroyWindow(IntPtr hWnd);
        [DllImport("User32.dll")]
        public static extern IntPtr AnimateWindow(IntPtr hWnd,
             int time, AnimateWindowFlags flags);
در بخش بالا 4 عدد از توابع API را از کتابخانه هایشان فراخوانی کرده ایم . همانطور که واضح است نام کتابخانه

چیزی نیست جز User32.dll .

بعضی از توابع یکسری Flag دارند . ( یک عددی که به عنوان پارامتر به تابع پاس داده میشود و رفتار تابع را مشخص

می کند.)برای مثال در بالا پارامتر سوم تابع AnimateWindow یک فلگ می باشد که نوع انمیشن پنجره را مشخص

میکند. ( مثلا میگوید Fade شو یا به راست برو یا به چپ حرکت کن و ....) برای فراخوانی فلگ ها در زبان های

شی گرا ، از نوع های شمارشی استفاده میشود. یک نوع شمارشی یا enum مانند یک مجموعه است که هر

عضو آن می تواند یک عدد داشته باشد . ( می توانید آن را مجموعه ای از زوج مرتب ها تلقی کنید که یک بخش

آنها نام صفت ، و بخش دیگر مقدار آن است.) برای AnimateWindow خواهیم داشت :
کد:
public enum AnimateWindowFlags
        {
            AW_SLIDE = 0x00040000,
            AW_VER_POSITIVE = 0x00000004,
            AW_VER_NEGATIVE = 0x00000008,
            AW_HIDE = 0X40000,
            AW_BLEND = 0X80000,
            AW_ACTIVATE = 0x00020000
        }
برای مثال موقعی که فرم لود میشود ، تابع Animate Window را فراخوانی می کنیم تا فرم به صورت Fade لود

شود :
کد:
AnimateWindow(this.Handle, 1000,AnimateWindowFlags.AW_ACTIVATE
                | AnimateWindowFlags.AW_BLEND);
که در کد بالا ، آنجایی که پر رنگ شده است ، دارد از نوع شمارشی بالا استفاده میکند و جای آنها اعداد معادل آنها

قرار میگیرد و به تابع پاس داده میشوند. پارامتر دوم نیز زمان به میلی ثانیه است که در اینجا 1000 برابر یا یک ثانیه

است.

بقیه توابع یک پارامتر عدد صحیح دارند که ID فرم است که باز شده است . این ID نامش HWND یا به عبارتی

Window Handle می باشد. برای دسترسی به این شماره در سی شارپ از عبارت this.Handle استفاده میکنیم.
[attachment=10345]