PDA

View Full Version : اتچ کردن یک پروسه در پروسه دیگر



pm_hamze
یک شنبه 02 تیر 1387, 00:58 صبح
با سلام خدمت دوستان
من سورس کدی دارم به زبان #C که می تونه یک پروسه رو در پروسه ای دیگه اتچ کنه و تا زمانی که این پروسه بازه برنامه شما بسته نمی شه می خواستم ببینم دوستان در مورد این سورس به زبان دلفی اطلاعاتی دارند یا میشه این کد رو به دلفی تبدیل کرد و از آن استفاده کرد.:متفکر:

MohsenTi
یک شنبه 02 تیر 1387, 13:46 عصر
بله این کد قابل باز گردانی به دلفی است چون احتمالا از امکانات دیباگ ویندوز استفاده می کنه اگر کد را بزاری کمک می کنم.

pm_hamze
دوشنبه 03 تیر 1387, 16:34 عصر
با سلام
یکی از شی های خود C# هستش به نام Proccess است و فقط من نام پروسه رو به اون می دم

pm_hamze
سه شنبه 04 تیر 1387, 01:18 صبح
با سلام به دوستان
احتمالا نشه این کد که مربوط به خود برنامه قدرتمند c# هستش رو تبدیل به دلفی بکنیم اما می خاستم ببینم آیا اصلا چنین کاری با دلفی شدنی هست یا نه...

vcldeveloper
سه شنبه 04 تیر 1387, 02:44 صبح
احتمالا نشه این کد که مربوط به خود برنامه قدرتمند c# هستش رو تبدیل به دلفی بکنیم اما می خاستم ببینم آیا اصلا چنین کاری با دلفی شدنی هست یا نه...
فعلا که توضیح خاصی درباره اش ندادید. سورس نمونه هم ارائه نکردید. باید حداقلش بگید که این کلاس (نه شی) Process در #C در کدوم اسمبلی تعریف شده. بطور کلی، اگر فقط می خواید بدونید که آیا در دلفی این کار امکان پذیر هست یا نه؛ برنامه های #C از Net Framework. استفاده می کنند که نوعی Wrapper شی گرا برای API های User Modeویندوز هست. شما می تونید در دلفی که از Win32 استفاده میکنه، به همون API ها دسترسی داشته باشید. البته ممکن هست انجام یک کار در دلفی با استفاده از APIهای ویندوز، به سادگی انجام اون کار در دات نت نباشه. یکی از اهداف دات نت پنهان کردن بسیاری از جزئیات فنی کار از دید برنامه نویس دات نتی و درگیر نکردن وی در همچین جزئیاتی هست. این ویژگی مثل یک تیغ دو لبه عمل میکنه؛ برای برنامه نویس های ماهر، این یک حسن محسوب میشه و موجب میشه که آنها کمتر به جزئیات فنی بپردازند و بیشتر روی منطق برنامه متمرکز بشند، از طرفی سرعت توسعه نرم افزار و احتمال اشتباه انسانی را هم کاهش می دهد. اما همین ویژگی برای برنامه نویس های تازه کار و ناوارد می تواند خطرناک باشد، چون این برنامه نویسان از خیلی از امکانات فنی و پیچیده ویندوز استفاده می کنند، بدون آنکه به چگونگی عملکرد آنها و شرایطی که باید در استفاده از آنها رعایت شوند، توجه کنند. نتیجه آن می شود که نرم افزاری با کیفیت پایین و باگ های عجیب و غریب تولید می شود. مثلا همین الان می تونید به بخش های مرتبط با دات نت برید و ببینید چندتا تاپیک درباره Multi-threading در اون بخش ها مطرح شده، و در چندتا از این تاپیک ها واقعا توضیحات فنی داده شده به نوعی که آدم احساس کنه فرد توضیح دهنده اطلاعی از Multi-threading و ویژگی های آن داره. اکثرا تعدادی کلاس و متد حفظ کردند و از چگونگی عملکرد آنها و ویژگی های آنها بی خبرند!

pm_hamze
پنج شنبه 20 تیر 1387, 15:53 عصر
با تشکر از جناب آقای کشاورز اما با تحقیقاتی که من کردم اصلا این کار رو با دلفی نمی شه انجام داد میشه گفت این سوال از سوالات خاص هست که دلفی نمی تونه انجام بده....

vcldeveloper
جمعه 21 تیر 1387, 00:15 صبح
با تحقیقاتی که من کردم اصلا این کار رو با دلفی نمی شه انجام داد میشه گفت این سوال از سوالات خاص هست که دلفی نمی تونه انجام بده.
ما که نه سورسی دیدیم، نه توضیح درست و حسابی. خودتون گفتید که یک برنامه #C دیدید، الانم خودتون تحقیق کردید که کار مورد نظر شما در دلفی امکان پذیر نیست.

