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

نام تاپیک: چگونگی کار با service application در دلفی

  1. #1

    چگونگی کار با service application در دلفی

    دوستان سلام
    می خواستم در مورد چگونگی نوشتن یک سرویس در دلفی و کاربردهای آن مطالبی بنویسم
    اگر علاقه مند هستید بگویید تا ادامه بدهم

  2. #2
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,378
    نیکی و پرسش؟ :)

  3. #3
    خوب ابتدا توضیحی کوتاه در مورد service ها :
    حتما تا کنون در windows xp پیش آمده که کلیدهای cntrl+Alt+Delete را فشار دهید.
    با این کار صفحه Windows task manager باز میشود و یکی از tab های آن Processes
    می باشد.در این tab تعدادی برنامه با پسوند EXE که در حال حاضر در حال اجرا بر روی کامپیوتر شما هستند همراه با درصدی از cpu و memory که توسط هر کدام از آنها مورد استفاده قرار می گیرد نشان داده شده اند.
    اگر با دقت بیشتری به این لیست نگاه کنید متوجه خواهید شد که تعدادی از برنامه های نصب شده بر روی سیستم شما به همراه سرویسهایی که وظیفه انجام امور اصلی و داخلی windows را بر عهده دارند در این لیست قرار گرفته اند.
    حال به عنوان یک برنامه نویس دلفی آیا ما میتوانیم یک Service برای برنامه خود ایجاد کنیم و مزیت و کاربردهای برنامه نویسی به صورت سرویس چیست؟
    جواب سوال اول مثبت است.به قول برنامه نویسان متعصب دلفی که من هم عضو کوچکی از آنها هستم پادشاه و یگانه سلطان زبانهای برنامه نویسی از اول خلقت کدنویسی همانا دلفی عزیز و اجداد گرامش هستند.
    مثل اینکه از بحث دور شدیم.
    همانطور که گفتم ما می توانیم در دلفی service مورد نظر خود را ایجاد کنیم.
    کافی است در File/New گزینه Service Application را انتخاب کرده و آنگاه منتظر شاهکار دلفی بمانیم.لازم به ذکر است که من این موضوع را در دلفی هفت توضیح می دهم.
    وقتی یک Service در ویندوز نصب می شود در پشت پرده و بدون اینکه نیازی به متوجه بودن کابر باشد اعمال مورد نظر برنامه نویس انجام می شود.در حقیقت یک Service را می توان به منزله یک ربات دانست که امور محوله را به نحو احسن در سیستم انجام میدهد.
    برای روشن شدن موضوع یک مثال میزنم : یکی از سرویسهایی که می توان مثال زد سیستم هشدار در ساعت معین است.اگر این برنامه به صورت یک سرویس نوشته شود و در مجموعه سرویسهای ویندوز نصب شود هر بار پس از روشن شدن سیستم به صورت اتوماتیک بارگزاری شده و منتظر روی دادن تاریخ و ساعت معین میشود.در صورت رسیدن به آن زمان پیام یا آلارمی که قبلا تعریف شده است را اجرا میکند.
    یکی از بهترین مزیت های برنامه نویسی به صورت سرویس این است که اگر یک سرویس بر روی سیستمی در حال اجرا باشد حتا اگر آن سیستم در حالت Log off هم قرار داشته باشد سرویس مورد نظر وظیفه خود را به خوبی انجام میدهد.مثلا در مثال قبلی فرض کنید موقع هشدار وقتی باشد که کامپیوتر Log off است.
    در این صورت باز هم سرویس آلارم مورد نظر را پخش خواهد کرد.
    مثل اینکه زیادی صحبت کردم. انشاء الله در مورد چگونگی نوشتن سرویس در دلفی و همچنین مزیتهای دیگر این نوع برنامه نویسی باز هم مینویسم البته به شرطی که نظر بدهید و اگر جایی اشتباهی دارم به من تذکر دهید.منتظر نظرات شما هستم.

  4. #4
    با تشکر از دوستانی که باعث تشویق من در ادامه این موضوع شدند بحث را ادامه می دهم :
    امروز در مورد ساختن یک پروژه آزمایشی صحبت میکنم. پس بدون مقدمه اضافی کار را شروع می کنیم.
    دلفی عزیز را باز کنید و از تب File/New گزینه Service Application را انتخاب فرمایید.
    با این کار پروژه جدیدی باز می شود که شامل یک module به نام Service1 می باشد که کامپوننتهای مورد نیاز خود را می توانید روی آن قرار دهید.
    شما در پروژه خود یک شی از نوع Tservice1 دارید که قسمت اصلی کار ما می باشد.
    در object inspector خاصیت displayname سرویس خود را به Mytstsrv تغییر دهید.این نامی است که سرویس با آن نمایش داده می شود و در ادامه متوجه نقش آن خواهید شد.
    حال اول ببینیم دوست داریم این سرویس چه عملی برای ما انجام دهد.بیایید یک کار ساده از سرویس خود بخواهیم.به این صورت که هر 10 ثانیه یک مرتبه پیامی نمایش داده شود.
    پس برای این منظور از تب system یک timer به پروژه خود اضافه کنید و خاصیت Interval آنرا روی 10000 تنظیم کنید.
    در ادامه در on timer مربوط به شی timer کد زیر را وارد کنید:
    Showmessage(‘My Service is work currently!!’);

    خوب همین!!.
    حال بیایید سرویس خود را اجرا کنیم. برای اینکه سرویسی که نوشته اید بر روی سیستم نصب شود باید آنرا با پارامتر /Install اجرا کنید. پس به قسمت Run/Parameters رفته و در محل Parameters این عنوان را اضافه کنید :/install
    حال اگر برنامه را Run کنید سرویس شما بر روی کامپیوتر نصب می شود.
    برای اینکه سرویس خود را ببینید به Control Panel/Administrative Tools رفته و وارد Services شوید.
    در این پنجره کلیه سرویسهایی که روی کامپیوتر شما Install شده اند نشان داده می شود.
    حال به دنبال سرویس خود با نام Mytstserv بگردید.
    پس از یافتن آنرا انتخاب کنید و در سمت چپ گزینه Start را انتخاب کنید.با این کار Service شما اجرا
    می شود و شروع به اجرای فرامین شما می کند.
    لازم است این را هم اضافه کنم که شما در خود پروژه هم می توانید با دستوری پس از Install شدن سرویس آنرا اجرا کنید که در فرصت مناسب به آن اشاره خواهم کرد.
    خوب پس از طی مراحل فوق سرویس آماده خدمت گزاری به شماست.از این پس هر بار پس ازروشن شدن کامپیوتر به صورت خودکار سرویس شما Start شده و ماموریت خود را در پشت پرده انجام می دهد.
    یک نکته دیگر باقی مانده و آن هم طریقه UnInstall کردن سرویسمان است.
    برای این کار ابتدا به Services بروید و پس از انتخاب سرویس خود از سمت چپ گزینه Stop را انتخاب کنید.حال سرویس خود را اینبار با پارامتر /UnInstall اجرا کنید. پیامی مبنی بر اینکه سرویس از سیستم حذف شد دریافت خواهید کرد.
    البته هنوز موارد ناگفته زیادی باقی مانده که اگر عمری باقی بود به مرور بیان میکنم.
    خوب فکر کنم حسابی کیف کردید.من که وقتی اولین سرویس خود را نوشتم خیلی ذوق زده شدم.امیدوارم شما حتما حتما سراغ دلفی رفته و سرویس نویسی را امتحان کنید و نتایجی که بدست می آورید را در اینجا برای بقیه بازگو کنید.من منتظرم.
    حال کمی قوه تخیل خود را پرواز بدهید و ببینید با یک سرویس چه کارهایی می توان انجام داد:
    یکی را من می گویم. شما می توانید یک روباط هوشمند طراحی کنید.آنرا در کامپیوتر خود قرار دهید و سپس از طریق اینترنت به کامپیوترتان وصل شده و از راه دور سیستم خود را کاملا هدایت کنید.
    البته این کار مستلزم دانستن روش کار با کامپوننتهای دیگر دلفی هم هست که اگر من اینجا ماندگار بودم و دوستان علاقه داشتند در مورد آنها هم صحبت خواهم کرد.
    شما هم ایده های خود را در مورد وظایفی که یک سرویس می تواند انجام دهد بیان کنید تا بهترین آنها را انتخاب کرده و به کمک هم آنرا پیاده سازی کنیم.
    پس عجله کنید و دوگوله خودتونو به کار بندازید.:mrgreen:
    فعلا Bye .

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران-سیرجان
    پست
    273
    دوست عزیز سلام
    با تشکر از مطلب جالبتان.
    متاسفانه تمام کارهاپی را که نوشته بودید انجام دادم . بعد از Start کردن سرویس در Services هیچ اتفاقی نیافتاد. یعنی پس از 10 ثانیه پیغامی ظاهر نشد. مشکل از کجا می‌تواند باشد؟
    :flower:

  6. #6
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    منم همین مشکل را دارم ( بعد از Start کردن هیچ سرویسی اجرا نشد ) :(

  7. #7
    با عرض پوزش از همگی دوستان. من مهمترین نکته در نوشتن سرویس را فراموش کردم بگویم.لطفا ابتدا به services درcontrol panel رفته و سرویس خود را بیابید و آنرا stop کنید.
    سپس دلفی را اجرا نموده و برنامه ای که نوشته اید را باز کنید و آنرا با /uninstall اجرا کنید.
    حال در on execute مربوط به service (یکی از event های سرویس است) کد زیر را وارد کنید :
      while not Terminated do
    ServiceThread.ProcessRequests(True);// wait for termination

    در ادامه برنامه را به روشی که قبلا شرح داده ام اجرا کنید. حتما موفق می شوید.
    لطفا نتیجه را حتما حتما بگویید.
    الان متاسفانه فرصت توضیح ندارم اگر خواستید بگویید تا کد بالا را توضیح دهم.
    منتظر نظرات شما هستم.
    خداحافظ

  8. #8
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران-سیرجان
    پست
    273
    سلام
    باز هم مشکل من حل نشد
    اگه ممکنه توضیح بیشتری بدهید
    متشکرم

  9. #9
    سلام
    لطفا در OnStartمربوط به Serviceخود یک showmessageقرار دهید.باید بعد از نصب سرویستان و پس از هر بار بالا آمدن ویندوز آن پیام نشان داده شود .
    اگر پیام درست نشان داده شد مشخص می شود که شما سرویس را درست نوشته و نصب کرده اید.
    در غیر اینصورت یکبار دیگر کد سرویس خود را بررسی کنید.

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    کد قبلی را امتحان کردم، اما باز هم فایده ای نداشت. :(

  11. #11
    کدام کد را امتحان کردید؟
    آیا سرویس شما در لیست سرویسها قرار می گیرد؟

  12. #12
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    تمام مراحلی را که گفتید پیاده سازی شد . پس از اجرای برنامه پیغام نمایش داده می شود اما این سرویس به لیست سرویس های ویندوز اضافه نشده و پس از نمایش پیغام برنامه بسته می شود .

  13. #13
    اگر پیامی که در onstartسرویس خود قرار داده اید را بعد از هر بار راه اندازی مجدد ویندوز مشاهده می کنید نشان می دهد که سرویس شما نصب است.
    برای آگاه شدن از این موضوع شما دو کار می توانید انجام دهید.
    یکی اینکه سرویس خود را بار دیگر با install/اجرا کنید در این صورت باید پیغام خطایی مبنی بر اینکه این سرویس در حال حاضر بر روی سیستم شما نصب است را دریافت کنید .
    راه دوم این است که به control panel/administrative tools/servicesبروید و در لیست سرویسهای موجود دنبال نام سرویس خود که در قسمت display nameوارد کرده بودید بگردید اگر آنرا پیدا کردید مشخص می شود که سرویس شما نصب شده است.
    در ضمن بار اولی که سرویس خود را با install/جرا می کنید باید پیام زیر را دریافت کنید که نشانگر آن است که سرویس شما با موفقیت نصب شده است :
    service installed successfuly
    شما آیا پیام بالا را دریافت کرده اید؟
    Bye. :wink:

  14. #14
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    خیر. همچین پیامی دریافت نمی کنم.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    بالاخره مشخص شد که اشکال در نوشتن عبارت Install بود . شما گفته بود عبارت /Install اجرا کنیم. در صورتیکه نحوه نوشتن به این صورت است install/ . در هر صورت این سرویس اجرا شد و در لیست سرویسهای ویندوز نیز قرار دارد . در ابتدای اجرای آن هم پیغامی مبنی بر با موفقیت بودن کار نمایش داده می شود.

    حال زمانی که ویندوز مجددا اجرا می شود این سرویس در لیست سرویس ها قرار دارد و در حالت Start نیز می باشد اما مشکل این است که رویداد مورد نظر را انجام نمی دهد. یعنی در مثالی که شما زدید Showmessege با بازه زمانی هر 10 ثانبه یکبار اجرا نمی شود . این در حالیست که اگر برنامه را دوباره اجرا کنیم (منظورم سرویس نیست ) آن پیغام برای 2 بار اجرا شده ( دو بار پیغام نمایش داده می شود ) و دیگر اجرا نمی شود .

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52
    چگونه می توان در این سرویس یک یا چند برنامه را اجرا کرد ؟ یعنی مثلا یک یا چند برنامه exe در زمانها مختلف ؟ :flower:

  17. #17
    با دستور winexecمی توانید فایلهای exeرا اجرا کنید ولی منظورتان از زمانهای مختلف را نمی فهمم.
    bye

  18. #18
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    52
    مثلا در ساعت 14 برنامه شماره 1 شروع و 30 دقیقه بعد پایان یابد یا هر یک دقیقه یکبار اجرا شود.

  19. #19
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450
    سلام.
    این بحث کم کم داره خطرناک میشه . مواظب باشید به سمت مصارف illegal منحرف نشه .
    در هر صورت از مقاله مفیدتون متشکرم.

  20. #20
    همونطوری که گفتم شما با دستور winexecمیتونید این کارو انجام بدین
    دقیقا چه کاری میخواهید انجام بدین؟

  21. #21
    کاربر دائمی آواتار MiRHaDi
    تاریخ عضویت
    تیر 1383
    محل زندگی
    تهران - سوهانک
    پست
    982
    سلام
    منم میکنم نمیشه !
    توی لیست میاد
    Start میشه ( اگه توی onstart هیچی نباشه ) اگه باشه میگه نمیتونم
    کاری نمیکنه !
    دوباره که اجرا میکنم 2 3 تا میسیج خودم میاد
    بعد هم هیچی
    بای

  22. #22
    کاربر دائمی آواتار shayan_delphi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    274
    سلام
    اگر تا مرحله مربوط به تاپیک7# را انجام بدید و مقدار پارامتر را Install/ و خاصیت Interactive=True (در Object inspector) تنظیم کنید مشکل حل می شود.

  23. #23
    کاربر دائمی آواتار MiRHaDi
    تاریخ عضویت
    تیر 1383
    محل زندگی
    تهران - سوهانک
    پست
    982
    سلام
    بقیه این مقاله چی شد ؟
    بای

  24. #24
    کاربر دائمی
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    ایران
    پست
    136
    میشه لطف کنید این مقاله رو ادامه بدید.واقعا جالب بود.
    متشکرم.

  25. #25
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران-سیرجان
    پست
    273
    سلام
    من مطالب این تاپیک رو جمع آوری کردم و اینجوری تونستم یه ServiceApplication یسازم که هر 10 ثانیه یه پیغام رو نشون بدهد:

    برای نوشتن یک Service Application که بتواند هر 10 ثانیه یک پیغام نشان دهد:
    ابتدا از منوی file گزینه New را انتخاب کرده و سپس روی گزینه Other کلیک کنید بعد در پنجره باز شده از سربرگ New گزینه ServiceApplication را انتخاب کنید. با انجام این کار یک کلاس با نام TService1 ایجاد می شود که می توانید با قرار دادن هر شیء مورد دلخواه بر روی فرم آن برنامه خود را بنویسید. برای برنامه ما از سربرگ System یک Timer بر روی سرویس گذاشته و خاصیت Interval آن را 10000 بگذارید. حال در رویداد OnTimer کد زیر را بنویسید:
    Showmessage('My Service is worked currently');
    خاصیت DisplayName مربوط به Service1 را به MyTstSrv تغییر دهید. این نام بعد از اجرای سرویس در لیست سرویسها ظاهر می شود.
    خاصیت Interactive مربوط به Service1 را به True تغییر دهید.
    در رویداد OnExecute مربوط به Service1 کد زیر را بنویسید:
    while not Terminated do
    ServiceThread.ProcessRequests(True);// wait for termination

    حال موقع نصب سرویس بر روی ویندوز رسیده است. برای اینکار باید برنامه را با پارامتر /install اجرا کنید. پس در دلفی به منوی Run رفته و روی گزینه Parameters کلیک کنید. در این پنجره در کادر مربوط به Parameters عبارت /install را تایپ کنید و روی Ok کلیک کنید. حال برنامه را اجرا کنید. اگر همه مراحل را بدرستی انجام داده باشید پیغام Service installed successfully ظاهر می شود.
    حال باید به لیست سرویسهای ویندوز بروید و سرویس خود را Start کنید. (این سرویس می تواند با restart شدن ویندوز نیز Start شود) برای این کار به Control Panel رفته و پنجره Administrative Tools را باز کنید. در این پنجره روی گزینه Services دابل کلیک کنید. با انجام این کار یک پنجره باز می شود که نام تمامی سریسهای نصب شده برروی ویندوز وجود دارند. نام MyTstSrv را پیدا کرده و روی آن کلیک راست کنید و سپس گزینه Start را انتخاب کنید. با انجام این کار سرویس شما Start شده و باید هر 10 ثانیه یکبار پیام شمار را نمایش دهد.
    برای حذف کردن سرویس از روی ویندوز باید برنامه را با پارامتر /Uninstall اجرا کنید. با انجام این کار پیام Service Uninstalled Successfully ظاهر می شود.

  26. #26
    کاربر دائمی
    تاریخ عضویت
    تیر 1382
    محل زندگی
    ایران-سیرجان
    پست
    273
    با عرض معذرت در نوشته های بالا علامت / را قبل از install و uninstall بنویسید

  27. #27
    کاربر دائمی آواتار hojjatcroos
    تاریخ عضویت
    آبان 1387
    محل زندگی
    ایران
    پست
    286

    نقل قول: چگونگی کار با service application در دلفی

    چند تا سوال داشتم فرق Service و Service Appilications چیه و پارامترهای Service Type و Start Type چه کاربردی دارند.

  28. #28

    Smile نقل قول: چگونگی کار با service application در دلفی

    در لسيت proccess هاي ويندوز به اسم ديگري نشان داده ميشه و اينكه با end كردن آن سرويس مورد نظر Stop مي شود چطور مي توان با همان اسم در TaskManager نمايشش داد و اينكه با End كردن از كار نيفته و دوباره اجرا شود مثل بعضي Service هاي خود ويندوز كه بسته مي شوند و براي لحظه اي از ليست Proccess ها حذف مي شوند اما دوباره اجرا مي شوند

    با تشكر

  29. #29
    کاربر دائمی آواتار 1485159
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    NULL
    سن
    30
    پست
    886

    نقل قول: چگونگی کار با service application در دلفی

    من توی نصب کردن سرویس مشکل دارم، وقتی مینویسم:
    install

    هیچ اتفاقی نمیافته ولی وقتی مینویسم:
    /install

    با خطای زیر مواجه میشم:
    عکس های ضمیمه عکس های ضمیمه

  30. #30
    کاربر جدید
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    اربیل عراق
    پست
    27

    نقل قول: چگونگی کار با service application در دلفی

    سلام به همه
    کسی رو windows 7 سرویس نصب کرده .
    نصب نمیشه باید چکار کرد

  31. #31

    نقل قول: چگونگی کار با service application در دلفی

    سلام

    کسی رو windows 7 سرویس نصب کرده .
    نصب نمیشه باید چکار کرد
    حتما باید با administrator وارد شده باشی

    اگر باز هم نشد ، توی منوی start ، accessories،روی command prompt رایت کلیک کنید و گزینه run as administrator رو انتخاب کن بعد توی محیطی که باز میشه سعی کن که سرویس رو نصب کنی

    موفق باشی

  32. #32
    کاربر جدید
    تاریخ عضویت
    دی 1389
    محل زندگی
    IRAN
    پست
    29

    نقل قول: چگونگی کار با service application در دلفی

    سرویس با موفقیت نصب میشه ولی هیچ عکس العملی نشون نمیده! نه در xp و نه در 7!!!
    مشکل کجاست!؟
    همه موارد در پستهای قبلی رعایت شده! ولی همچنان بی نتیجه...
    لطفا دوستان این تاپیک را پیگیری بفرمایید.
    باتشکر خاص از آقای کشاورز

  33. #33

    نقل قول: چگونگی کار با service application در دلفی

    من كه دقيق موارد را انجام دادم اما نه پيغام sucses برام آمد و نه سرويس نصب شد ويندوز هم xp سرويس پك 3
    است

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

  1. یک مثال برای برنامه Service Application
    نوشته شده توسط RK977877 در بخش توسعه نرم افزارهای تحت شبکه
    پاسخ: 0
    آخرین پست: یک شنبه 28 مرداد 1386, 12:01 عصر
  2. دسترسی به مسیرهای شبکه در service application
    نوشته شده توسط DataMaster در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: سه شنبه 05 اردیبهشت 1385, 15:53 عصر
  3. سوال در مورد ساخت Service Application
    نوشته شده توسط meysam558 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: چهارشنبه 02 دی 1383, 02:51 صبح
  4. run application in service segment
    نوشته شده توسط alimrb در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: سه شنبه 09 دی 1382, 12:08 عصر

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

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