Имя: Пароль:
1C
 
а можно из 1С узнать её PID?
0 Omega
 
23.09.05
14:51
идентификатор процесса я имею в виду.
1 skunk
 
23.09.05
15:00
на куя... стесняюсь спросить
2 427
 
23.09.05
15:04
можно.

второй закон программирования - все, что нельзя, но очень хочется - можно....
3 Рупор абсурда
 
23.09.05
15:07
(2) А первый какой? А сколько их всего?
4 Йожик
 
23.09.05
15:09
Вот и встретились два одиночества (2) и (3) :))
5 skunk
 
23.09.05
15:09
второй "закон ошибок"...

а далее... еще их целая стопка
6 smaharbA
 
23.09.05
15:09
Функция GetProcessID()
   Стр="
   |Dim sServer,TestScript
   |sServer = "".""
   |On Error Resume Next
   |Dim SWbemLocator
   |Set SWbemLocator = CreateObject(""WbemScripting.SWbemLocator"")
   |Set WshShell = CreateObject(""WScript.Shell"")
   |Set fso = CreateObject(""Scripting.FileSystemObject"")
   |Set Fold=fso.GetFolder(""."")
   |stRand=Replace(Rand(),"","",""_"")
   |stRand=Replace(stRand,""."",""_"")
   |Set f = fso.OpenTextFile(Fold.ShortPath & ""\Test"" & stRand & "".vbs"", 2, True)
   |f.WriteLine ""Do""
   |f.WriteLine ""WScript.Sleep 10000""
   |f.WriteLine ""Loop""
   |f.Close
   |TestScript=Fold.ShortPath & ""\Test"" & stRand & "".vbs""
   |set oExec=WshShell.exec(""wscript.exe "" & TestScript & "" //B"")
   |Dim SWbemServices
   |Set SWbemServices = SWbemLocator.ConnectServer(sServer,""root\CIMV2"")
   |
   |Dim objWbemObjectSet
   |Set objWbemObjectSet = SWbemServices.ExecQuery(""Select ProcessID,ParentProcessId From Win32_Process WHERE Name='wscript.exe'"", ""WQL"")
   |
   |Function Rand()
   |Randomize
   |Rand=Rnd
   |End Function
   |
   |Function DoWin32_Process
   |
   |DoWin32_Process=0
   |
   |Dim sProperty
   |For Each sProperty in objWbemObjectSet
   |If sProperty.ProcessId=oExec.ProcessID Then
   |DoWin32_Process=sProperty.ParentProcessId
   |sProperty.Terminate()
   |Exit For
   |End If
   |Next
   |oExec.Terminate()
   |fso.DeleteFile TestScript,True
   |End Function";
   СкриптЗапуск=СоздатьОбъект("MSScriptControl.ScriptControl");
   СкриптЗапуск.Language="vbscript";
   СкриптЗапуск.AddCode(Стр);
   ProcessID=Число(СкриптЗапуск.Run("DoWin32_Process");
   Возврат ProcessID;
КонецФункции    // GetProcessID
___________________________
Я конечно далек от мысли...(с)
7 Omega
 
23.09.05
15:10
(1) интересно..
8 Йожик
 
23.09.05
15:11
(6) Абрахамс, ты "заскриптишь" имхо что угодно
9 Omega
 
23.09.05
15:13
(6) спасибо.
10 smaharbA
 
23.09.05
15:18
(9) Можно просче, да кстати лучче позырь тут (в том что тут привел может где и ошибся)
http://karat-e.ru/files/VBS/priority1s.rar
11 dk
 
23.09.05
15:36
2(smaharbA)
Если не сложно, кинь пример
какие файлы держит процес (пусть 1cvs.exe)
Ну или как узнать какой процесс 1С с какой базой работает?
12 smaharbA
 
23.09.05
15:38
(11) Счас ненайду, надо снова писать, давай в понедельник ветку создай с точным вопросом, мне пора бяжать
13 dk
 
23.09.05
15:40
2(12)
Может проще на мыло тебе в понедельник отписать?
14 smaharbA
 
23.09.05
15:42
(13) Давай, убежал.
15 Рупор абсурда
 
23.09.05
15:45
(8) ... а если бы он ещё и скрипты сам писал ..., тогда ващще ...
16 Йожик
 
23.09.05
15:58
(15) нарушает чьи-то авторские права? ;-)
17 Рупор абсурда
 
23.09.05
16:04
(15) Нет, нумаю не нарушает ..., просто тупо копипастит ...
18 smaharbA
 
26.09.05
10:31
Ну вот еще "тупое копипасте"

Функция GetProcessID()
стр="
|Function PPID()
|Set WshShell = CreateObject(""WScript.Shell"")
|set oExec=WshShell.exec(""rundll32.exe kernel32,Sleep"")
|Set objLocator = CreateObject(""WbemScripting.SWbemLocator"")
|Set objService = objLocator.ConnectServer(""."",""root/cimv2"")
|Set objWbemObjectSet = objService.ExecQuery(""Select ProcessID,ParentProcessId From Win32_Process WHERE ProcessID='"" & oExec.ProcessID & ""'"", ""WQL"")
|For Each sProperty in objWbemObjectSet
|    PPID=sProperty.ParentProcessId
|sProperty.Terminate()
|Next
|End Function";
 СкриптЗапуск=СоздатьОбъект("MSScriptControl.ScriptControl");
  СкриптЗапуск.Language="vbscript";
  СкриптЗапуск.AddCode(Стр);
  ProcessID=Число(СкриптЗапуск.Run("PPID"));
  Возврат ProcessID;
КонецФункции    // GetProcessID
19 smaharbA
 
26.09.05
13:15
Еще более "тупое копипасте"...
Функция GetProcessID()
стр="
|Function PPID()
|Set WshShell = CreateObject(""WScript.Shell"")
|set oExec=WshShell.exec(""rundll32.exe kernel32,Sleep"")
|set objWbemObjectSet=GetObject(""winmgmts:Win32_Process.Handle="" & oExec.ProcessID)
|PPID=objWbemObjectSet.ParentProcessId
|objWbemObjectSet.Terminate()
|End Function";
СкриптЗапуск=СоздатьОбъект("MSScriptControl.ScriptControl");
 СкриптЗапуск.Language="vbscript";
 СкриптЗапуск.AddCode(Стр);
   ProcessID=Число(ЗапускСкрипта(Скрипт,"PPID",Стр));
   Возврат ProcessID;
КонецФункции    // GetProcessID
__________________________
Я конечно далек от мысли...(с)
20 skunk
 
26.09.05
13:18
рассердился
21 smaharbA
 
26.09.05
13:23
(20) Ага, теперь уж точно по (11) решение сделаю... С помощью "тупого копипасте"
22 skunk
 
26.09.05
13:25
Рупор он такой... злой короче ;)