ورود

View Full Version : کار نکردن QPixmap::grabWindow روی Windows Aero ویندوز 7



eshpilen
شنبه 16 آذر 1392, 08:12 صبح
خیلی وقت پیش یه برنامه نوشته بودم که با QPixmap::grabWindow روی ویندوز اسکرین شات میگرفت. خب اون موقع ویندوز XP بود و مشکلی نبود، ولی اخیرا که همون برنامه رو روی ویندوز 7 تست کردم دیدم اسکرین شات نمیگیره (تصاویر خالی/سیاه میگیره).
خلاصه تحقیق کردم و به زحمت تونستم بفهمم که ظاهرا اشکال به این برمیگرده که در محیط جدید Aero که میکروسافت در ویندوز 7 و ویستا معرفی کرده، این متد درست کار نمیکنه.
ولی متاسفانه راه حل جایگزینی براش پیدا نکردم.

حالا شما راهکاری چیزی چی پیشنهاد میکنید؟

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

eshpilen
شنبه 16 آذر 1392, 15:33 عصر
البته کد کاملش برای گرفتن اسکرین شات از دسکتاپ اینه دیگه:


QPixmap::grabWindow(QApplication::desktop()->winId());

eshpilen
یک شنبه 17 آذر 1392, 08:26 صبح
راستی این متد روی thin client هم درست جواب نمیده.
در thin client در خود ویندوز با ctrl+print screen میتونم اسکرین شات بگیرم، ولی اسکرین شات با Qt درست کار نمیکنه.
روی ویندوز XP میگما.

کامبیز اسدزاده
یک شنبه 17 آذر 1392, 16:34 عصر
خب شما این نسخه Qt رو آپدیت کردی؟ از آخرین نسخه استفاده میکنی ؟ شاید اون موقع ویندوز XP که بود با نسخه اون زمان سازگار بوده.
شایدم یه باگ باشه.

eshpilen
دوشنبه 18 آذر 1392, 08:54 صبح
Qt من که قدیمیه.
ولی سرچ کردم مطالبی که در این رابطه بود چون جدیدتر بودن (و فکر کنم نسخه های بالاتری از Qt درش ذکر شده بودن) و صحبت از ویندوز 7، خب گفتم حتما در آخرین نسخه هم این مشکل حل نشده، وگرنه مردم مشکل نداشتن یا دیگران بهشون جواب میدادن که نسخهء جدید رو دانلود کنید.

حالا شما هم اگر Qt جدید و ویندوز 7 دم دست دارید میتونید تست کنید. کاری نداره که.
من همه چیم قدیمیه. PC قدیمی، کیوت قدیمی، ویندوز XP.

کامبیز اسدزاده
دوشنبه 18 آذر 1392, 09:23 صبح
در لینوکس جواب میده ولی ویندوز 8 دارم که کلا کد خطا میده.

alamate_aoal
سه شنبه 19 آذر 1392, 21:10 عصر
سلام

if (qApp->primaryScreen())
ui->label->setPixmap(qApp->primaryScreen()->grabWindow(0));