الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود لجعل برنامجك يقوم ب Print Screen للشاشة لوحدة !

مغلق
بدأه Feras Nasser في 23 يونيو 2007 · 2 رد · 620 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم أحبائي،

هذا كود يقوم لوحده بأخذ PrintScreen للشاشة النشطة ومن ثم يقوم بتخزينها في أي مكان ترغب فية.

كل ما عليك هو نسخ الـــ Class أدناه وإنشاء كلاس جديد في مشروعك وسم الكلاس NativeWIN32. ولإستخدام الأمر ما عليك فقط هو استخدام الأمر التالي :

[code]NativeWIN32.CaptureAndSave("C://","myShoot2");

ملاحظة: أرجوا من الأخوان عدم استخدام الكود في غرض التجسس أو أي طريقة قد تضر أحد

using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Windows.Forms;

namespace YOUR_PROJECT_NAME
{

public class NativeWIN32{ 
public const ushort KEYEVENTF_KEYUP = 0x0002; 
public enum VK : ushort {
SHIFT				= 0x10, 
CONTROL			  = 0x11, 
MENU				 = 0x12, 
ESCAPE			   = 0x1B,  
BACK				 = 0x08,  
TAB				  = 0x09,  
RETURN			   = 0x0D,  
PRIOR				= 0x21,  
NEXT				 = 0x22,  
END				  = 0x23, 
HOME				 = 0x24, 
LEFT				 = 0x25, 
UP				   = 0x26,  
RIGHT				= 0x27,
DOWN				 = 0x28,
SELECT			   = 0x29, 
PRINT				= 0x2A,  
EXECUTE			  = 0x2B,  
SNAPSHOT			 = 0x2C, 
INSERT			   = 0x2D,  
DELETE			   = 0x2E,  
HELP				 = 0x2F,  
NUMPAD0			  = 0x60,  
NUMPAD1			  = 0x61,  
NUMPAD2			  = 0x62,  
NUMPAD3			  = 0x63,  
NUMPAD4			  = 0x64,  
NUMPAD5			  = 0x65,  
NUMPAD6			  = 0x66,  
NUMPAD7			  = 0x67,  
NUMPAD8			  = 0x68,  
NUMPAD9			  = 0x69,  
MULTIPLY			 = 0x6A,  
ADD				  = 0x6B,
SEPARATOR			= 0x6C,  
SUBTRACT			 = 0x6D,
DECIMAL			  = 0x6E, 
DIVIDE			   = 0x6F,
F1				   = 0x70,
F2				   = 0x71,
F3				   = 0x72,
F4				   = 0x73,
F5				   = 0x74,
F6				   = 0x75, 
F7				   = 0x76, 
F8				   = 0x77,  
F9				   = 0x78,  
F10				  = 0x79,  
F11				  = 0x7A,  
F12				  = 0x7B,  
OEM_1				= 0xBA,  // ',:' for US  O
EM_PLUS			 = 0xBB,   // '+' any country  
OEM_COMMA			= 0xBC,   // ',' any country  
OEM_MINUS			= 0xBD,   // '-' any country  
OEM_PERIOD		   = 0xBE,   // '.' any country 
OEM_2				= 0xBF,   // '/?' for US  
OEM_3				= 0xC0,   // '`~' for US 
MEDIA_NEXT_TRACK	 = 0xB0, 
MEDIA_PREV_TRACK		 = 0xB1,  
MEDIA_STOP			   = 0xB2,  
MEDIA_PLAY_PAUSE		 = 0xB3,  
LWIN		   =0x5B, 
RWIN		   =0x5C 
} 
public struct KEYBDINPUT {  
  public ushort wVk;  
  public ushort wScan; 
  public uint dwFlags;  
  public long time;  
  public uint dwExtraInfo; 
}; 
[StructLayout(LayoutKind.Explicit,Size=28)]  
public struct INPUT { 
  [FieldOffset(0)] public uint type;
  [FieldOffset(4)] public KEYBDINPUT ki; 
}; 
[DllImport("user32.dll")] 
public static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);

public static void CaptureAndSave(String fileSavePath,String fileName)
{
  uint intReturn = 0; 
  NativeWIN32.INPUT structInput; 
  structInput = new NativeWIN32.INPUT();
  structInput.type = (uint)1; 
  structInput.ki.wScan = 0; 
  structInput.ki.time = 0; 
  structInput.ki.dwFlags = 0; 
  structInput.ki.dwExtraInfo = 0; 
  //Press Alt Key 
  structInput.ki.wVk = (ushort)NativeWIN32.VK.MENU; 
  intReturn = NativeWIN32.SendInput((uint)1, ref structInput, Marshal.SizeOf(structInput)); 
  // Key down the actual key-code 
  structInput.ki.wVk = (ushort)NativeWIN32.VK.SNAPSHOT;
  //vk; 
  intReturn = NativeWIN32.SendInput((uint)1, ref structInput, Marshal.SizeOf(structInput));
  // Key up the actual key-code 
  structInput.ki.dwFlags = NativeWIN32.KEYEVENTF_KEYUP;
  structInput.ki.wVk = (ushort)NativeWIN32.VK.SNAPSHOT;
  //vk; 
  intReturn = NativeWIN32.SendInput((uint)1, ref structInput, Marshal.SizeOf(structInput)); 
  //Keyup Alt 
  structInput.ki.dwFlags = NativeWIN32.KEYEVENTF_KEYUP;
  structInput.ki.wVk = (ushort)NativeWIN32.VK.MENU;
  intReturn = NativeWIN32.SendInput((uint)1, ref structInput, Marshal.SizeOf(structInput)); 
  IDataObject data = Clipboard.GetDataObject();
  if (data.GetDataPresent(DataFormats.Bitmap)) 
  { 
   Image image = (Image)data.GetData(DataFormats.Bitmap,true); 
   image.Save(fileSavePath + fileName +  ".bmp",System.Drawing.Imaging.ImageFormat.Bmp);
   image.Save(fileSavePath + fileName +  ".jpg",System.Drawing.Imaging.ImageFormat.Jpeg); 
   image.Save(fileSavePath + fileName +  ".gif",System.Drawing.Imaging.ImageFormat.Gif);
  } 
  else 
  {  
   Console.WriteLine("The Data In Clipboard is not in an image format"); 
  }
}
}

}

أخوكم فـــــــراس ناصر

تم تعديل هذه المشاركة بواسطة Feras Nasser في 23 يونيو 2007 في 23:09

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

#2

السلام عليكم

شكرا على المشاركة ويا حبذا أخي لو ذكرت المصدر

بإمكانك الإستعانة بهذا الموضوع لمعرفة كيفية إلتقاط صورة الشاشة:

أود معلومات عن كيفية أخذ صورة للشاشة

#3

بارك الله فيك أخي الكريم، المرات القادمه ان شالله وشكرا لتنبيهي لذلك.

سبحان الله وبحمده عدد خلقه ورضا نفسه وزنة عرشه ومداد كلماته

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…