ايران ويج

نسخه‌ی کامل: نحوه اطلاع از اجرای یک برنامه در ویندوز
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام

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

تشکر
سلام.
شما چاره ای نداری. لیست مدام باید ریفرش بشه.
خود تسک منیجر ویندوز هم از همین روش استفاده میکنه که اگه با ای پی آی Killtimer تایمرش رو متوقف کنی دیگه لیستش ریفرش نمیشه.

بعضی ویروس ها از همین روش استفاده میکنن. اول تایمر تسک منیجر رو آف میکنن. بعد هندل لیستش رو میگیرن و پروسه خودشون رو از لیست حذف میکنن و در نتیجه در لیست دیده نمیشن.
از جوابتون ممنون.

اون موقع مثلا همون ویروسه می تونه کاری کنه در انتهای لیست تسک منیجر قرار نگیره؟(یا لیست برنامه خود من)منظور اینست که در حال حاضر برنامه جوری کار می کنه که میاد و اخرین برنامه موجود در لیست رو به عنوان آخرین برنامه اجرا شده معرفی می کنه(در صورتی که لیست sort نشده باشه).حالا یه برنامه ممکنه که بیاد و خودش رو جوری اجرا کنه که در انتهای لیست قرا نگیره؟اون موقع برنامه من مشکل داره ، درسته؟

به عنوان مثال آخرین برنامه اجرا شده فایرفاکس هست.حالا یه برنامه دیگه اجرا میشه که به هر دلیلی در انتهای لیست قرار نمی گیره ، حالا برنامه من میاد و فایرفاکس رو به عنوان برنامه اجرا شده معرفی می کنه در حالی که فایرفاکس از قبل اجرا شده بوده.

امیدوارم تونسته باشم منظورم رو بیان کنم.
(۰۹-آبان-۱۳۹۱, ۱۱:۵۸:۳۷)ترانسپورتر نوشته است: [ -> ]از جوابتون ممنون.

اون موقع مثلا همون ویروسه می تونه کاری کنه در انتهای لیست تسک منیجر قرار نگیره؟(یا لیست برنامه خود من)منظور اینست که در حال حاضر برنامه جوری کار می کنه که میاد و اخرین برنامه موجود در لیست رو به عنوان آخرین برنامه اجرا شده معرفی می کنه(در صورتی که لیست sort نشده باشه).حالا یه برنامه ممکنه که بیاد و خودش رو جوری اجرا کنه که در انتهای لیست قرا نگیره؟اون موقع برنامه من مشکل داره ، درسته؟

به عنوان مثال آخرین برنامه اجرا شده فایرفاکس هست.حالا یه برنامه دیگه اجرا میشه که به هر دلیلی در انتهای لیست قرار نمی گیره ، حالا برنامه من میاد و فایرفاکس رو به عنوان برنامه اجرا شده معرفی می کنه در حالی که فایرفاکس از قبل اجرا شده بوده.

امیدوارم تونسته باشم منظورم رو بیان کنم.
اولا همینجوری هم نیست که هر پروسه جدید در انتهای لیست قرار بگیره
شما باید لیست پروسه ها رو مثلا تو یه ارایه نگهداری کنی و هر سری که لیست جدید رو میگیری با لیست قبلی مقایسه کنی
روش استاندارد برای فهمیدن اینکه یک برنامه میخواهد اجرا بشه هوک کردن تابع CreateProcess-NTcreateProcess و مشتقات اونها هستش
سلام.
مبین جان بهتره هوک رو بی خیال شه. چون هم خیلی درد سر داره و هم آنتی ویروس ویرش میگیره.

چون لیست باید در حد میلی ثانیه یل صدم ثانیه ریفرش بشه شاید گذاشتن لیست تو آرایه و چک کردن این لیست در تایمر کمی کار کرد CPU رو ببره بالا.
نقل قول: شما باید لیست پروسه ها رو مثلا تو یه ارایه نگهداری کنی و هر سری که لیست جدید رو میگیری با لیست قبلی مقایسه کنی

