آموزش ارسال یک متن به پنجره ای دیگر در #C
سلام بر تمامی برنامه نویسان سی شارپ در این مطلب آموزشی ، نحوه ی ارسال یک متن از درون برنامه ی سی شارپی به یک نرم افزار دیگر رو یاد می گیرید.شما می تونید خروجی این پروژه رو در تصویر زیر مشاهده کنید:
خب ابتدا یک پروژه ی جدید در ویژوال استودیو ایجاد کنید.پس از اون یک دکمه درون فرم اصلی برنامه قرار بدهید و رویداد کلیک آن را ایجاد کنید و به قسمت کدنویسی برنامه بروید.
سپس کدهای مربوط به این 2 فضای نام را به برنامه تان اضافه کنید:
using System.Runtime.InteropServices;
سپس بعد از کد:
{
InitializeComponent();
}
کدهای زیر را قرار دهید:
private static extern IntPtr FindWindow(string lp1, string lp2);
[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetForegroundWindow(IntPtr hWnd);
FindWindow مربوط به پیدا کردن اون پنجره ای هست که می خواهید درونش یک متنی رو ارسال کنید و SetForegroundWindow برای ارسال کردن متن به اون نرم افزار هست.
خب حالا نوبت این میرسه که نرم افزار AutoIT رو نصب کنید.برای به دست آوردن Title و Class پنجره ها می تونید از این نرم افزار استفاده کنید.برای اینکه شما بخواهید به یک نرم افزار دیگر یک متنی رو ارسال کنید باید Title و Class اون پنجره رو در محیط کدنویسی وارد کنید.این نرم افزار Title و Class رو در اختیار شما می گذاره و کافیه که اون نرم افزار خارجی که می خواهید متنی رو در اون وارد کنید رو باز نگه دارید و روی اون یک کلیک کنید و برنامه ی AutoIT رو اجرا کنید.
پس از وارد کردن Title و Class در محیط کدنویسی ، می تونید به اون نرم افزار متن ارسال کنید. (دانلود نرم افزار AutoIT)
برای بزرگ شدن تصویر بالا روی آن کلیک کنید.
سپس در رویداد کلیک دکمه ، کدهای زیر را وارد کنید:
در کد زیر اگر نرم افزار AutoIt را باز کنید و یک نوت پد رو هم باز کنید ، Class برابر Notepad و Title برابر Untitled – Notepad می باشد و در ابتدا متن پروگرم 98 به نوت پد فرستاده می شود یعنی متن “پروگرم 98” در فایل نوت پد افزوده می شود و پس از آن یک تب جلو می رود و سپس به خط بعد می رود و اگر باز هم کاربر روی دکمه کیک کند ، باز هم همین اتفاق می افتد.
IntPtr handle = FindWindow("Notepad", "Untitled - Notepad");
if (!handle.Equals(IntPtr.Zero))
{
// activate Notepad window
if (SetForegroundWindow(handle))
{
// send "Hello World!"