می خاستم ببینم آیا اصلا چنین کاری با دلفی شدنی هست یا نه...
وقتی توضیحات تا این حد ناقص هستند، انتظار دارید چه جوابی دریافت کنید؟! در واقع شما از خودتون پرسیدید، خودتون هم به خودتون جواب دادید!

lord_viper
جمعه 21 تیر 1387, 14:54 عصر
فکر کنم منضور ایشون process injection باشه
تو سایت چند تا سورس هست برای این منظور تو قسمت امنیت نرم افزار

pm_hamze
یک شنبه 23 تیر 1387, 00:51 صبح
اين هم كدش و نگفتم ديدم انجام دادم

process1.process(smss.exe)

pm_hamze
یک شنبه 23 تیر 1387, 00:57 صبح
اين خط دستور اومد با تعريف كلاس process برنامه رو در درون سرويس smss.exe ريخت. و حالا اگه در تسك منيجر بخاهي بر نامه رو ببندي بايد پروسه smss.exe بسته بشه تا برنامه شما هم بسته بشه..
و شرمنده فكر كردم دوستاني كه جواب اين سوال رو مي دند با c# آشنا هستند و اين هم كدش..

در واقع شما از خودتون پرسیدید، خودتون هم به خودتون جواب دادید!
و اينكه من نپرسيدن و خودم جواب بدم چون كسي جواب نداد گفتم حتما نميشه.

vcldeveloper
یک شنبه 23 تیر 1387, 02:07 صبح
اين خط دستور اومد با تعريف كلاس process برنامه رو در درون سرويس smss.exe ريخت. و حالا اگه در تسك منيجر بخاهي بر نامه رو ببندي بايد پروسه smss.exe بسته بشه تا برنامه شما هم بسته بشه..
و شرمنده فكر كردم دوستاني كه جواب اين سوال رو مي دند با c# آشنا هستند و اين هم كدش..اونی که شما نوشتید، کاری که توضیح دادید را انجام نمیده، شاید خودتون نمی دانید از چی استفاده می کنید.
در یک خط کدی که نوشتید، اولا مشخص نیست منظور از process1 چی هست، ثانیا، مشخص نیست process چی هست؟ یک نمونه از کلاس Process هست؟ اگر هست، عبارت داخل پرانتز چی هست؟ چرا عبارت داخل پرانتز داخل علامت نقل قول نیست؟ کلاس Process سازنده ایی که پارامتر دریافت کنه نداره. پس اگر کدی که نوشتید، واقعا کاری هم انجام میده، این یک خط کد نیست، بلکه این یک خط کد صرفا عضو process از کلاس یا شی process1 را فراخوانی کرده.

pm_hamze
سه شنبه 25 تیر 1387, 22:57 عصر
با سلام و خسته نباشيد خدمت مدير عزيز جناب آقاي كشاورز
جناب كشاورز دروغ كه ندارم همين كد رو در c# مي نويسم

vcldeveloper
چهارشنبه 26 تیر 1387, 03:30 صبح
جناب كشاورز دروغ كه ندارم همين كد رو در c# مي نويسم
نگفتم دروغ میگید، گفتم کدی که نوشتید با توضیحاتی که دادید همخوانی نداره، یعنی پیاده سازی اصلی در جای دیگه ایی از کد آمده، اونی که شما نوشتید، فقط یک فراخوانی یک متد از کلاسی بود که خودتان ساخته بودید (Process1)، چون در Net Framework. کلاسی به نام Process1 وجود ندارد. کلاسی هم با نام process (با حروف کوچک نداریم). یک کلاس Process در دامنه System.Diagnostics هست که آن هم در متد Constructor خود نام یک پروسه را دریافت نمیکنه. پس میشه یک نتیجه گرفت که شما یک کلاس Process1 ساختید و در آن متدی با نام process تعریف کردید و در پیاده سازی اون متد کار خاصی انجام دادید. اما همانطور که در کد شما هم مشخص هست، چیزی از پیاده سازی اون متد عرضه نشده، فقط نام متد آمده، من چطوری بفهمم که متد و کلاسی که خود شما ساختید و سورسش در اختیار من نیست، چکاری انجام میده؟!

pm_hamze
پنج شنبه 27 تیر 1387, 11:03 صبح
اين شي خود سي شارپ است و درون ان است من خودم تعريف نكردم .
عكس شي رو مي خواهيدبراتون بزارم

vcldeveloper
پنج شنبه 27 تیر 1387, 18:11 عصر
عكس شي رو مي خواهيدبراتون بزارم
یک نمونه سورس کد درست کنید که فقط شامل همین شی مورد نظر شما و فراخوانی آن باشد، بعد سورس را در همین تاپیک پیوست کنید.

موفق باشید