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

نام تاپیک: مقدار دهی به متغیرهای تعریف شده در یک برنامه از برنامه ی دیگر

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    قم
    پست
    531

    مقدار دهی به متغیرهای تعریف شده در یک برنامه از برنامه ی دیگر

    سلام. با دستور sendmessage میشه به فرمها و اشیاء برنامه های مختلف پیام فرستاد و کارهای مختلفی انجام داد. می خوام ببینم میشه به متغیرهای تعریف شده در یک برنامه هم دسترسی داشت و اونها رو مقدار دهی کرد؟ مخصوصا اگه یک متغیر در فایل سورس پروژه (فایل dpr) تعریف شده باشه؟

  2. #2
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

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

    سلام
    به نظر من مقدار متغییر رو بفرست به رجیستری و بعد اون رو فرا خوانی کن در برنامه دیگر

  3. #3

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

    نقل قول نوشته شده توسط جواد ملاولی مشاهده تاپیک
    سلام. با دستور sendmessage میشه به فرمها و اشیاء برنامه های مختلف پیام فرستاد و کارهای مختلفی انجام داد. می خوام ببینم میشه به متغیرهای تعریف شده در یک برنامه هم دسترسی داشت و اونها رو مقدار دهی کرد؟ مخصوصا اگه یک متغیر در فایل سورس پروژه (فایل dpr) تعریف شده باشه؟
    اون دسترسی که شما تو فکرشید خیر ، ولی میتونید برای برنامتون یک Message Handler بنویسید و مقدار مورد نظر رو همراه با نام متغییر به برنامه بفرستید ( توسط SendMessage یا PostMessage ) و تو Message Handler ی که نوشتید متغییر مورد نظر رو مقدار بدید .

  4. #4

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

    اگه مکان اون متغغیر رو تو حافظه بدونین میتونین با ReadProcessMemory اونو بخونین و با WriteProcessMemory اونو تغییر بدین
    (دونستن مکان دقیق اون متغییر در حافظه مهمترین چیزه)

  5. #5

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

    (دونستن مکان دقیق اون متغییر در حافظه مهمترین چیزه
    چطوری باید مکانه اونو تو حافظه بدست آورد؟


  6. #6

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

    با استفاده از ollydbg و تریس کردن برنامه

  7. #7

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

    نقل قول نوشته شده توسط Delphi-7 مشاهده تاپیک
    چطوری باید مکانه اونو تو حافظه بدست آورد؟
    البته برای استفاده از WriteProcessMemory و ReadProcessMemory باید دسترسی های لازم رو داشته باشید .

  8. #8

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

    شما نمی تونید در حالت معمول به متغیرهای یک Process دیگه دسترسی داشته باشید ، ولی می تونید بین دو تا برنامه ارتباط بر قرار کنید ، اگر هر دو تا برنامه رو خودتون می سازید ، از همون روشی که جناب تاجیک گفتن استفاده کنید ، به این صورت که از برنامه ی اول یک پیغام خاص رو به برنامه ی دوم می فرستید ، برنامه ی دوم پیغام رو دریافت میکنه و متناسب با پیغام ، متغیر مورد نظر رو مقدار دهی میکنه ، راههای دیگه ای هم هست مثل ایجاد یک DLL واسط که متغیر رو در خودش نگهداری کنه ولی درصد خطا رو بالا می بره ، خطاهایی مثل لود DLL به صورت همزمان توسط دو برنامه و ...
    در مورد Message Handler در سایت جستجو کنید ، بحثهای زیادی انجام شده ...

    موفق باشید ...

  9. #9
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

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

    سلام راستی می تونی از فایل txt ویا ini استفاده کنی و از برنامه اول داده هارو بریزی توش و در برنامه دیگه بخونی اسان تر از این دیگه نمیشه مثل یک پایگاه داده موفق باشی

  10. #10

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

    سلام راستی می تونی از فایل txt ویا ini استفاده کنی و از برنامه اول داده هارو بریزی توش و در برنامه دیگه بخونی اسان تر از این دیگه نمیشه مثل یک پایگاه داده موفق باشی
    این روش در موارد بسیاری جالب نیست. منظورم موقعی است که پای مسائلی از قبیل امنیت و سرعت در میان باشد. در این روشی که گفتید تمام برنامه ها باید دائم فایل را چک کنند تا از تغییرات آن مطلع شوند. البته این مشکل را هم میتوان به شکل دیگری برطرف کرد ولی برای اضافه کردن این قابلیت کوچک، برنامه زیاد پیچیده می شود که اصلاً جالب نیست.

  11. #11
    کاربر دائمی آواتار nsco_nsco
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ایران
    پست
    831

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

    سلام من یک سبک بلد بودم که به شکل زیر هست گفتم شاید به درد بخوره این بهترین مدل در این چند ساله که تا حالا استفاده کردم
    من میام در اول برنامه در رجیستری قسمتی رو تعریف می کنم مثلا با نام علی و بعد یک مقدار الکی می دم به اون زیر شاخه های رجیستری که در برنامه ها کارش دارم مثلا 50 و بعدش میام زمانی که می خوام فراخوانیش می کنم و یک مقداری بهش می دم بعدا سریع اون رو در برنامه بعدی یا جایی می خوام می خونمش و سریع دوباره عدد 50 رو پس از استفاده میریزم توش تا کسی نفهمه که کد چی بوده شاید بدردتون بخوره

  12. #12

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

    نقل قول نوشته شده توسط nsco_nsco مشاهده تاپیک
    سلام من یک سبک بلد بودم که به شکل زیر هست گفتم شاید به درد بخوره این بهترین مدل در این چند ساله که تا حالا استفاده کردم
    من میام در اول برنامه در رجیستری قسمتی رو تعریف می کنم مثلا با نام علی و بعد یک مقدار الکی می دم به اون زیر شاخه های رجیستری که در برنامه ها کارش دارم مثلا 50 و بعدش میام زمانی که می خوام فراخوانیش می کنم و یک مقداری بهش می دم بعدا سریع اون رو در برنامه بعدی یا جایی می خوام می خونمش و سریع دوباره عدد 50 رو پس از استفاده میریزم توش تا کسی نفهمه که کد چی بوده شاید بدردتون بخوره
    کارتون اشتباه بوده ، رجیستری برای ویندوز حکم یک پایگاه داده رو داره که اطلاعات پیکربندی ویندوز و برنامه ها درش ذخیره شدن ، رجیستری به عنوان یک فایل پاگاه داده بر روی دیسک سخت قرار داره ، پس سرعتش به مراتب پائین تر از حافظه اصلی هست ، شما وقتی مقدار یک متغییر رو درش ذخیره میکنید و توسط ک برنامه دیگه میخونید در همون نگاه اول میشه گفت اگر تعداد این نوشتن و خواندن های در واحد زمان زیاد بشه سرعت عملیات پائین میاد و در ضمن رجیستری درگیر برنامه شما میشه و سرعت سرویس دهی رجیستری به دیگر برنامه ها و ویندوز کمتر میشه .

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

    راه فنی و معقول همون هست که تو پست قبلیم ذکر کردم .

  13. #13
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    قم
    پست
    531

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

    نقل قول نوشته شده توسط مجتبی تاجیک مشاهده تاپیک
    اون دسترسی که شما تو فکرشید خیر ، ولی میتونید برای برنامتون یک Message Handler بنویسید و مقدار مورد نظر رو همراه با نام متغییر به برنامه بفرستید ( توسط SendMessage یا PostMessage ) و تو Message Handler ی که نوشتید متغییر مورد نظر رو مقدار بدید .
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    شما نمی تونید در حالت معمول به متغیرهای یک Process دیگه دسترسی داشته باشید ، ولی می تونید بین دو تا برنامه ارتباط بر قرار کنید ، اگر هر دو تا برنامه رو خودتون می سازید ، از همون روشی که جناب تاجیک گفتن استفاده کنید ، به این صورت که از برنامه ی اول یک پیغام خاص رو به برنامه ی دوم می فرستید ، برنامه ی دوم پیغام رو دریافت میکنه و متناسب با پیغام ، متغیر مورد نظر رو مقدار دهی میکنه
    نقل قول نوشته شده توسط مجتبی تاجیک مشاهده تاپیک
    راه فنی و معقول همون هست که تو پست قبلیم ذکر کردم .
    خیلی ممنون از لطف دوستان؛
    همونطور که در پست اول گفتم، من اون متغیر رو در فایل سورس پروژه (فایل dpr) تعریف کردم و برنامه به محض اجرا و قبل از اینکه هیچ کدوم از فرمها رو بسازه، باید طبق اون متغیر یه تصمیمی بگیره؛ بنابراین هنوز فرمی وجود نداره که من بتونم هندلش رو بدست بیارم و بعد بهش پیام بدم. چکار باید بکنم؟

  14. #14

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

    نقل قول نوشته شده توسط جواد ملاولی مشاهده تاپیک
    خیلی ممنون از لطف دوستان؛
    همونطور که در پست اول گفتم، من اون متغیر رو در فایل سورس پروژه (فایل dpr) تعریف کردم و برنامه به محض اجرا و قبل از اینکه هیچ کدوم از فرمها رو بسازه، باید طبق اون متغیر یه تصمیمی بگیره؛ بنابراین هنوز فرمی وجود نداره که من بتونم هندلش رو بدست بیارم و بعد بهش پیام بدم. چکار باید بکنم؟
    میتونین ازپارامتر استفاده کنین و از POaramstr و ParaCount استفاده کنین
    یا share Memory استفاده کنین و یک بخش از حافظه رو به اشتراک بزارین
    نیازی به فورم هم ندارین

  15. #15
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    قم
    پست
    531

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

    نقل قول نوشته شده توسط cayberfox مشاهده تاپیک
    میتونین ازپارامتر استفاده کنین و از POaramstr و ParaCount استفاده کنین
    یا share Memory استفاده کنین و یک بخش از حافظه رو به اشتراک بزارین
    نیازی به فورم هم ندارین
    من تا حالا از اینها استفاده نکردم، اگه ممکنه بیشتر توضیح بدید؛ یا کد نمونه ای...

  16. #16

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

    نقل قول نوشته شده توسط جواد ملاولی مشاهده تاپیک
    خیلی ممنون از لطف دوستان؛
    همونطور که در پست اول گفتم، من اون متغیر رو در فایل سورس پروژه (فایل dpr) تعریف کردم و برنامه به محض اجرا و قبل از اینکه هیچ کدوم از فرمها رو بسازه، باید طبق اون متغیر یه تصمیمی بگیره؛ بنابراین هنوز فرمی وجود نداره که من بتونم هندلش رو بدست بیارم و بعد بهش پیام بدم. چکار باید بکنم؟
    دلفی برای این قبیل کارها 2 تا تابع در اختیارتون میزاره یکی AllocateWindow که یک پنجره نامرعی میسازه و هندلش رو بهتون میده و میتونید بهش پیغام ارسال کنید و ... ؛ خود شئ تایمر در دلفی هم همین کار رو میکنه ، یک پنجره مخفی میسازه و پیغام WM_Timer رو باهاش بررسی میکنه ، یک تابع دیگه هم با نام DeallocateWindow که حافظه گرفته شده توسط شئ پنجره ساخته شده رو آزاد میکنه .

    در مورد ParamCount و ParamStr هم برنامتون به وسیله پارامترها اجرا میشه و موقعی کاربرد داره که برنامتون هنوز اجرا نشده و شما پارامتر n رو بهش پاس میدید و با توجه به پارامتر اجراش میکنید ، موقعی که برنامه در حال اجر باشه کاربردی نداره .

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

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