نمایش نتایج 1 تا 12 از 12

نام تاپیک: دسترسی به اشیائ برنامه ها توسط کد نویسی

  1. #1

    دسترسی به اشیائ برنامه ها توسط کد نویسی

    سلام روز بخیر
    دوستان من میخواهم توسط برنامه ام با یک برنامه دیگه کار کنم با کد نویسی برنامه مورد نظرمو باز میکنم اما نمیدونم چطور به اشیائ اون برنامه دسترسی داشته باشم مثلا یوزر و پسورد وارد کنم و باتون لاگین یا پیام های اختمالی در برنامه OK کنم لطفا اگه کسی بلده راهنماییم کنه
    ممنون

  2. #2

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    نقل قول نوشته شده توسط mehdi0020 مشاهده تاپیک
    سلام روز بخیر
    دوستان من میخواهم توسط برنامه ام با یک برنامه دیگه کار کنم با کد نویسی برنامه مورد نظرمو باز میکنم اما نمیدونم چطور به اشیائ اون برنامه دسترسی داشته باشم مثلا یوزر و پسورد وارد کنم و باتون لاگین یا پیام های اختمالی در برنامه OK کنم لطفا اگه کسی بلده راهنماییم کنه
    ممنون
    با استفاده از App Domain و Remote Method می تونید البته به شرط اینکه که Type کلاسی که Cast شده است در AppDomain فعلی وجود داشته باشد یعنی اسمبلی که برای متد CreateInstanceAndUnwrap اسمبلی برنامه فعلی باشد ویا اسمبلی مورد نظر را در AppDomain جاری نیز بارگذاری کرده باشد.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Runtime.Remoting;

    namespace MyTestRemote
    {
    public class MyTestRemote
    {
    public static void Main(string[] args)
    {
    AppDomain thisDomain = Thread.GetDomain();
    AppDomain newDomain = AppDomain.CreateDomain("NEW_DOMAIN", null, null);

    RemoteClass c1 = (RemoteClass)newDomain.CreateInstanceFromAndUnwrap ("YourApp.exe", "MyTestRemote.RemoteClass");
    c1.RemoteMethod();

    AppDomain.Unload(newDomain);

    Console.ReadKey();
    }
    }
    public class RemoteClass : MarshalByRefObject
    {
    public RemoteClass()
    {}
    public void RemoteMethod()
    {
    Console.WriteLine("Remote Method is Running in This Thrad {0} ->", Thread.GetDomain().FriendlyName);
    }
    }
    }

  3. #3

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    با استفاده از App Domain و Remote Method می تونید البته به شرط اینکه که Type کلاسی که Cast شده است در AppDomain فعلی وجود داشته باشد یعنی اسمبلی که برای متد CreateInstanceAndUnwrap اسمبلی برنامه فعلی باشد ویا اسمبلی مورد نظر را در AppDomain جاری نیز بارگذاری کرده باشد.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Runtime.Remoting;

    namespace MyTestRemote
    {
    public class MyTestRemote
    {
    public static void Main(string[] args)
    {
    AppDomain thisDomain = Thread.GetDomain();
    AppDomain newDomain = AppDomain.CreateDomain("NEW_DOMAIN", null, null);

    RemoteClass c1 = (RemoteClass)newDomain.CreateInstanceFromAndUnwrap ("YourApp.exe", "MyTestRemote.RemoteClass");
    c1.RemoteMethod();

    AppDomain.Unload(newDomain);

    Console.ReadKey();
    }
    }
    public class RemoteClass : MarshalByRefObject
    {
    public RemoteClass()
    {}
    public void RemoteMethod()
    {
    Console.WriteLine("Remote Method is Running in This Thrad {0} ->", Thread.GetDomain().FriendlyName);
    }
    }
    }
    راستش از توضیحاتتون زیاد چیزی متوجه نشدم ولی این کلاس درست کردم الان باید..؟

  4. #4

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    اگه براتون امکان داره یکی بیشتر توضیح بدید البته مبتدی تر

  5. #5

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    نقل قول نوشته شده توسط mehdi0020 مشاهده تاپیک
    راستش از توضیحاتتون زیاد چیزی متوجه نشدم ولی این کلاس درست کردم الان باید..؟
    دوست عزیز من در مورد AppDomain یکم مطالعه کردم با فرض اینکه نرم افزار دوم در AppDomain فعلی وجود داشته باشه من چصور میتونم با کد نویسی با اشیائ اون برنامه کار کنم؟؟؟ لطفا راهنماییم کنید

  6. #6
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    با سلام
    میتونید از کلاس Runtime و DllImport استفاده کنید
    کد زیر یک پیام رو به نوت پد میفرسته میتونین به عنوان برنامه نویس الگو بگیرین و شخصی سازیش کنید
            [DllImport("user32.dll", EntryPoint = "FindWindow")]
    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);


    private void button1_Click(object sender, EventArgs e)
    {
    IntPtr handle = FindWindow("Notepad", "Untitled - Notepad");
    if (!handle.Equals(IntPtr.Zero))
    {
    // activate Notepad window
    if (SetForegroundWindow(handle))
    {
    // send "Hello World!"
    SendKeys.Send("Hello World!");
    // send key "Tab"
    SendKeys.Send("{TAB}");
    // send key "Enter"
    SendKeys.Send("{ENTER}");
    }
    }
    }

    یا
            [DllImport("user32.dll")]        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int uMsg, int wParam, string lParam);
    const int WM_SETTEXT = 0X000C;
    private void button1_Click(object sender, EventArgs e)
    {
    Process notepadProccess = Process.GetProcessesByName("notepad")[0];
    IntPtr notepadTextbox = FindWindowEx(notepadProccess.MainWindowHandle, IntPtr.Zero, "Edit", null);
    SendMessage(notepadTextbox, WM_SETTEXT, 0, "This is the new Text!!!");
    }

    https://social.msdn.microsoft.com/Fo...=csharpgeneral
    موفق باشید
    لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
    قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
    قوانین پرسش های دانشجویی
    برای درست وارد شدن کد در قالب C#‎‎‎ سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C#‎‎‎ منتفل کنید
    نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها

  7. #7

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    در NET. برنامه ها مستقیما داخل یک پردازه اجرا نمیشن درون چیزی به نام دامنه AppDomain اجرا می شوند یک پردازه هم می تونه چندتا دامنه داشته باشه و درون هرکدوم هم می تونید یک برنامه دات نتی یا اسمبلی های مختلفی بارگذاری کنید. در حالت عادی هر برنامه دات نت یک دامنه مخصوص خوش را داره که خود CLR ایجادش میکنه بعد از دامنه اصلی می تونید دامنه های دیگه ایجاد کنید و اسمبلی هایی که می خواهید را بهشون ریموت کنید.
    ابتدا توسط متد CreateDomain یک دامنه جدید ایجاد کردیم و بعد متد CreateInstanseAndUnwrap را صدا زدیم نام اسمبلی و کلاسی که می خواهیم در پردازه جاری از اون نمونه سازی کنیم را به این متد پاس میدیم وقتی این متد برمیگردد ارجاعی به یک شی واسط در دامنه جاری که واسطی بین دامنه فعلی و شی ای که در دامنه جدید ایجاد کرده اید ایجاد شده.
    وقتی در دامنه جاری متدهای شی راه دور را فراخوانی میکنی نخ جاری از دامنه فعلی به دامنه جدید که ایجاد شده سوئیچ میکنه متد درخواست شده را اجرا میکنه و دوباره به دامنه فعلی برمیگرده.
    خوب باالطبع خروجی متد CreateInstanseAndUnwrap هم یک Object هست برای اینکه بتونه هر شی از هر نوعی را برگردونه!!
    پس برای همین اگر بخواهید از مقدار بازگشتی استفاده کنید باید cast کنید به کلاس خودتون اما در صورتی این کست انجام میشه که type کلاس شما در دامنه اصلی قرار داشته باشه.ویا اگر type کلاس در دامنه دیگری هست باید اون اسمبلی را دامنه جاری فراخوانی کنید.
    والبته شی هم که به صورت object بر میگردد درحقیقت یک شی واسط (پراکسی) در دامنه فعلی هست نه شی واقعی که در دامنه جدید ایجاد شده است. یعنی شما به خود شی در دامنه جدید دسترسی ندارید به الگوی واسط پراکسی دسترسی دارید دقت داشته باشید که دامنه ها واقعا از هم مجزا هستند و هیچ راهی برای ارتباط وجود ندارد به همین علت این واسطه ایجاد می شود حتی اگر با متد getType نوع شی برگشتی را کنترل کنید مبینید که واقعا نوع کلاس هست که ریموت شده است ولی در اینجا ظاهرا CLR یکمی دروغ تحویلمون میده.
    به هرحال برای استفاده از این قبیل تکنیک ها باید به مباحث نخ ها و برنامه نویسی چند نخی و همچنین به کلاسهای سیستمی دات نت کمی مسلط باشید تا مطالب مذکور برای شما قابل ادراک شود.
    والبته کار سختی هم نیست فقط کمی حوصله و مطالعه بیشتر در این زمینه لازم دارد.

  8. #8

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    میتونید از کلاس Runtime و DllImport استفاده کنید
    کد زیر یک پیام رو به نوت پد میفرسته میتونین به عنوان برنامه نویس الگو بگیرین و شخصی سازیش کنید
    ولی با این روش شما به پردازش اون برنامه دسترسی دارید وبا استفاده از MessageHandler خود ویندوز می تونید به اون پردازش پیام ارسال کنید نمی تونید با شی ها اون پردازش کار کنید یعنی حداقل من کار نکردم با کلاس Process ولی در الگوی Proxy دامنه ها شما امکان Remoteing دارید به پردازه در یک نخ دیگر و قدرت انعطاف خیلی زیادی خواهید داشت.

  9. #9

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    نقل قول نوشته شده توسط mehdi0020 مشاهده تاپیک
    دوست عزیز من در مورد AppDomain یکم مطالعه کردم با فرض اینکه نرم افزار دوم در AppDomain فعلی وجود داشته باشه من چصور میتونم با کد نویسی با اشیائ اون برنامه کار کنم؟؟؟ لطفا راهنماییم کنید
    اگر منظور به یک برنامه ای است که از متدهاش اطلاع ندارید با این روشی که گفتم نمیتونید بهش وصل بشید باید از کلاس Process استفاده کنید ولی باز هم مطمئن باشید کاری که شما می خواهید که مثلا روی یک دکمه کلیک کنید نمی تونید انجام بدید برای اطلاع بیشتر هم می تونید تو MSDN نحوه کار با Windows Message Handler و استفاده از نماینده های این سرویس که برای خود ویندوز هست مطالعه کنید.

  10. #10

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    در NET. برنامه ها مستقیما داخل یک پردازه اجرا نمیشن درون چیزی به نام دامنه AppDomain اجرا می شوند یک پردازه هم می تونه چندتا دامنه داشته باشه و درون هرکدوم هم می تونید یک برنامه دات نتی یا اسمبلی های مختلفی بارگذاری کنید. در حالت عادی هر برنامه دات نت یک دامنه مخصوص خوش را داره که خود CLR ایجادش میکنه بعد از دامنه اصلی می تونید دامنه های دیگه ایجاد کنید و اسمبلی هایی که می خواهید را بهشون ریموت کنید.
    ابتدا توسط متد CreateDomain یک دامنه جدید ایجاد کردیم و بعد متد CreateInstanseAndUnwrap را صدا زدیم نام اسمبلی و کلاسی که می خواهیم در پردازه جاری از اون نمونه سازی کنیم را به این متد پاس میدیم وقتی این متد برمیگردد ارجاعی به یک شی واسط در دامنه جاری که واسطی بین دامنه فعلی و شی ای که در دامنه جدید ایجاد کرده اید ایجاد شده.
    وقتی در دامنه جاری متدهای شی راه دور را فراخوانی میکنی نخ جاری از دامنه فعلی به دامنه جدید که ایجاد شده سوئیچ میکنه متد درخواست شده را اجرا میکنه و دوباره به دامنه فعلی برمیگرده.
    خوب باالطبع خروجی متد CreateInstanseAndUnwrap هم یک Object هست برای اینکه بتونه هر شی از هر نوعی را برگردونه!!
    پس برای همین اگر بخواهید از مقدار بازگشتی استفاده کنید باید cast کنید به کلاس خودتون اما در صورتی این کست انجام میشه که type کلاس شما در دامنه اصلی قرار داشته باشه.ویا اگر type کلاس در دامنه دیگری هست باید اون اسمبلی را دامنه جاری فراخوانی کنید.
    والبته شی هم که به صورت object بر میگردد درحقیقت یک شی واسط (پراکسی) در دامنه فعلی هست نه شی واقعی که در دامنه جدید ایجاد شده است. یعنی شما به خود شی در دامنه جدید دسترسی ندارید به الگوی واسط پراکسی دسترسی دارید دقت داشته باشید که دامنه ها واقعا از هم مجزا هستند و هیچ راهی برای ارتباط وجود ندارد به همین علت این واسطه ایجاد می شود حتی اگر با متد getType نوع شی برگشتی را کنترل کنید مبینید که واقعا نوع کلاس هست که ریموت شده است ولی در اینجا ظاهرا CLR یکمی دروغ تحویلمون میده.
    به هرحال برای استفاده از این قبیل تکنیک ها باید به مباحث نخ ها و برنامه نویسی چند نخی و همچنین به کلاسهای سیستمی دات نت کمی مسلط باشید تا مطالب مذکور برای شما قابل ادراک شود.
    والبته کار سختی هم نیست فقط کمی حوصله و مطالعه بیشتر در این زمینه لازم دارد.
    سلام صبح بخیر ممنون از راهنماییتون متاسفانه موفق نشدم RemoteClass c1 = (RemoteClass)newDomain از این خط خطا میگیره

  11. #11

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی

    سلام کسی میتونه کمکم کنه؟ میخواهم با برنامه ام یه نرم افزار رو اجرا کنم بعد از چند تایید پیام اطلاعات لاگین وارد کنه و باتون باتون بزنه کسی میتونه کمکم کنه؟ تا الان فقط تونستم نرم افزار مورد نیازمو باز کنم چطور به کادرهای محاوره ای پاسخ بدم و لاگین کنم مشکل دارم

  12. #12

    نقل قول: دسترسی به اشیائ برنامه ها توسط کد نویسی


تاپیک های مشابه

  1. سوال: دسترسی به اشیا در برنامه نویسی سه لایه
    نوشته شده توسط mandanim در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 12 مهر 1394, 15:52 عصر
  2. جلوگیری از دسترسی به اینترنت برنامه ها در اندروید
    نوشته شده توسط arashazizi در بخش Android Studio
    پاسخ: 2
    آخرین پست: دوشنبه 04 اسفند 1393, 18:32 عصر
  3. مشکل در دستیابی به کنترل های اضافه شده توسط کد نویسی
    نوشته شده توسط kardo.software در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: یک شنبه 10 آبان 1388, 09:18 صبح
  4. ایجاد یک stored procedure از داخل برنامه و توسط کد نویسی
    نوشته شده توسط hosseinrp در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 09 شهریور 1387, 12:54 عصر
  5. دسترسی به سورس برنامه ها ؟
    نوشته شده توسط am6158 در بخش امنیت در شبکه
    پاسخ: 3
    آخرین پست: چهارشنبه 15 تیر 1384, 17:03 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •