گرفتن Screenshot از Desktop
سلام
من کد زیر رو برای گرفتن Screenshot از Desktop پیدا کردم
//Create a new bitmap.
var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);
// Create a graphics object from the bitmap.
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);
// Take the screenshot from the upper left corner to the right bottom corner.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen. Bounds.X,
Screen.PrimaryScreen.Bounds.Y,
0,
0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
// Save the screenshot to the specified path that the user has chosen.
bmpScreenshot.Save("Screenshot" + x.ToString() + ".png", ImageFormat.Png);
کد بالا خوب کار میکنه فقط یک جا به مشکل می خوره
اونم زمانی است که نیاز است که یک برنامه run as administrator اجرا بشه
در این حالت Exception رخ میده، "The handle is invalid" و تصویری نمی گیره، مشکل رو باید چطوری رفع کنم؟
ممنون
نقل قول: گرفتن Screenshot از Desktop
من تو یکی از برنامه هام مجبور شدم برای مدیریت خطاها برای بخش شبکه که کارشناس شبکه ببینه از مانیتور جدا از مشخصاتی که میدم عکس هم بگیرم و این کد رو زدم و خوب کار میکنه :
public static Bitmap PrintScreen()
{
Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graphics = Graphics.FromImage(printscreen);
graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size - (new Size()));
return printscreen;
}
نقل قول: گرفتن Screenshot از Desktop
کد ارائه شده بازم همون مشکل رو داره
وقتی صفحه run as administrator میاد تصویر رو مشکلی ذخیره می کنه
نقل قول: گرفتن Screenshot از Desktop
نقل قول:
نوشته شده توسط
mahdi bg
کد ارائه شده بازم همون مشکل رو داره
وقتی صفحه run as administrator میاد تصویر رو مشکلی ذخیره می کنه
سلام.
اگر منظورتون پنجره های امنیتی مثل صفحه درخواست دسترسی UAC یا صفحه Sign in screen باشه که باید بگم این صفحات خارج از میط دسکتاپ هستند و به نوعی در یک session جداگانه از برنامه های دسکتاپ اجرا میشن و فکر می کنم فقط سرویس هایی که تحت سشن System اجرا میشن (مثل ویروس کش ها و ...) می تونن به این پنجره ها دسترسی داشته باشن.
ولی اگر کلا وقتی نرم افزار run as admin میشه به پنجره های user دسترسی نداره، میتونید اون قسمت که وظیفه گرفتن screenshot رو داره توی یک برنامه کنسول جداگانه بنویسید و تحت User اجراش کنید.