PDA

View Full Version : چی جوری میشه یه برنامه که در حاله اجرا هست



american_iran2006
یک شنبه 24 دی 1385, 20:57 عصر
سلام دووستان:::


چی جوری میشه یه برنامه که در حاله اجرا هست ببندیم :::

مثلا با دستوره سیستمیه tasklist می تونیم لیست تمامی برنامه هایی که تو ویندوز هست ببینیم

خوب حالا می خوایم یه برنامه بنویسیم که یه برنامه رو از تو این لیست پیدا کنه بعد ببندتش

ایا دستوره سیستمی ای tasklist داره که این کارو بکنه

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::

sh_roohani
دوشنبه 25 دی 1385, 09:20 صبح
سلام،

من نمی دونم توی ویندوز چیزی معادل grep داریم یا نه، اما می تونید خروجی tasklist رو بفرستید به stdin برنامه خودتون و یا یه فایل متنی و سپس اونو پردازش کنید و pid مورد نظرتونو به دست بیارین و بعدش با taskkill اونو به قتل برسونین.

american_iran2006
دوشنبه 25 دی 1385, 23:08 عصر
ممنون از راهنماییت ::

با دستوره ?/ taskkill به helpesh دست پیدا کردم

دقیقا همونیه که می خوام

ممنون میشم اگه یه مثال برای بستن getadio بزنی

چون وقتی می نویسم :: taskkill /jetadio کار نمی کنه و error میده

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::

greenway
دوشنبه 25 دی 1385, 23:41 عصر
یکی از راههایی که میشه این کار رو انجام داد، با استفاده از این توابع API باشه ... اما به یک چیزی دقت کنید و اون اینکه این توابع از ویندوز توی همه ویندوزها پیاده سازی نشده و اگر اشتباه نکنم ویندوز 2000 به پایین برای کاری که این توابع انجام میدهند از PSPI.DLL استفاده میشه . شرمنده ، وقت کمی دارم ، فقط خواستم یک سرنخی بدم که بدونید از کجا میشه شروع کرد.



#include <tlhelp32.h>
// These APIs must be used dynamically in order to support OSs which have not these as
// Exported functions.
typedef HANDLE (__stdcall WINAPI *dynCreateToolhelp32Snapshot)(DWORD dwFlags,
DWORD th32ProcessID);
typedef BOOL (__stdcall WINAPI *dynProcess32First)(HANDLE hSnapshot,
LPPROCESSENTRY32 lppe);
typedef BOOL (__stdcall WINAPI *dynProcess32Next )(HANDLE hSnapshot,
LPPROCESSENTRY32 lppe);
typedef BOOL (__stdcall WINAPI *dynModule32First )(HANDLE hSnapshot,
LPMODULEENTRY32 lpme );
typedef BOOL (__stdcall WINAPI *dynModule32Next )(HANDLE hSnapshot,
LPMODULEENTRY32 lpme );





myCreateToolhelp32Snapshot = (dynCreateToolhelp32Snapshot)
GetProcAddress(Dll_Handle,"CreateToolhelp32Snapshot");
myProcess32First = (dynProcess32First)
GetProcAddress(Dll_Handle,"Process32First");
myProcess32Next = (dynProcess32Next)
GetProcAddress(Dll_Handle,"Process32Next");
myModule32First = (dynModule32First)
GetProcAddress(Dll_Handle,"Module32First");
myModule32Next = (dynModule32Next)
GetProcAddress(Dll_Handle,"Module32Next");

Sub Zero
دوشنبه 25 دی 1385, 23:48 عصر
چرا از سوییچ im/ استفاده نمیکنی

taskkill /im "نام پروسس"

american_iran2006
سه شنبه 26 دی 1385, 12:57 عصر
سلام دوستان ::

از این که به سوالات من جواب دادین خیلی ممنون

sub zero :: ممنون ::کار کرد .

greenway :: ممنون از جوابتون :: دنبالشم که از روش شما هم این کارو بتونم انجام بدم

:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::