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

نام تاپیک: گرفتن تاریخ روز بطور غیرمستقیم

  1. #1
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484

    گرفتن تاریخ روز بطور غیرمستقیم

    فرض کنید که کاربر تاریخ سیستم رو عوض کنه و بعد برنامه رو اجرا کنه. راهی وجود داره که بشه تاریخ واقعی روز یا به عبارتی تاریخی که سیستم شروع بکار کرده رو پیدا کرد؟

    در ضمن نمی‌تونم از اینترنت برای گرفتن تاریخ استفاده کنم. تابع Date دلفی و API مربوطه ویندوز هم تاریخی رو که توسط کاربر تعیین شده برمی‌گردونند.

  2. #2
    سلام
    من همین کار رو می خواستم انجام بدم.
    برای این منظور می خواستم یه تقویم مستقل از سیستم بنویسم .(و همچنان نیز می خواهم بنویسم :wink: )

  3. #3
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    l8026070@yahoo.com
    پست
    282
    با سلام
    فکر کنم به هیچ صورت ممکن نیست مگر اینکه یه تایمر مستقل از سیستم بر روی برنامه تعریف بشه که در این صورت برنامه حاصله همیشه باید یه جورایی تو حافظه باشه و تنها راه تکثیر اون فقط از روی شبکه باشه که تایمر از کار نیفته . تازه در این صورت اگر سیستم کاربر خاموش بشه با هم تاریخ از دست میره که تنها راه حلش همون استفاده مستقیم از شبکه محلی یا اینترنت میباشد.
    البته فکر کنم . البته اگه کسی راهی پیدا کرد خیلی ممنون میشم چون خودم هم دنبال یه همچین چیزی هستم.
    آقای دلفی اریا از نظر نظری با شبکه یا اینترنت میشه ساعت رو گرفت ولی میشه بگید چه کدی باید نوشت؟؟؟؟؟؟؟؟

  4. #4
    خوب با نوشتن یک Service میشه این مشکل رو حل کرد البته باید Service به صورت اتوماتیک موقع بالا اومدن ویندوز Start کنه و در این موقع باید تاریخ رو دریافت کنه و یه جای نگاه داره بعد توسط Socket یا Share Memory و یا ... به برنامه اصلی بفرسته البته باید Service هم هوشمند باشه که وقتی مثلا از ساعت 24 گذشت خودشو Update کنه .

  5. #5
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    علی (مشاطان) جان، بدون استفاده از یک برنامه دیگه. :wink:

    سید علی جان تو لینک زیر استاندارد این کار شرح داده شده:
    <span dir=ltr>RFC 1361 - Simple Network Time Protocol (SNTP)</span>

  6. #6

    Re: گرفتن تاریخ روز بطور غیرمستقیم

    نقل قول نوشته شده توسط DelphiArea
    تاریخی که سیستم شروع بکار کرده رو پیدا کرد؟
    delphi help ===>win sdk

    GetTickCount

    GetTickCount

    The GetTickCount function retrieves the number of milliseconds that have elapsed since Windows was started.

    DWORD GetTickCount&#40;VOID&#41;


    Parameters

    This function has no parameters.

    Return Values

    If the function succeeds, the return value is the number of milliseconds that have elapsed since Windows was started.

    Remarks

    The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if Windows is run continuously for 49.7 days.
    Windows NT&#58; To obtain the time elapsed since the computer was started, look up the System Up Time counter in the performance data in the registry key HKEY_PERFORMANCE_DATA . The value returned is an 8 byte value.


  7. #7
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    ممنون علیرضا جان. ولی این تابع تعداد ثانیه‌هایی رو که از زمان شروع سیستم گذشته برمی‌گردونه. برای استفاده از این تابع برای بدست آوردن تاریخ باید بدونیم که ثانیه صفر چه زمانی (تاریخ و ساعت) بوده.

  8. #8
    راه حل دوم: مقایسه زمان فعلی با آخرین زمانaccessed فایلها ی روی هارد یا زمان Created و...

  9. #9
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    حقیقتش الان از این روش استفاده می‌کنم ولی دو تا مشکل داره:
    1. اگر فایل مورد نظر مدام توسط سیستم تغییر کنه زمانی که کاربر تاریخ رو تغییر می‌ده تاریخ این فایلها هم ممکنه به تاریخ جدید تغییر پیدا کنه.
    2. اگر سیستم فایل رو دیر به دیر تغییر بده در این صورت ممکنه تاریخی رو که می‌گیریم تاریخ روزهای قبل باشه.
    فکر می‌کنم با ترکیب دو روشی که گفتی بشه به نتیجه‌ای رسید. :idea:

  10. #10
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    l8026070@yahoo.com
    پست
    282
    با سلام
    با تشکر از آقای دلفی اریا عزیز که اینقدر به بنده لطف دارن :D :D :D :D ولی میشه کمی بیشتر توضیح بدین چون اون چیزی که من خوندم با اون سطح زبان انگلیسی عالیم!!!!!!!! تقریبا هیچی دستگیرم نشد. در مورد استفاده از یک فایل و زمان مدیفای شدن اون چطوری میشه استفاده کرد ؟ و در مورد شروع کار ویندوز فکر کنم تو ریچجیستری یه چیزهایی ثبت بشه ولی نمیدونم کجاش.

  11. #11
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    سید علی جان بهتره راجب به قرارداد SNTP در بخش شبکه صحبت بشه. البته اینم بگم که اطلاعات من در مورد شبکه در اون حد نیست که قابل بیان کردن باشه ولی مسلما" اینجا دوستانی هستند که بتونند پرسشت رو پاسخ بدن. و پرسش دیگرت هم همون پرسشی هست که قراره اینجا پاسخ داده بشه.

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    سلام،

    اگر فایلی رو پیدا کنید که ویندوز فقط در شروع کار اون رو تغییر بده، با استفاده از فانکشن زیر می‌تونید تاریخ و ساعت فعلی رو با چند ثانیه اختلاف نسبت به زمان شروع ویندوز بدست بیارید.

    این هم بگم که چنین فایلهایی وجود دارند ولی ممکنه رو ویرایشهای مختلف ویندوز فرق داشته باشند. چون از این کد برای نوشتن ویرایش Time Trial یک برنامه می‌خوام استفاده کنم٬ اسم فایلی رو که خودم انتخاب کردم اینجا نمی‌یارم. :wink:

    function SysDateTime&#58; TDateTime;
    const
    FileName = 'PATH TO FILE THAT IS MODIFIED ON WINDOWS STARTUP';
    begin
    Result &#58;= FileDateToDateTime&#40;FileAge&#40;FileName&#41;&# 41; + GetTickCount / &#40;24 * 3600 * 1000&#41;;
    end;


    ممنون از همگی و بویژه علیرضا خان که این ایده رو زنده کرد.

    کامبیز

  13. #13
    کاربر دائمی آواتار SReza1
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کنار تعدادی تراریوم و کاکتوس!
    پست
    702

    جواب

    روش خیلی خوبی بود!! کلی حال کردم :P :P :P :P :lol: :D :P :oops:

  14. #14
    خواهش میکنم آقا کامبیز
    :!: ولی خوب راه چاره گریزاز این هم تغییر ساعت سیستم و یک بار restart کردن سیستم است
    //××××××××××××××××××××
    راه حل بهتر که به فکرمن می رسداین است که
    تاریخ سیستم را در یک متغییر نگاه داشته و با مقایسه آن با تاریخ فایلهای توی دایرکتوری ویندوز (یا پوشه system آن)
    اگر آنها جدید تر بودند آن را در نظر بگیرد
    با این کار حتی اگه سیستم restart شود نیز
    همه فایلها تاریخشان به عقب بر نمی گردد
    و کار اون کسی که بخواهد این کار را بکند مشکل!
    //×××××××××××××
    چاه مکن بهر کسی اول خودت دوم کسی :cry:
    فکر کنم با این پیشنهادها در آینده فقط کار خودم را سخت تر می کنم :mrgreen:

  15. #15
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    فایلهایی دیگه سیستم یا اینقدر دیر به دیر به روز میشن که تاریخ روز گشته ممکنه روشون باشه یا اینقدر زود به زود که مابین زمانی که کاربر (یا بهتره بگم برنامه هک) تاریخ رو عوض می‌کنه تا وقتی ما اون رو چک می‌کنیم تاریخ دیگه بر اساس تاریخ عوض شده هست.

    درست گفتی. اگر تقویم سیستم واقعا نادرست باشه و کاربر بخواد که اون رو درست کنه٬ برای اینکه برنامه اجرا بشه لازمه که کامپیوتر رو اصلاح کنه. چون این حالت کم پیش میاد و هم اینکه برنامه فقط برای یک مدت کوتاه قراره کار کنه مشکل زیاد بزرگی نیست و شاید از هر 100 نفر یک نفر به این مشکل برخورد کنه. دیگه الانم همه یاد گرفتن که اگر چیزی کار نکرد یک بار کامپیوترشون رو ریست کنند.

  16. #16
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    نقل قول نوشته شده توسط ali11ali112000
    فکر کنم با این پیشنهادها در آینده فقط کار خودم را سخت تر می کنم :mrgreen:
    تازه الان دوزاریم افتاد که چه اشتباه بزرگی کردم. :lol:
    بعد از اینکه کلی کلنجار رفتم تا یک روش مطمئن برای گرفتن تاریخ روز پیدا کنم، اونوقت دو دستی گذاشتمش در اختیار هکرهای گرامی. نوش جان! :lol: :lol:
    خوب با این حساب دیگه این روش به درد هیچ احد الناسی نمی خوره. :D

  17. #17
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    نقل قول نوشته شده توسط ali11ali112000
    :!: ولی خوب راه چاره گریزاز این هم تغییر ساعت سیستم و یک بار restart کردن سیستم است
    به شرطی که کاربرنیازی به تاریخ صحیح روز نداشته باشه. وگرنه هر بار که می‌خواد برنامه رو اجرا کنه باید یک ریستارت هم مقدمه‌اش کنه و کارش که تموم شد تاریخ رو برگردونه سر جای اولش. اگر کسی حاضر پول نده ولی این عذاب رو متحمل بشه برنامه حلالش باشه. :lol:

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

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