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

نام تاپیک: استفاده از متغیر مشترک بین دو برنامه مستقل

  1. #1

    استفاده از متغیر مشترک بین دو برنامه مستقل

    با سلام
    فرض کنید دو برنامه در دلفی نوشته اید که می خواهید برخی از متغیرهای یک برنامه بصورت پارامتر در برنامه دیگر بکار رود.این دو برنامه کاملا مستقل از هم بوده و فقط از طریق این متغیرها با هم ارتباط برقرار کند.البته یک راه حل استفاده از فایل مشترک و یا بانک اطلاعاتی مشترک و یا رجیستری است. ولی این راه منطقی و کارایی نیست. می خواهم ارتباط دو برنامه از طریق حافظه اصلی و بدون استفاده از حافظه جانبی مثل هارد باشد.
    با تشکر. :flower:

  2. #2
    مهمان
    این روش یکم من در آوردیه :mrgreen:
    به میسج از نوع user defined تعیریف کن بعد مقادیری رو که میخای به صورت lparam ,wparam با استفاده از هندل پنجره این برنامه ها برای هم دیگه پاس کن یعنی هروقت خاستی به اون برنامه پارامتر بفرستی به اون برنامه یه میسج بفرست!
    این روش به عقل شیطان رجیم هم نمیرسه :twisted:
    راستی.
    میتونی متغیری رو که میخای واسه اون برنامه بفرستی رو میتونی آخر فایل exe همون برنامه بنویسی اون برنامه هم از آخر exe خودش اونو بخونه

  3. #3
    باسلام
    میلاد عزیز با تشکر از راهنمایی شما.
    به میسج از نوع user defined تعیریف کن بعد مقادیری رو که میخای به صورت lparam ,wparam با استفاده از هندل پنجره این برنامه ها برای هم دیگه پاس کن یعنی هروقت خاستی به اون برنامه پارامتر بفرستی به اون برنامه یه میسج بفرست!
    چطوری می تونم یک message از نوع user defined بنویسم.لطفا اگه امکان داره کد کامل ارسال و دریافت متغیر بین دو برنامه رو با همین روش که گفتی برام بنویس تا مطلب برام جا بیفته.
    با بررسی هایی که رو جوابت کردم مثل اینکه این یک راه روتین در API ویندوز هست.

    بازم از جوابت ممنون. :kiss:

  4. #4
    فرض کنید دو برنامه در دلفی نوشته اید که می خواهید برخی از متغیرهای یک برنامه بصورت پارامتر در برنامه دیگر بکار رود.این دو برنامه کاملا مستقل از هم بوده و فقط از طریق این متغیرها با هم ارتباط برقرار کند.البته یک راه حل استفاده از فایل مشترک و یا بانک اطلاعاتی مشترک و یا رجیستری است. ولی این راه منطقی و کارایی نیست. می خواهم ارتباط دو برنامه از طریق حافظه اصلی و بدون استفاده از حافظه جانبی مثل هارد باشد.
    اگر مقدار پارامترها ساده است، در هنگام فراخوانی فایل اجرایی مقدار متغیرها را به عنوان پارامتر به آن داده و در برنامه دوم از طریق ParamStr آنها را بخوانید.

  5. #5
    ضمن عرض ادب فراوان به آقای AmirFعزیز

    در هنگام فراخوانی فایل اجرایی مقدار متغیرها را به عنوان پارامتر به آن داده و در برنامه دوم از طریق ParamStr آنها را بخوانید.
    این در صورتی صادق است که شما برنامه دوم را در برنامه اول صدا بزنید
    اما
    برخی از متغیرهای یک برنامه بصورت پارامتر در برنامه دیگر بکار رود
    فکر می کنم به معنای اجرا شدن حتی همزمان 2 برنامه بصورت منفک است که در برنامه دوم تاثیر گذار می باشد

  6. #6
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    فکر کنم Atom‌ ها را در ویندوز برای همین کار در نظر گرفته اند.

  7. #7
    با سلام خدمت دوستان برنامه نویس
    ببینید مشکل من از اینجا شروع شد که در یک برنامه از یکی از فرمانهای ICMP استفاده کردم زمانیکه سیستم نسبت به ارسال پکیت ICMP اقدام می کند برای یک لحظه هیچ یک از کنترلهای روی فرم به event ها پاسخ نمی دهد بعنوان مثال وقتی رو یک منو کلیک می کنی منو باز نمی شود چون سیستم درگیر فرمان ICMP می باشد.متوجه شدم اگر برنامه اجرایی دو قسمت شود و یک قسمت فرمان ICMP را اجرا کند و برنامه مستقل دیگر منوها و کنترل های دیگر را در بر داشته باشد هر دو بصورت نرمال کار می کنند وتاخیر اجرای فرمان ICMP بر روی کنترلهای برنامه تاثیری ندارد.از آنجاییکه پارامترهای فرمان Icmp باید از برنامه مادر تعیین شود و این ارتباط در پریودهای زمانی به تناوب صورت می گیرد. در جستجوی راهی برای ارتباط این دو قسمت برنامه از طریق حافظه اصلی هستم.
    با تشکر از آقای Delphi Assistant به عرض می رسانم در مطالعه شخصی به مبحث Atom ها رسیدم ولی چیز زیادی از آن نفهمیدم.اگر ممکن است بیشتر راهنمایی کنید.دوستان اگر تجربه عملی در این رابطه دارند خواهش می کنم لطف کنند و قسمتی از کد خود را در اینجا بیاورند تا استفاده کنیم. :flower:

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

    برای حل مشکل همزمانی اجرای زمان ارسال پکت ICMP با روند اصلی برنامه، از روش Multi-Threading استفاده کن. فقط یادت نره که در انتهای هر بار اجرای Thread دستور Application.ProcessMessages رو اضافه کنی که فرمهای برنامه هنگام انجام پردازشهای وقت‌گیر Freeze نشه.

    به این ترتیب لازم نیست برنامه‌ات رو دو قسمت کنی.

    برای مبحث Thread ها راهنمای دلفی رو ببین.

  9. #9
    با سلام
    Delphi assistant عزیز با راهنمایی عالی شما مشکل بطور کامل حل شد.که از این بابت سپاسگزارم.
    با امید سلامتی و بهروزی برای شما و دست اندرکاران این سایت دوست داشتنی :flower:

  10. #10

    Question نقل قول: استفاده از متغیر مشترک بین دو برنامه مستقل

    سلام
    فرض كنيد يك برنامه روي سرور داريم و در كلاينت يك شورتكات از آن ميسازيم و آنرا اجرا ميكنيم، و ميدانيم يك برنامه ديگر روي سرور در حال اجراست،
    سوال: چگونه از برنامه اول كه روي مموري كلاينت اجرا شده . مقدار يك متغير را از برنامه دوم (روي سرور)بخوانيم؟

  11. #11
    کاربر دائمی آواتار Delphi Coder
    تاریخ عضویت
    آذر 1386
    محل زندگی
    c:\windows\system32
    پست
    579

    نقل قول: استفاده از متغیر مشترک بین دو برنامه مستقل

    نقل قول نوشته شده توسط DelphiAssistant مشاهده تاپیک
    خوب اینو از اول بگو.

    برای حل مشکل همزمانی اجرای زمان ارسال پکت ICMP با روند اصلی برنامه، از روش Multi-Threading استفاده کن. فقط یادت نره که در انتهای هر بار اجرای Thread دستور Application.ProcessMessages رو اضافه کنی که فرمهای برنامه هنگام انجام پردازشهای وقت‌گیر Freeze نشه.

    به این ترتیب لازم نیست برنامه‌ات رو دو قسمت کنی.

    برای مبحث Thread ها راهنمای دلفی رو ببین.
    فراخوانی Application.ProcessMessages از داخل Thread کار دزستی نیست مگر اینکه مطمئن بشیم Thread اصلی برنامه رو Lock کردیم تا ProcessMessages نکنه. به عبارتی این روال ThreadSafe نیست.
    تنها کاری که من فکر میکنم لازم هست گذاشتن یه Sleep کوچولو هست برای اینکه CPU Usage برنامه بالا نره.

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

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