force1758,
Cita:
|
Empezado por Wikipedia:
Windows Management Instrumentation (WMI) is a set of extensions to the Windows Driver Model that provides an operating system interface through which instrumented components provide information and notification. WMI is Microsoft's implementation of the Web-Based Enterprise Management (WBEM) and Common Information Model (CIM) standards from the Distributed Management Task Force (DMTF).
Tomado del link : http://en.wikipedia.org/wiki/Windows...nstrumentation
|
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActiveX, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetProcessInformation(ProcessName : String) : String;
const
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet : OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
SQLWMI : String;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
SQLWMI := 'SELECT Name, ProcessId, Caption, ExecutablePath FROM Win32_Process Where Name = ' + QuotedStr(ProcessName);
FWbemObjectSet := FWMIService.ExecQuery(SQLWMI,'WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, FWbemObject, iValue) = 0 then
begin
Result := String(FWbemObject.ExecutablePath);
FWbemObject:=Unassigned;
end
else
raise Exception.Create('El Programa No Se Encuentra Activo en Memoria');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('El Path del Programa en Disco es: %s',[GetProcessInformation('notepad.exe')]));
end;
end.
El código anterior es una variante de la solución mostrada en el
Msg #2 utilizando
la Clase Win32_Process de WMI como se sugirió en el
Msg #3.
Nota: WMI es un medio muy versátil para obtener y manejar informacion en Windows, en el ejemplo de hace un Select a cuatro propiedades de la Clase Win32_Process (
Aunque solo se requiere la propiedad ExecutablePath) como una muestra de las capacidades de WMI.
Te sugiero revisar estos links:
Espero sea útil
Nelson.