PDA

View Full Version : گرفتن Commandline هر پروسه



FiACKER
شنبه 22 فروردین 1388, 11:59 صبح
سلام

لازمه که Commandline هر پروسه رو بتونم بدست بیارم ! این کارو تویه وی بی با WMI انجام دادم ! که سرعته پایینی داشت و علاوه بر اون یه برنامه به نام wmiprvse اجرا می کرد!

حالا من می خوام با دلفی Commandline رو بگیرم ، ایا باید از همون wmi استفاده کنم ؟

FiACKER
شنبه 22 فروردین 1388, 12:01 عصر
ایا کسی کدی داره که به هر طریق ، حالا فرقی نداره ، این کارو انجام بده ؟

vcldeveloper
شنبه 22 فروردین 1388, 16:38 عصر
از Process چی دارید؟ به فرض اینکه Process ID را دارید، با کد زیر می تونید به فایل اجرایی مربوط به آن Process برسید:


uses TlHelp32;

/// <summary> Returns EXE path of a given process. </summary>
function GetProcessFileName(ProcessID: Cardinal): TFileName;
var
hSnapShot: THandle;
Me32: TModuleEntry32;
begin
hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Process ID);
if hSnapShot <> INVALID_HANDLE_VALUE then
try
Me32.dwSize := SizeOf(Me32);
//First module loaded in each process is EXE file of the process.
if Module32First(hSnapshot,Me32) then
Result := Trim(Me32.szExePath);
finally
CloseHandle(hSnapShot);
end
else
RaiseLastOSError;
end;

FiACKER
شنبه 22 فروردین 1388, 16:59 عصر
در بدست اوردن اسم فايل و حتي مسير اون و مشخصات ديگه مشكلي نيست!

من مي خواستم commandline پروسه رو بدست بيارم.

بزاريد مثالي بزنم:
مي خوام برنامه اي بنويسم كه ببينه چه فايلي به عنوانه پارامتر به برنامه مديا پليير فرستاده شده كه در حاله حاضر داره پخش مي شه !؟

يعني بايد يه جواب مثله زير بده :


"C:\program files\windows media player\wmplayer.exe" "e:\mp3\pop.mp3"
يعني كماندلاينه مديا پليير رو كه يه فايله mp3 هست رو بگيرم...

Mehdi Asgari
شنبه 22 فروردین 1388, 20:27 عصر
اینو ببین (با سی پلاس پلاسه. تبدیلش به دلفی نباید زیاد سخت باشه)
http://wj32.wordpress.com/2009/01/24/howto-get-the-command-line-of-processes/