PDA

View Full Version : ارتباط سی شارپ با NVDA



merlin_vista
شنبه 22 اسفند 1388, 19:20 عصر
با سلام :
من میخواهم در برنامه خودم از امکانات این برنامه که مخصوص نابینایان است استفاده کنم
ولی هر کاری کردم نتونستم این برنامه را در Refrence ها C#‎‎ اضافه کنم
از دوستان اگه کسی بتونه کمک کنه ، ممنون میشم
در ضمن این برنامه Open Source است .

وب سایت این برنامه (http://www.nvda-project.org/)


با تشکر / موفق باشید

sia_2007
شنبه 22 اسفند 1388, 23:17 عصر
میتونم فایل هاتون رو ببینم ؟

merlin_vista
شنبه 22 اسفند 1388, 23:22 عصر
فایل ها داخل سایت موجوده ، OpenSource است .

کتابخانه های نوشته شده با زبان پایتون هستند ، دوستان اگه راهنمایی کنید از کتابخانه های پایتون چگونه داخل C# استفاده کنم ممنون میشم !

Saeed.Masoumi
یک شنبه 23 اسفند 1388, 12:48 عصر
سلام
این بستگی داره که شما با پایتون آشنایی دارید یا خیر؟؟
این لینک (http://bytes.com/topic/python/answers/586166-python-c-interoperability)خیلی جالب توضیح داده شاید شما رو کمک کنه
به پاسخ های شماره 4 و 5 دقت کنید
موفق باشید

sia_2007
یک شنبه 23 اسفند 1388, 20:48 عصر
جوابهای یک تا سه عموما بی فایده هستند.
جواب شماره چهار :
این فرد ما رو به IronPython ارجاع داده اند، که پیاده سازی Net. زبان Python است.
نکته ای که ایشون اشاره کرده اند نکته بسیار مهمی است.
Python یک زبان استاتیک است، ولی زبان های پلتفرم Net Framework. ، داینامیک هستند.
بدیهی است که اجرای یک زبان با کامپایل استاتیک، توسط JIT Compiler که Just In Time است، کاملا بی معنی است.
این مسئله در IronPython نیز به وجود دارد؛ ( بنا به گفته جواب شماره چهار )، اما در بخش Python On .Net سایت Source Forge چنین چیزی دیده نمیشه، بلکه کاملا بر عکس این گفته میشه.
بعد خود سوال کننده اومده و یک تز احمقانه داده، گفته که Python رو به Jython که پیاده سازی Python برای JVM هست ببرم، سپس با Microsoft's jbimp ، بایت کدهای حاصل از آوردن Python در JVM توسط Jython رو به IL تبدیل کنم، و اون IL رو در #C اظافه کنم.
من اسم این نرم افزار رو نه شنیدم و نه دیدم و متوجه نیستم که Byte Code چه جوری قراره به IL تبدیل بشه ؟
البته من وجود چنین چیزی رو نفی نمیکنم، کما این که امکان تبدیل Byte Code به JS در GWT وجود دارد،
اما مسئله این است که من احساس میکنم آوردن Python با Jython به JVM نباید کار آسانی باشد.

یک نفر دیگه میگه که باید مفسر Python رو در #C قرار بدی.
اما به همین یه خط بسنده کرده.
البته با توجه به چیزی که در یک مثال دیدم، فکر میکنم به درد کد بخوره، یا شاید این دوستمون Irony رو با Python و IronyPython جا به جا گرفته.
چون یه مثال که موید حرف دوستمونه در کتاب Pro Full Text Search وجود داره، در مبحث ساخت گرامر.

بعدی گفته که باید با P-Invoke کار کنی.

ببیند اولین توصیه من به شما این است که از خیر Python بگذرید و همین DLL ها رو با یه زبان دیگه پیدا کنید.
ولی این یافته های منه که به هیچ وجه کامل نیستند.
خب پس حواسها جمع
این روش به ما از Python، کد IL نمیده.
بلکه Python Engine رو به CLR پیوند میده.
بدیهیه که اگه Managed Code و مزایای اون رو میخواهیم، باید از IronyPython استفاده کنیم.
نسخه Python شما باید 2.3 و یا بالاتر باشد.
این هم متن انگلیسی برای دوستانی که ترجمشون از من بهتره

http://pythonnet.sourceforge.net/

و برنامه Python On Net :

http://sourceforge.net/projects/pythonnet/files/

403 Error – Forbidden

این خطا تا لحظه 18:18 روز یک شنبه وجود داشت.
پس چاره کار استفاده از همونیه که داشتنش جرمه !!!
من فایل رو در این آدرس قرار میدم :

http://cid-d4aee6120707bb13.skydrive.live.com/self.aspx/.Public/pythonnet-1.0-rc2-py2.3-clr1.1.exe#resId/D4AEE6120707BB13!136

اگه دانلود منیجرتون خواست مستقیما این رو دانلود کنه، نگذارید، چون یه فایل 50 کیلوبایتی دنلود میشه.
Cancel رو بزنید و بگذارید صفحه باز بشه و روی فایل کلیک کنید.


اگه مثل سیستم من Python رو نصب کرده باشید،
گزینه ای اظافه میآید که میخواهد به Python موجود، قابلیت پشتیبانی از Net. را بدهد.
من نمیدونم این چیه ولی سر فرصت چکش میکنم.
خب برنامه رو اجرا کنید.
می بینید که یک Command Prompt دارد که دست کمی از GUI خود Python ندارد و دوستانی که سختی برنامه نویسی با GUI Python رو دیده باشند، ( نه خود زبان Python البته )، میبینند که این یکی در افتضاحی دست اون یکی رو از پشت بسته.
ولی در جایی که برنامه نصب میشه، میشه 3 تا DLL پیدا کرد که تو Net. بار میشن.

CLR
Python.RunTime
Python.Test

متاسفانه Document مناسبی برای اینها پیدا نکردم.
و البته موقع اجرا در صورت استفاده از اینها به خطا بر میخورم.
مثلا موقع اجرای :

PythonEngine.Initialize(); // Main Code

که اصلی ترین کد Python On Net است.
توضیح :

http://pythonnet.sourceforge.net/readme.html

من خودم چند خط کد Python نوشته ام؛ اما به فکر آوردنشون تو Net. نبودم.
به شما هم توصیه میکنم از خیرش بگذرین
قطعا DLL های دیگه ای نیز وجود دارند.






file:///C:/DOCUME%7E1/PROSHA%7E1/LOCALS%7E1/Temp/moz-screenshot.pngfile:///C:/DOCUME%7E1/PROSHA%7E1/LOCALS%7E1/Temp/moz-screenshot-1.pngfile:///C:/DOCUME%7E1/PROSHA%7E1/LOCALS%7E1/Temp/moz-screenshot-2.pngfile:///C:/DOCUME%7E1/PROSHA%7E1/LOCALS%7E1/Temp/moz-screenshot-3.png

sia_2007
یک شنبه 23 اسفند 1388, 22:37 عصر
منظور من از Static ، با Static ای که یه بنده خدایی در مورد Static بودن #C و VB.Net برای Net Framework. و غیر Static بودن IronyManaged برای Net Framework. گفته بود فرق داره.
منظور من از Static برای Python تفسیر شدن آن از ابتدا تا به انتهاست.
در حالی که منظور اون بنده خدا این بوده که IronyPython در Net Framework. به خوبی #C نیست.
و #C رو Static لقب داده، منظورش این بوده که #C خیلی بیشتر با Net Framework. سازگاره.
البته این حرف مورد تایید من نیست، چون حتی برای Silverlight نیز میتوان از Irony استفاده کرد.
یکی از ویژگی های خوب این ارائه ساختار درختی در RAM یا Abstract Syntax Tree است
این جا اولین جایی بود که باهاش آشنا شدم. وگرنه مزایای زیاد دیگه ای هم داره.
من در مورد مزایای Python مطالعه کردم و زبان خوب و قدرتمندی به نظر میآد.
چند خطی کد هم نوشتم
ولی هیچ وقت به فکر این نیافتدم که بیارمشون تو Net.
یا حتی در JAVA
بدم نمیآد بدونم، امروز تلاشم رو انجام دادم ولی فکر نمیکنم به این آسونی ها باشه

sia_2007
یک شنبه 23 اسفند 1388, 22:55 عصر
این یه تیکه کد کاملتره :

PythonEngine.Initialize();
PyObject pyportal = PythonEngine.ImportModule("PyPortal");
PyObject callable = pyportal.GetAttr("invoke");
Portal portal = new Portal();
object[] objects = portal.Invoke(callable, "Mark Barclay", 123.456);
if (objects != null)
{
foreach (object o in objects)
{
if (o != null)
Console.WriteLine(o.ToString());
else
Console.WriteLine("o is null.");
}
}
http://mail.python.org/pipermail/pythondotnet/2003-November/000037.html

PyPortal نام برنامه نوشته شده با Python هستش.
مسئله اینه که این برنامست نه لایبراری !!!
دوستان کمک کنید لطفا
تازه نگذریم که همین هم کار نمیکنه !