تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 10 از 10

نام تاپيک: گرفتن عكس از برنامه هاي ديگر

  1. #1
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض گرفتن عكس از برنامه هاي ديگر

    با سلام خدمت دوستان عزيزم - سال نو مبارك اميدوارم سال خوبي در پيش رو داشته باشين.
    مي خواستم برنامه اي بنويسم كه از برنامه هاي باز شده در حال اجرا عكس بگيره. درست مانند ويندوز Vista كه با گرفتن Alt+Tab پنجره ها رو هم نمايش ميده.
    موفق باشين
    باي

  2. #2
    آخر فروم باز NoneForce's Avatar
    تاريخ عضويت
    Nov 2005
    محل سكونت
    Sector0@
    پست ها
    1,603

    پيش فرض

    سلام
    كسي مانع نوشتن برنامه شده؟!
    يا مشكلي وجود دارد؟

  3. #3
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض

    سلام
    كسي مانع نوشتن برنامه شده؟!
    يا مشكلي وجود دارد؟
    سلام
    خير كسي مانع نيست. شكر خدا فعلا هم سالمم . ولي مشكل هست. مشكل هم اينكه كه وقتي من توي يه Application ديگه هستم(برنامه خودم) ، چجوري مي تونم از يه Application در حال اجراي ديگه (فقط محيط كاربري اون) Screenshot بگيرم؟ اگه متوجه نشدين يه جور ديگه بگم. پله پله.
    موفق باشين
    باي

  4. #4
    داره خودمونی میشه
    تاريخ عضويت
    Feb 2008
    پست ها
    161

    پيش فرض

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    کد بالا تصویر دسکتاپ رو در یک TBitmap برمیگردونه. لینک منبعش اینه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا، کاری که شما باید بکنید اینه که بجای دادن عدد صفر به تابع GetDC، هندل پنجره مورد نظر خودتون رو بزارید، و بجای تنظیم طول و عرض Bitmap بر اساس اندازه Screen، طول و عرض پنجره مربوطه رو بزارید.
    برای بدست آوردن هندل یک پنجره متناسب با اینکه چه پنجره ایی رو می خواید بگیرید، توابع مختلفی وجود داره، مثل EnumWindows, GetWindow, GetActiveWindow و...
    بعد از اینکه هندل پنجره رو بدست آوردید، می تونید با توابعی مثل GetWindowRect یا GetClientRect طول و عرض پنجره مروبطه رو بدست بیارید و در داخل تابع استفاده کنید.
    با این تفاسیر کد بالا باید به چیزی مثل این تبدیل بشه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by VDeveloper; 27-03-2008 at 02:45.

  5. #5
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض

    با سلام
    خيلي ممنون. اتفاقاً من خودم ديروز در MSDN داشتم توابع مربوط به Window ها در Windows Managment رو مي خوندم كه همين توابعي كه شما گفته بودين نيز توش بود. فقط طرز استفادش رو نمي دونستم. براي بدست آوردن تعداد برنامه هاي باز و در حال اجرا هم مي شه از تابع GetALTTABINFO استفاده كرد كه مشخصات پنجره ALT+TAB رو در يك ساختمان قرار ميده.
    امتحان مي كنم و نتيجه رو بهتون خبر مي دم.
    موفق باشين
    باي

  6. #6
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض

    سلام
    من كد رو بصورت زير نوشتم و جواب ميده. البته مشكلش اينكه حتماً بايد برنامه در حالت Maximized باشه تا عكسش رو ذخيره كنه:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا دوتا سوال ديگه:
    1- چجوري ميشه يه پنجره خارجي را Maximize يا Minimize كرد.
    2- چجوري تعداد برنامه هاي Switching- Window رو ميشه پيدا كرد. منظور اينكه كه پنجره هايي كه بشه از اونا عكس گرفت. براي مثال وقتي Jetaudio رو در حالت Try مي برين ديگه Switching-Window نيست. ولي وقتي Minimize مي كنيد Switching-Window هست و در ليست پنجره Alt+Tab مياد.
    ممنون
    باي

  7. #7
    داره خودمونی میشه
    تاريخ عضويت
    Feb 2008
    پست ها
    161

    پيش فرض

    چجوري تعداد برنامه هاي Switching- Window رو ميشه پيدا كرد. منظور اينكه كه پنجره هايي كه بشه از اونا عكس گرفت.
    EnumWindows

    من كد رو بصورت زير نوشتم و جواب ميده. البته مشكلش اينكه حتماً بايد برنامه در حالت Maximized باشه تا عكسش رو ذخيره كنه
    کد بالا نباید وابستگی به حالت Maximized یا Minimized یک پنجره داشته باشه.

  8. #8
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض

    سلام
    متأسفانه EnumWindows رو امتحان كردم. ارورر ميده كه. دو تا پارامتر از نوع Pointer و Integer داره. وقتي كه برنامه رو اجرا مي كني و تابع رو فراخواني مي كني ارورر دسترسي به حافظه مي ده.
    در مورد Max و Min شدن هم بايد بگم كه اين كدي كه من نوشتم همون كد شماست كه يخورده تغيير كرده، و فقط در صورتي از پنجره ديگه عكس مي گيره كه اون پنجره در حالت Max يا Normal باشه، و اگه Min باشه عكسي نمي گيره. حالا اين مهم نيست. مهم Handle كردن پنجره هاي ديگه است كه نياز به تعداد و اسمشون داره. فكر كنم براي اسم پنجره ها بشه از تابع GetwindowText استفاده كرد. به هر حال Enumwindow كار نكرد.

  9. #9
    آخر فروم باز NoneForce's Avatar
    تاريخ عضويت
    Nov 2005
    محل سكونت
    Sector0@
    پست ها
    1,603

    پيش فرض

    سلام

    براي Minimize يك پنجره خاص :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اينم مثال براي EnumWindows :
    (يه ليست باكس روي فرم با اسم strlist قرار دهيد)

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  10. #10
    پروفشنال romixery's Avatar
    تاريخ عضويت
    Mar 2007
    محل سكونت
    ميون موجودات عجيب غريب(آدما)
    پست ها
    673

    پيش فرض

    سلام
    خيلي ممنون نانفورس جان.
    مشكل عجيبيه من برنامه رو نوشتم. جوابم ميده. ولي با يه مشكلي جواب ميده. اونم اينكه برنامه ها حتما بايد Max يا Normal باشن. با استفاده از تابع Showwindow من اونا رو Max مي كنم ولي برنامه يهو قاطي مي كنه. البته اين كار كار اصولي و درستي هم نيست. كسي مي دونه من بايد چه تغييري در تابعم بدم تا از برنامه هاي Minmize شده هم عكس بگيره. ( تابع در پست 6 تعريف شده)؟ حتي وقتي برنامه ها Max يا Normal هم هستند وقي با تابع Setforegroundwindow اونو به جلو ميارم، بازم برنامه قاطي ميكنه. مي خواين كد كلي رو بزارم تا ببينيد.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •