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

نام تاپیک: نمایش دسکتاپ کلاینت در شبکه محلی

  1. #1

    Arrow نمایش دسکتاپ کلاینت در شبکه محلی

    با سلام
    در حاله نوشتن برنامه ای هستم که برای نمایش دسکتاپ سیستم کلاینت بر روی سرور از کدی که دوستمون به عنوان ویدئو کنفرانس گذاشته بود استفاده کردم اما چون برنامه بزرگیه قاطی پاطی کردم و نشد.
    اگه ممکنه دوستان یه سورس کوچولو که فقط بشه دسکتاپ کلاینت رو مونیتور کرد قرار بدند.
    ممنون میشم از همه دوستان.


  2. #2

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

    آقای خزایی(khazaie01) شما هم قبلا مشکل من رو داشتید در پست زیر
    http://barnamenevis.org/forum/showth...=104853&page=2
    میشه راهنماییم کنید چی کار کردید.
    ممنون.


  3. #3

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

    سلام دوست عزیز
    روشی که من استفاده کردم همان روشی است که در پروژه ویدئو کنفرانس استفاده شده است.
    اما راه درستی برای اینکار نبود ! یک مدت دنبال این موضوع بودم و به نتیجه نرسیدم به همین خاطر تصمیم گرفتم از همان فکر ساده ای (و البته غیر کاربردی) که در ذهن داشتم استفاده کنم، یعنی عکس گرفتن از صفحه نمایش کلاینت و ارسال آن برای سرور (البته در برنامه نویسی بر عکس خواد بود یعنی برنامه سرور بر روی کلاینت نصب خواهد شد ...)
    عکسها را فشرده میکردم و میفرستادم ، برای کنترل موس هم مختصاتی که بر روی عکس کلید شده را برای سیستم کلاینت میفرستادم و کلاینت در آن مختصات کلیک می کرد..

  4. #4

    Arrow نقل قول: نمایش دسکتاپ کلاینت در شبکه محلی

    نقل قول نوشته شده توسط khazaie01 مشاهده تاپیک
    سلام دوست عزیز
    روشی که من استفاده کردم همان روشی است که در پروژه ویدئو کنفرانس استفاده شده است.
    اما راه درستی برای اینکار نبود ! یک مدت دنبال این موضوع بودم و به نتیجه نرسیدم به همین خاطر تصمیم گرفتم از همان فکر ساده ای (و البته غیر کاربردی) که در ذهن داشتم استفاده کنم، یعنی عکس گرفتن از صفحه نمایش کلاینت و ارسال آن برای سرور (البته در برنامه نویسی بر عکس خواد بود یعنی برنامه سرور بر روی کلاینت نصب خواهد شد ...)
    عکسها را فشرده میکردم و میفرستادم ، برای کنترل موس هم مختصاتی که بر روی عکس کلید شده را برای سیستم کلاینت میفرستادم و کلاینت در آن مختصات کلیک می کرد..
    ممنون از جوابتون.
    ممکنه یه نمونه برنامه از برنامتون که نوشتین برام بزارین.
    ممنون.


  5. #5

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

    ببخشيد دوست عزيز تا چند روز ديگه براتون آپ مي كنم ( مسافرت هستم )

  6. #6

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

    خیلی قدیمی هست تست نکردم خودم با دلفی 7 نوشته بودم... این احتمالا قطعه برنامه ای بوده که برای آزمایش نوشتم !

  7. #7

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

    مقدار تایمر را 1000 قرار بدید تا اتصال قطع نشه ...

  8. #8

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

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


  9. #9

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

    نه حجمی نداره آخه ! کلی فشرده شده !! من خودم تستش کردم مشکلی نداره ، فقط مقدار تایمر را فعلا 1000 به بالا انتخاب کنید

  10. #10

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

    ممنون.
    منظورم همون برنامست که در پست 6 گزاشتید.
    ببینید شما در اون برنامه از صفحه دسکتاپ عکس گرفتید و اون رو compressStream میکنید و سپس در طرف دیگه DecompressStream میکنید.
    به نظرتون بهتر نیست یه جایی عکس رو از حالت bitmap یا bmp تبدیل کنیم به jpg و سپس کمپرس رو انجام بدیم؟


  11. #11

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

    دوست عزیز ، عکس تو همین سورس به JPG تبدیل میشه و بعد تازه همون هم فشرده میشه و بعد دوباره فشرده میشه ...

  12. #12

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

        j.CompressionQuality:=50;
    j.Compress;
    j.SaveToStream(s);
    s.Position:=0;
    CompressStream(s,s1);

    دوست عزیز یه نگاهی به کد بالا بندازید ! هم کیفیت عکس را آوردم پایین ، هم از فشرده سازی Jpeg استفاده کردم و هم در آخر با استفاده از تابع CompressStream فشرده کردمش

  13. #13

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

    ممنون از راهنماییتون.
    اما چرا پس وقتی از برنامه هایی مثل نت اسکول یا امثالهم استفاده میشه همچین اروری نمیاد.
    اما این برنامه ارور، مموری میده.(یعنی حافظه).
    ممنونم که وقت میزارید و جواب میدید.


  14. #14

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

    این ساده ترین روش بود و البته غیر اصولی ترین !
    نرم افزارهایی مثل نت اسکول از این رش استفاده نمی کنن...

  15. #15

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

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

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    71

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

    این ساده ترین روش بود و البته غیر اصولی ترین !
    نرم افزارهایی مثل نت اسکول از این رش استفاده نمی کنن...
    سلام.
    میشه بگین این نرم افزارها از چه روشی استفاده می کنن؟ اگه امکانش هست یه مقدار بیشتر توضیح بدین.
    با تشکر.

  17. #17

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

    زیاد دنبال این موضوع نرفتم و اطلاعات مناسبی در این رابطه ندارم ، نیازم را با همون عکس گرفتن برآورده کردم...
    اگر از دوستان کسی اطلاعات در رابطه با نحوه کار این نرم افزار ها داره ، همینجا مطرح کنه ( البته با روش پیاده سازی در دلفی ) ...
    ممنوووووووووون

  18. #18
    کاربر دائمی آواتار MohsenB
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایرانم
    پست
    601

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

    یه راه هایی به نظر من میاد فکر کنید :


    • هروقت تصویر تغییر کرد بفرسیم . حالا یا با تغییر وضعیت صفحه کلید یا موس یا مقایسه عکسا .
    • اگر تصویر تغییر نکرد فقط موقعیت موس رو بفرسیم .
    • اگر موس هم تغییر نکرد فقط پیامی مبنی بر تغییر نکردن بفرسیم .
    • اگر تصویر تغییر کرد فقط قسمتای تغییر کرده رو ارسال کنیم .


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

    با این روشا هم میشه یه جوری نوشت که اصلا فقط وقتی ارسال انجام بشه که عکس تغییر کرده باشه . اینجوری خیلی سرعت بالا میره .

    برا مقایسه تصویر هم یه راههایی هست که سرعت باز بالاتر بره :
    مثلا اول نقاط زیر موس مقایسه بشن ، بعد مختصات کنترل یا پنجره ای که هم اکنون فعال هستش و بعدش یه سری نقاط خاص با یه فاصله خاص از همدیگه .
    و یا میشه رویداد Paint ویندوز رو در دست گرفت که هر وقت اون رویداد انجام شد اون قسمت تغییر کرده ارسال بشه .
    آخرین ویرایش به وسیله MohsenB : پنج شنبه 22 مهر 1389 در 12:07 عصر

  19. #19

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

    ممنووووون دوست عزیز
    اما این شد بهینه کردن روش قبلی ، روشی غیر از عکس گرفتن باید باشه....

  20. #20

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

    با سلام
    بنده پس از چندی تحقیق یه روش خوب پیدا کردم.
    scanline
    و ارسال استرینگ به سرور.
    نظرتون چیه.


  21. #21

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

    سلام دوست عزیز
    من اطلاعات چندانی درباره Scan Line ندارم اما تاجایی که می دونم Scan Line یک ردیف از پیکسل ها را اسکن کرده و بعد می توان در آرایه ای ذخیره کرد و این عمل برای افزایش سرعت پردازش ( پردازش بر روی تصویر ) انجام می شود ...

    مشکل برنامه اینجاست که حجم عکس ارسالی با این که فشرده می شود باز هم زیاد است و ترافیک بالایی در شبکه ایجاد می کند...

  22. #22
    کاربر دائمی
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اصفهان
    پست
    204

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

    سلام به دوستان گرامي؛

    فكر مي‌كنم چيزي كه شما مي‌خواهيد اين باشه:
    شما بايد خروجي مانيتور را پيدا كنيد و خروجي مانيتور (نه تصوير، بلكه سيگنال) را انتقال بديد.
    من چند سال پيش دنبال اين قضيه گشتم، ولي چيزي پيدا نكردم، اون موقع انگليسي هم خيلي بلد نبودم.
    ولي الآن شما مي‌تونيد جستجو كنيد و ببينيد سيگنال مانيتور را مي‌شه انتقال داد يا خير.

    البته شايد هم اشتباه بگم، به عبارتي خروجي كارت گرافيكي مد نظر هست. اين كه بخوايد بيايد از صفحه عكس بگيريد، مطمئناً كاري هست كه هم IO و هم پردازش زيادي را ايجاد مي‌كنه. ولي استفاده‌ي مستقيم از خروجي كارت گرافيكي، فكر مي‌كنم بهينه‌تر باشه.


    يا علي... موفق باشيد...

  23. #23
    کاربر دائمی آواتار MohsenB
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    ایرانم
    پست
    601

    Lightbulb نقل قول: نمایش دسکتاپ کلاینت در شبکه محلی

    نقل قول نوشته شده توسط khazaie01 مشاهده تاپیک
    ممنووووون دوست عزیز
    اما این شد بهینه کردن روش قبلی ، روشی غیر از عکس گرفتن باید باشه....
    با سلام
    بنده پس از چندی تحقیق یه روش خوب پیدا کردم.
    scanline
    و ارسال استرینگ به سرور.
    نظرتون چیه.
    ببینید ما چی داریم :

    یه صفحه مانیتور کلاینت ، یه سیستم مرکزی و یه خط ارتباطی بین اونا .

    خوب اگه قراره یه تصویر از سیستم کلاینت روی سیستم مرکزی نشون داده بشه ارسال اون تصویر چطوری میتونه باشه .

    خوب تصاویرو چطوری ذخیره میسه کرد؟ بوسیله فرمتای مختلف موجود .
    خوب پس به نظر من چیزی غیر از تصویر نباید انتقال داده بشه .

    استفاده از تصویر با فرمت JPG حجم فایل رو خیلی کم میکنه . اگر کسی فرمت بهتری سراغ داره بگه .

    استفاده از ScanLine به نظر من گزینه مناسبی نیست چون اولا از توابع API خیلی بهتر و سریعتر میشه استفاده کرد و دوما" هم مشکل ما اصلا انتقال سریعتر هستش نه عکس گرفتن سریعتر .

    به نظر من بدست گرفتن رویداد Paint ( رویدادی که ویندوز وقتی آن را فراخوانی میکند که یک قسمت ، تاکید میکنم : یک قسمت از صفحه نمایش را بازسازی می کند ) و ارسال آن تکه از تغییرات با فرمت JPG راه حل بسیار خوبی باشد .

    برای مثال تصور کنید کاربر موس خود را حرکت میدهد ( در این هنگام هیچ تصویری رد و بدل نمی شود و فقط مختصات موس ارسال شده و روی سیستم مرکزی ،روی آخرین تصویر ارسالی کشیده و نمایش داده می شود ) و روی دکمه Start می برد ، در این موقع رویداد Paint ویندوز فراخوانی میشود و "فقط خود دکمه استارت" را بازسازی میکند ( در این موقع برنامه مختصات و اندازه محل بازسازی شده را گرفته و یک عکس کوچک از آن محل می گیرد و به همراه مختصات به سیستم مرکزی منتقل میکند ) .

    به مثال بالا توجه کنید : اگر قرار بود کل صفحه ارسال شود و رزولوشن صفحه را هم مثلا 800x600 در نظر بگیریم این کار 200 برار وقتی است که دکمه استارت را مثلا در اندازه 80x30 فرض کنیم .

    تازه این را هم در نظر بگیرید که در بیشتر مواقع فقط موس است که حرکت می کند و سرعت ارسال یک مختصات ساده خیلی زیاد و در مثال بالا حدود 240000 برابر است .

  24. #24

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

    ممنوووون دوست عزیز

    مثالی که در این تاپیک است یک مثال خیلی ساده از عکس گرفتن از صفحه نمایش و ارسال آن است ، گفته های شما کاملا درست و بی شک با بهینه کردن روش ارسال عکس ( نکاتی که گفتید و برخی نکات دیگر ) ، بار ترافیک شبکه به صورت چشمگیر کم خواهد شد ، اما چون همیشه به دنبال یک روش مخصوص برای این کار بودم ، هیچ وقت به فکر بهینه کردن این روش نبودم . باید پیاده سازی کرد و نتیجه کار را دید ...

    اما باز هم فکر می کنم روش دیگری برای این کار باید باشد ! ( شاید هم برنامه هایی نظیر TeamViewer عکس میگیرن و ارسال می کنن ! )

    باز هم ممنووووووون دوست عزیز

  25. #25
    کاربر دائمی آواتار firststep
    تاریخ عضویت
    مهر 1387
    محل زندگی
    ایران-خواستم از جنبه تفاهم باهم بگم
    پست
    502

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

    فكر نمي كنم انتقال سيگنال كاري منسب اشد ولي يك ايده هست<<<<چون بازه تغيرات بالاست و بعد هم اگه بخايم تبديلش كنيم به ديجاتال باز همون داستان مگر...>>>>

    درباره ارور رم فكر ميكنم اگه بازه عكس گرفتن تا ارسال كامل عكس رو توي يك Thread انجام بديم و بعد اون رو ببندين باز Thread جديدي باز كنيد و ...

    اما در موردپردازش تصوير و بعد انتقال اين شايد خوب و يا بهترين باشه ولي خيلي دردسر داره
    واي اگه طرف بخواهد نگاه فيلم يا يك فلش يا يك عكس متحرك كنه......اا بهتر از همه هست فكر كنم

  26. #26
    کاربر دائمی آواتار firststep
    تاریخ عضویت
    مهر 1387
    محل زندگی
    ایران-خواستم از جنبه تفاهم باهم بگم
    پست
    502

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

    ريموت دسك تاپ چه شكلي كار ميكنه؟ مقاله اي چيزي كسي نداره

  27. #27

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

    سلام
    نظر من اینه که تعویض روش چیز زیادی رو عوض نمیکنه ، چون در نهایت ما باید اطلاعات تصویری رو از صفحه دسکتاپ مد نظر ارسال کنیم ، حالا این تصویر یه سری مشخصه داره مثل ابعاد ، عمق رنگ و فرمت یا فشرده سازی ، که این اطلاعات رو چه ما از صفحه مانیتور برداریم یا از خروجی کارت گرافیک یا ... هرجای دیگه ، در نهایت یه سری داده هست که بایستی به اطلاعات تصویری تبدیل بشه ، حالا هرچی فشرده سازی بالاتر ، عمق رنگ پایین تر و ابعاد تصویر کوچکتر باشه ، حجم اطلاعات ارسالی کمتر و در نتیجه ترافیک شبکه کمتر خواهد بود .( مثل فرق MPEG1,2,4 )

    روشهایی مثل scanline میتونه سرعت تصویر برداری رو از صفحه نمایش بالا ببره ولی توی حجم ارسالی دخالتی نداره

    بهینه کردن این نرم افزار شامل دو قسمته :
    1- بهینه کردن سرعت تصویر بردای ( همون مطالبی که دوستان گفتند ، تغییرات ، محدود شدن ابعاد ، مختصات پوینتر ، scanline و ....)
    2- بهینه کردن حجم انتقال داده ( فشرده سازی ، کم کردن عمق رنگ ، محدود کردن ابعاد و ...)

    که ترکیبی از هر دو مورد فوق میتونه کارایی و سرعت رو بسیار بالا ببره



    این هم یکم توضیح راجع به remote desktop
    http://www.codeproject.com/KB/IP/RDVL.aspx

    موفق باشید
    آخرین ویرایش به وسیله mossaferin : شنبه 24 مهر 1389 در 16:51 عصر

  28. #28

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

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


  29. #29

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

    جناب آقای mossaferin ممنووووووون ، لطف کردید ...
    آقای Delphi-7 حرف شما درست اما با این روش حجم نهایی همین اعداد بیشتر از حجم عکس خواهد شد ...

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

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