اینم سرعت رو پایین میاره.متاسفانه!

نقل قول: چون لیست باید در حد میلی ثانیه یل صدم ثانیه ریفرش بشه شاید گذاشتن لیست تو آرایه و چک کردن این لیست در تایمر کمی کار کرد CPU رو ببره بالا.

کاملا تایید میشه.

بالاخره چکار کنم.از هوک مثالی دارید؟

خیلی ممنون.
خب این روند رو بزاره تو یه ترد با priority بالا
جز اینها فکر نکنم کار دیگه ای بتونه انجام بده
:d برنامه رو به exception انتی اضافه کنه که انتی به برنامه گیر نده :d
سلام.
آخه مبین یه بار که نمیخواد انجام شه که بذاره تو priority بالا. مدام داره انجام میشه. اتفاقا اگه این کار رو هم بکنه شاید اگه سیستم کمی ضعیف باشه کلا سیستم قفل کنه. چون این برنامه مدام در اولویت قرار میگیره و فرصتی برای پردازش برنامه های دیگه باقی نمیمونه.

آنتی ویروس هم که مشخص نیست چیه. این همه آنتی مدام آپدیت میشن. خودش اندازه 10 تا پروژه کار میبره.
(۱۵-آبان-۱۳۹۱, ۱۵:۰۹:۰۳)Payman62 نوشته است: [ -> ]سلام.
آخه مبین یه بار که نمیخواد انجام شه که بذاره تو priority بالا. مدام داره انجام میشه. اتفاقا اگه این کار رو هم بکنه شاید اگه سیستم کمی ضعیف باشه کلا سیستم قفل کنه. چون این برنامه مدام در اولویت قرار میگیره و فرصتی برای پردازش برنامه های دیگه باقی نمیمونه.
به بابا سیستمهای الانه دیگه حداقل کورتودو با رم 2 گیگ هستن اتفاق خواصی برای برنامه نمی افته
میخواهد یک ارایه رو با لیستی که از یکی از روشهای گرفتن لیست پروسه میگیره مقایسه کنه
نباید اینجور باشه که اول تو یه کنترل گرافیکی نشون بده مثل listbox و بعد شروع به مقایسه کنه چون رفرش شدن یک کنترل خیلی سربار داره اول لیست رو با ارایه مقایسه کنه اگه پروسه جدید بود ته listbox اضافه کنه

نقل قول: آنتی ویروس هم که مشخص نیست چیه. این همه آنتی مدام آپدیت میشن. خودش اندازه 10 تا پروژه کار میبره.
یکی از روشهایی که باعث میشه انتی ها بهش گیر ندن اینه که به لیست برنامه های امنیتی ویندوز تو wmi اضافش کنه مثل انتیها و فایر والها که خودشونو اضافه میکنن خود انتی ها هم از همین طریق میفهمن که مثلا انتی ویروس دیگه ای هم رو سیستم نصبه(البته شاید برای همه انتی ها جواب نده)


البته موضوع انتی ویروسها این روش کاملا اشتباس و باید از هوک استفاده کنه و گرفتن لیست پروسه ها در وحله اول هست که انتی تازه نصب شده و از برنامه های داخل رو شروع میکنه به چک کردن پیدا کردن ویروسها
سلام

خیلی ممنون از توضیحاتتون ، اما این وسط موضوع آنتی ویروس چیه و چه ربطی داره؟

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

http://uplod.ir/z2vef8nxsu2g/process_11478.rar.htm
سلام.
بحث آنتی از این جهت مطرحه که اگه بخوای از روش هوک استفاده کنی آنتی ویروس برنامه رو یه برنامه مخرب تشخیص میده و باید با یه روشی آنتی رو دور بزنی.
صفحه‌ها: 1 2