نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل در تغییر تاریخ و ساعت سیستم

  1. #1

    مشکل در تغییر تاریخ و ساعت سیستم

    سلام
    میخام ساعت و تاریخ سیستم رو تغییر بدم ولی نمیشه!
    کل مطالب اینترنت روزیر و رو کردم ولی جواب نمیده،
    نمیدونم چرا،
    ویندوزم سون هست کدها روش جواب نمیده،
    مثلا کد زیر:



    using System.Globalization;




    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEMTIME
    {
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;
    }

    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool SetSystemTime([In] ref SYSTEMTIME st);

    private void Form1_Load(object sender, EventArgs e)
    {
    SYSTEMTIME st = new SYSTEMTIME();
    st.wYear = 2005; // must be short
    st.wMonth = 5;
    st.wDay = 22;
    st.wHour = 1;
    st.wMinute = 1;
    st.wSecond = 1;

    SetSystemTime(ref st);

    }






    مشکل از چیه؟؟؟؟

  2. #2
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل در تغییر تاریخ و ساعت سیستم

    فایل exe رو به صورت Run as Administrator اجرا کنید تا اجازه تنظیم ساعت رو داشته باشه.
    پ.ن:
    وقتی با توابع Windows API کاری رو میخواین انجام بدین و اونطور که انتظار دارین انجام نمیشه، با تابع GetLastError کد آخرین خطا رو بدست بیارین و با تابع FormatMessage و یا از طریق این آدرس http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx علت خطا رو متوجه بشین...
    هرچند توی MSDN توی توضیحات همین تابع SetSystemTime هم نوشته بود که نیاز Special Privileges داره.

  3. #3

    نقل قول: مشکل در تغییر تاریخ و ساعت سیستم

    سلام
    میشه در مورد کار با تابع GetLastError بیشتر توضیح بدین؟
    ممنون

  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1383
    محل زندگی
    اصفهان
    پست
    1,436

    نقل قول: مشکل در تغییر تاریخ و ساعت سیستم

    نقل قول نوشته شده توسط salehsam مشاهده تاپیک
    سلام
    میشه در مورد کار با تابع GetLastError بیشتر توضیح بدین؟
    ممنون
    اکثر توابع API ویندوز، وقتی به دلیلی به مشکل میخورن (مثلا وروردی اشتباه)، کد خطای اونها رو میشه با استفاده از تابع GetLastError دریافت کرد و از طریق اون فهمید علت خطا چیه.در MSDN، لیست Error Code های سیستم هست.(لینکش رو در پست قبل دادم).و البته از طریق تابع FormatMessage هم میشه متن خطا رو از طریق کد اون، بدست آورد. برای مثال، همین مشکلی که موضوع تاپیک هست رو میشه به صورت زیر متن خطا رو بدست آورد:


    private void Form1_Load(object sender, EventArgs e)
    {
    SYSTEMTIME st = new SYSTEMTIME();
    st.wYear = 2013; // must be short
    st.wMonth = 11;
    st.wDay = 30;
    st.wHour = 23;
    st.wMinute = 16;
    st.wSecond = 0;

    bool succeed = SetSystemTime(ref st);
    if (!succeed)
    {
    uint errorCode = GetLastError();
    IntPtr pMessage = IntPtr.Zero;
    if (0 != FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
    IntPtr.Zero, errorCode, 0, ref pMessage, 0, IntPtr.Zero))
    {
    string message = Marshal.PtrToStringAnsi(pMessage);
    LocalFree(pMessage);
    MessageBox.Show(string.Format("Failed to set system time: {0}", message));
    }

    }
    }

    // from header files
    const uint FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;
    const uint FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;
    const uint FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;
    const uint FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000;
    const uint FORMAT_MESSAGE_FROM_HMODULE = 0x00000800;

    const uint FORMAT_MESSAGE_FROM_STRING = 0x00000400;
    [StructLayout(LayoutKind.Sequential)]
    public struct SYSTEMTIME
    {
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;
    }
    [DllImport("kernel32.dll")]
    static extern uint GetLastError();

    [DllImport("kernel32.dll")]
    static extern uint FormatMessage(uint dwFlags, IntPtr lpSource,
    uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer,
    uint nSize, IntPtr Arguments);

    [DllImport("kernel32.dll", SetLastError = true)]
    static extern IntPtr LocalFree(IntPtr hMem);

    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool SetSystemTime([In] ref SYSTEMTIME st);

تاپیک های مشابه

  1. سوال: تغییر اتوماتیک تاریخ و ساعت سیستم به تاریخ و ساعت روز
    نوشته شده توسط mohammad_2039 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: شنبه 16 مهر 1390, 09:11 صبح
  2. چگونه می توان تاریخ و ساعت سیستم عامل را از طریق برنامه پیتون تغییر داد ؟
    نوشته شده توسط zehs_sha در بخش دیگر زبان های اسکریپتی
    پاسخ: 1
    آخرین پست: دوشنبه 05 اردیبهشت 1390, 15:48 عصر
  3. مشکل در تغییر تاریخ سیستم
    نوشته شده توسط javad_r_85 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 13 مرداد 1389, 08:42 صبح
  4. تابعی برای پیدا کردن تاریخ و ساعت سیستم
    نوشته شده توسط بمب منطقی در بخش برنامه نویسی در Delphi
    پاسخ: 9
    آخرین پست: سه شنبه 04 اسفند 1383, 11:09 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •