Windows Api | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar windows api

2011 Build Konferansı Birinci Gün Raporu

17 September 2011 Yorum yapılmamış

Blog’umun 200. yazısını beni kırmayarak sevgili Daron Yöndem yazdı. Aslında tek bir yazı yazacaktı, fakat Microsoft‘un Build Konferans‘ına katıldığı için bir yazı serisine dönüştü. Hergün izlenimlerini sizlerle paylaşıyor olacağım. Yazıların orjinallerini Daron Yöndem‘in kendi blog’undan da takip edebilirsiniz. Ayrıca twitter‘dan da takip etmenizi öneririm; @daronyondem

Söz Daron’da… Devamını oku…

C# ile Windows Sistem Saatini Ayarlamak

25 September 2010 5 yorum

Bazı windows uygulamalarının veya servislerinin Windows sistem saatini değiştirmesi gerekebilir.

C# ile geliştirdiğiniz uygulamalarda veya servislerde sistem saatini, basit bir Windows API çağrısı yaparak değiştirebilirsiniz.

Bu makale ile, SYSTEMTIME yapısını ve SetSystemTime fonksiyonunu nasıl tanımlayacağınızı ve kullanacağınızı anlatacağım.

SetSystemTime fonksiyonu bir Windows API çağrısıdır ve işletim sisteminin tarih/saat bilgisini değiştirmek için kullanılır.

kernel32.dll içerisinde tanımlanmış bu Windows API fonksiyonu, C# ile Platform Invocation Services (P/Invoke) çağrısı yapılarak kullanılabilir.

Öncelikle kod dosyamızın üstünde bulunan using kısmına System.Runtime.InteropServices namespace‘ini ekleyelim;

using System.Runtime.InteropServices;

Class seviyesinde aşağıdaki tanımlama ile SetSystemTime fonksiyonunun kernel32.dll içerisinde yer aldığını, parametrelerini ve geri dönüş tipini uygulamamıza bildirmiş oluyoruz;

[DllImport("kernel32.dll")]
public extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

SetSystemTime fonksiyonu SYSTEMTIME tipinde bir parametre alıyor. SYSTEMTIME struct yapısını da uygulamamıza tanımlamamız gerekiyor;

[StructLayout(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
	public short Year;
	public short Month;
	public short DayOfWeek;
	public short Day;
	public short Hour;
	public short Minute;
	public short Second;
	public short Milliseconds;
}

Artık istediğimiz kod bloğunda ilgili fonksiyon çağrısını yaparak, sistem saatini ayarlayabiliriz;

SYSTEMTIME zaman = new SYSTEMTIME();
zaman.Day = 25;
zaman.Month = 9;
zaman.Year = 2010;
zaman.Hour = 14;
zaman.Minute = 45;
SetSystemTime(ref zaman);