C# İpuçları

Bugün C# ile ilgili bir kaç ipucu yazacağım. Bilenler için basit bilmeyenler için aranıp bulunması lazım olan şeyler. Bunlar c sharp ile bilgisayarı kapatmak, yine c sharp ile ekran görüntüsü kaydetmek ve değiştirmek. Umarım faydalı olur.
1. Bilgisayarı kapatmak.

using System.Management;
void Shutdown()
{
ManagementBaseObject mboShutdown = null;
ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
mcWin32.Get();

// You can't shutdown without security privileges
mcWin32.Scope.Options.EnablePrivileges = true;
ManagementBaseObject mboShutdownParams =
mcWin32.GetMethodParameters("Win32Shutdown");

// Flag 1 means we want to shut down the system. Use "2" to reboot.
mboShutdownParams["Flags"] = "1";
mboShutdownParams["Reserved"] = "0";
foreach (ManagementObject manObj in mcWin32.GetInstances())
{
mboShutdown = manObj.InvokeMethod("Win32Shutdown",
mboShutdownParams, null);
}
}

veya kısaca;

using System.Diagnostics;

void Shutdown()
{
Process.Start("shutdown.exe", "-s -t 00");
}


2. Arkaplan Resmini Değiştirmek İçin :

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Runtime.InteropServices;

using System.Windows.Forms;

namespace wallpaper

{

public partial class Form1 : Form

{

[DllImport("user32.dll", CharSet = CharSet.Auto)]

private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);

private static UInt32 SPI_SETDESKWALLPAPER = 30;

private static UInt32 SPIF_UPDATEINIFILE = 0x1;

private String imageFileName = @"E:\photos\DSC01680.bmp";

public Form1()

{

InitializeComponent();

}

public void button1_Click(object sender, EventArgs e)

{

string wall = imageFileName; //+ "DSC0180.bmp";

Form1 wallset = new Form1();

wallset.SetImage(wall);

}

public void SetImage(string filename)

{

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filename, SPIF_UPDATEINIFILE);

}

}

}

3. Ekran görüntüsü Almak İçin:

[DllImport ("user32.dll")]

private extern static IntPtr GetDesktopWindow ();

[DllImport ("user32.dll")]

static extern IntPtr FindWindowEx (IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

[DllImport ("user32.dll")]

static extern bool PrintWindow (IntPtr hwnd, IntPtr hDC, uint nFlags);

private void GrabDesktop () {

// get the desktop window

IntPtr hDesktop = (IntPtr) GetDesktopWindow ();

// get the Program Manager

IntPtr hWnd = FindWindowEx (hDesktop, IntPtr.Zero, "Progman", "Program Manager");

Bitmap bmp = new Bitmap (Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

Graphics g = Graphics.FromImage (bmp);

PrintWindow (hWnd, g.GetHdc (), 0);

g.ReleaseHdc ();

// do whatever you want with your bitmap

bmp.Save (@"c:\test\grab.bmp");

}

Bir önceki yazımız olan Visual C# - Rasgele Sayı Üretme başlıklı makalemizde c# ve tips hakkında bilgiler verilmektedir.

Posted in: C#

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir