![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
VBS -> Delphi [D7, Win2k, WinXP]
qwerr © (2005-03-01 16:47:00)Это на VBS
For Each objProcess in colProcessList
Next
Как это должно выглядеть в Делфи ? Как сделать для какждого ?
qwerr (2005-03-01 18:38:00) [1]Спасибо !!! Все получилось ))) с меня пиво !
DiamondShark (2005-03-01 18:29:00) [2]
> qwerr (01.03.05 18:15) [15]
> IEnumVARIANT - что это за объект ?
Это не объект, это интерфейс.
Описан в модуле ActiveX.
Документированый интерфейс, реализуемый объектами-коллекциями.
qwerr (2005-03-01 18:15:00) [3]IEnumVARIANT - что это за объект ?
DiamondShark (2005-03-01 17:56:00) [4]Должен быть метод аналог Items[], бо не все языки поддерживают VB-шные коллекции. Смотри доку по этому объекту.
Ну а VB-коллекция устроена так:
type
ICollectionDisp = dispinterface
['{00020400-0000-0000-C000-000000000046}']
property NewEnum: IEnumVARIANT dispid DISPID_NEWENUM;
end;
procedure TForm1.Button1Click(Sender: TObject);
var objSWbemLocator, List, List2,list3 : Variant;
enm: IEnumVARIANT;
item: OleVariant;
Dummy: Cardinal;
begin
objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
if not (TVarData(objSWbemLocator).VType = varEmpty)
then ShowMessage('OK');
list:= objSWbemLocator.ConnectServer('dm-dubrovin');
list2:= list.ExecQuery('SELECT * FROM Win32_Process WHERE ProcessID = 2380');
enm := ICollectionDisp(IDispatch(list2)).NewEnum;
item := Unassigned;
while enm.Next(1, item, Dummy) = S_OK do
begin
// чего-то делаем с item
item := Unassigned;
end;
end;
qwerr (2005-03-01 17:56:00) [5]list3 := list2.Item(i); --- Общая ошибка !
list3 := list2.Item[i]; --- Ошибка "Член группы не найден"
MU (2005-03-01 17:51:00) [6]list3 := list2.Item(i);
Но у меня дает "Общая ошибка"
а у вас?
qwerr (2005-03-01 17:23:00) [7]может мне кто нить помочь ?
qwerr (2005-03-01 17:14:00) [8]то же самое (((
поробуй запусти у себя !!!
я уже даже не знаю что делать , а что делать ))) ????
MU (2005-03-01 17:13:00) [9]list3 := list2[i]; ???
MU (2005-03-01 17:12:00) [10]var objSWbemLocator, List, List2,list3 : OleVariant;
qwerr (2005-03-01 17:10:00) [11]да он на сам метод ITEMS ругается, типа такого нет !
qwerr (2005-03-01 17:08:00) [12]так что есть какие варианты ?
MU (2005-03-01 17:08:00) [13]попробуй
for i := 1 to list2.Countdo
....
list3 := list2.Items[i];
или
list3 := list2[i];
qwerr (2005-03-01 17:02:00) [14]procedure TForm1.Button1Click(Sender: TObject);
var objSWbemLocator, List, List2,list3 : Variant;
i: integer;
begin
objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
if not (TVarData(objSWbemLocator).VType = varEmpty)
then ShowMessage('OK');
list:= objSWbemLocator.ConnectServer('dm-dubrovin');
list2:= list.ExecQuery('SELECT * FROM Win32_Process WHERE ProcessID = 2380');
i:= list2.Count;
ShowMessage(IntToStr(i));
for i := 0 to list2.Count - 1 do
begin
list3 := list2.Items[i];
ShowMessage(List3.Name) ;
//....
end;
end;
MU (2005-03-01 16:57:00) [15]а colProcessList - это кто? экземпляр какого класса?
colProcessList. и Ctrl+Space - там, может, будет что нужное?
qwerr (2005-03-01 16:55:00) [16]Дело в том что метода items нет, вываливается ошибка !!
только один Count показывает количество и всё (((
какие есть ещё варианты ?
MU (2005-03-01 16:50:00) [17]что-то такое...
for i := 0 to colProcessList.Count - 1 do
begin
objProcess := colProcessList.Items[i];
//....
end;