AMD>INTEL (20-01-17), SajjadKhati (20-01-17)
سلام سجاد جان،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط SajjadKhati برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اعضای protected مطابق MSDN در کلاس پایه و هم در کلاس وارث در دسترس هستش.
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
AMD>INTEL (20-01-17), SajjadKhati (20-01-17)
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
سلام
ممنون اوستا آرمین
اینو میدونم . سئوال مو دقیق تر بخونی ، متوجه سئوالم میشی :
به چه دلیل وقتی از درون کلاس فرزند ، شی ای از کلاس پدر بسازیم ، اعضای protected (غیر استاتیک) تعریف شده از کلاس پدر در دسترس نیست؟
آخرین ویرایش توسط SajjadKhati در تاریخ 20-01-17 انجام شده است
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
سلام
درباره ی نوع کلاس پدر و مقدار فرزند ، میخواستم ببینم تحلیلی که در زیر میکنم درست هست یا نه و اگه درست نیست ، ممنون میشم درست اش رو توضیح بدین (چون درک این مسئله برام توی کدنویسی مهم هست) .
در کد زیر :
کد:FatherClass object = new ChildClass();
اشیاء هایی از نوع کلاس ، اشاره گری هستن به مقادیرشون (سمت راست) پس در کد بالا ، object اشاره گری هست به کلاس ChildClass . پس یعنی شی object ، به اعضای اونجایی رو که اشاره میکنه یعنی به اعضای کلاس ChildClass ، دسترسی داره منتها فقط به اعضایی از کلاس فرزند دسترسی داره که در کلاس پدر موجود باشه (تعریف شده باشه)
پس شی object به اعضای جدیدی که در کلاس فرزند تعریف شده ، دسترسی نداره
اگه متدی override شده باشه ، چون اعضای کلاس فرزند رو میبینه و override هم باعث باطل شدن متد در کلاس پدر میشه ، پس عضو override شده در کلاس فرزند اجرا میشه نه عضو virtual در کلاس فرزند
ولی با این تفاسیر ، نمیدونم چرا در شی object ، اگه member hiding اتفاق بیفته ، بجای اجرای عضو مخفی شده در کلاس فرزند ، عضو اصلی در کلاس پدر رو اجرا میکنه ؟؟!!
----------------------------------
یا اینکه این تحلیل درسته؟ (اما فکر کنم تحلیل بالا درست باشه) :
اینکه شی object در کد بالا ، اعضای پدر رو اجرا میکنه بجز حالت override رو که در کلاس پدر اجرا میکنه
کدوم درست هه؟ و اگه اولی درسته ، ممنون میشم جواب سئوال مو بدین و اگه حس میکنین نکته ای رو نمیدونم ، ممنون میشم بگین
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
سلام،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط SajjadKhati برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
خیر، این تحلیل درست نیست. اشاره گری زمانی صحیح بود که اپراتور new در تعریف وجود نداشت. از آن رو که در سی شارپ (بر خلاف جاوا) توابع به طور پیش فرض از نوع non-virtual هستن، به هنگام تعریف فوق تنها توابعی مشمول چند ریختی میشن که override شده باشند. در غیر این صورت به دلیل explicitly در سی شارپ توابع مخفی شده از Type آن شی برداشت میشه؛ Type شی هم FatherClass هستش و نه ChildClass.
اطلاعات بیش تر:
.net - Using the 'new' modifier in C# - Stack Overflow
Polymorphism, Method Hiding and Overriding in C#
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
AMD>INTEL (22-01-17), SajjadKhati (22-01-17)
سلام
میخوام با زبان Lua ، یه آرایه ای رو به dll سی شارپ که خروجی Unmanaged Export داره رو بفرستم . لوا نمیتونه بصورت مستقیم ، برای سی شارپ آرایه ارسال کنه
نمیدونم ساختار آرایه در لوا چجوری هه ولی چون لوا با زبان C نوشته شد و از طرفی هم فقط میتونه با خروجی هایی از نوع Unmanaged Export با سی شارپ ، ارتباط برقرار کنه ، برای همین حدس میزنم به احتمال زیاد ساختار زبانش باید Unmanaged باشه
حالا مشکل اینجاست که من اشاره گر به آرایه ای که در لوا ساختم رو برای سی شارپ میفرستم (با استفاده از خود همون اشاره گر ، در لوا میتونم اعضای آرایه رو بخونم) و آدرس اشاره گر هم به درستی به سی شارپ فرستاده میشه اما وقتی میخوام اطلاعات اون اشاره گر به آرایه رو در سی شارپ بخونم ، اطلاعات همون آرایه نیست و یه اطلاعات پرت و پلای دیگه هست .
باید چی کار کنم؟
کدی که برای قضیه ی بالا تست کردم و اطلاعات غلط رو میخونه ، اینه :
در Lua (که فقط اشاره گر به آرایه و تعداد اعضای آرایه رو برای سی شارپ میفرسته . کار خاصی نمیکنه) :
کد:myArray = {164, 10, 41, 57, 2500, 1}; tableSize = MemoryEx.TableRequiredSize(myArray); handleMyArray = MemoryEx.AllocateEx(tableSize); handleMyArray:SetArrayType(MEMEX_ARR_INT); --say konid ghabl az meghdar dadn ba tabeh MemoryEx.Table , data type ro moshakhas konid myArrayPointer = handleMyArray:GetPointer(); isCreatedInBuffer = MemoryEx.Table(myArrayPointer, myArray); if (isCreatedInBuffer == true and myArrayPointer ~= nil) then myArrayInBuffer = MemoryEx.Table(myArrayPointer); if (myArrayInBuffer ~= nil) then dllPath = _SourceFolder.."\\ClassLibrary2.dll"; dllHdl = Library.Load(dllPath); if (dllHdl ~= nil) then --------------------- firstElementInDll = dllHdl.ArrayPointer8(myArrayPointer, #myArrayInBuffer) dllHdl:Close_(); end end
و کدهای سی شارپ :
کد:[DllExport("ArrayPointer8", CallingConvention.StdCall)] public static unsafe void ArrayPointer8(int arrayPtr, int arrayLength) { int* mainPointer = (int*)arrayPtr; for (int i = 0; i < arrayLength; i++) { MessageBox.Show(mainPointer[i].ToString(), "In C#") mainPointer[i] = i; }
-----------------------
بقیه ی کدهای سی شارپی که ازش نتیجه نگرفتم (کلاس Marshal) :
کد:[DllExport("ArrayPointer4", CallingConvention.StdCall)] public static int ArrayPointer4(int arrayPtr, int arrayLength) { try { IntPtr realArrayptr = (IntPtr)arrayPtr; int[] arrayInC = new int[arrayLength]; Marshal.Copy(realArrayptr, arrayInC, 0, arrayLength); MessageBox.Show(arrayInC[0].ToString(), "in C#") return arrayInC[0]; } catch (Exception) { return 0; } }
باید چی کار کنم؟
ممنون
- - - Updated - - -
سلام
من میخوام در نرم افزار autoplay media studio ، فرم ایجاد شده در این نرم افزار رو توسط dll ای که در سی شارپ مینویسم ، با این فرم کار کنم (مثلا تغییر اندازه بدم)
اما این نرم افزار و زبان Lua اش ، زبان غیر دات نت هست و همونطور که میدونیم ، بصورت عادی نمیشه با فرم هایی که در زبان غیر دات نت بودجود میان ، در زبان سی شارپ با اون فرم ها کار کنیم . متد Control.FromHandle در سی شارپ هم فقط هندل فرم های دات نت رو به شی مورد نظر تبدیل میکنه
حالا روش و راهی وجود داره که در سی شارپ ، وقتی هندل فرم های غیر دات نت رو میفرستیم براش ، با این فرم ها کار کنیم؟ مثلا هندل فرم غیر دات نت رو بگیره و تغییر اندازه بده اون فرم رو؟
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
سلام سجاد جان،برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط SajjadKhati برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
اگر سوالت رو درست متوجه شده باشم، همان طور که خودت اشاره کردی سی شارپ به طور مستقیم نمی تونه چنین کاری کنه. ولی می تونی با به کار گیری متد های موجود در user32.dll ویندوز مطابق پیوند های زیر این کار رو انجام بدی:
c# - How do I change another program's window's size? - Stack Overflow
Resize other window or application c# - Stack Overflow
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
AMD>INTEL (20-02-17), M A H R A D (20-02-17), SajjadKhati (20-02-17)
برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
سلام
ممنون استاد آرمین
من استفاده از منظورم API های ویندوز نیست . API هم سخت تر هه و هم در هر زبانی میشه ازش استفاده کرد . من منظورم اینه که روشی نیست که هندل ویندوزهای دیگه رو یه جوری تبدیل به هندل ویندوزهای قابل استفاده در زبان های دات نت و Managed Code ها کرد که بعدش با استفاده از متد Control.FromHandle اونو تبدیل به فرم و کلا کلاس کنترل مورد نظر کرد و بعد با اون کلاس کنترل ، بشه ازش استفاده کرد؟
تحقیقات اولیه ام نشون میده در وهله ی اول انگار این کار نشدنی هست . ای کاش مایکروسافت ، یه چاره ای برای این نوع تبدیل میکرد
آخرین ویرایش توسط SajjadKhati در تاریخ 20-02-17 انجام شده است
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
AMD>INTEL (20-02-17)
سلام
اوستا آرمین ، کلاس یا کلاس هایی وجود دارن که خودشون از توابع API استفاده کنن تا دست ما رو برای کار با ویندوزهای دیگه در سی شارپ باز بذارن؟ اگه آره ، اسم شون چیه؟
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
سجاد جان منظورت کدوم API هستش و اینکه دستت رو باز بذارن دقیقا چه تعبیری داره؟برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط SajjadKhati برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
'چو ایران نباشد، تن من مباد
Dim Armin As Iranian
If Iran.Enabled = False Then Armin.Enabled = False
AMD>INTEL (01-03-17), SajjadKhati (01-03-17)
سلامبرای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط ravegoat برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
ممنون استاد آرمین
منظورم یه چیزی مثل ManagedWinApi هست :
Managed Windows API
البته این هم قوی هست ولی قویتر از این (که مثل این هم راهنما داشته باشه) ، وجود داره؟
دانلود فیلم آموزش برنامه نویسی Visual Studio C#.Net
فیلم آموزش کامل Autoplay Media Studio
وقتی انسان ، حیوان هست ، پس قیمت میتونی براش بذاری ولی وقتی انسان حَیّ مُتِاَلِّه هست که قیمت نداره ، بها داره. "دکتر حسن عباسی"
AMD>INTEL (01-03-17)
|
1 کاربر در حال مشاهده این موضوع. (0 عضو و 1 میهمان)
Bookmarks