11943499
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата: ммм, а на диске z:\ точно файл программы, а не ярлык? | Тут такая схема. Монтируется временный зашифрованный диск Z. На нем находятся портативные версии программ. Ну там Office и тд. Они же и стартуют с него. При определенных условиях диск нужно быстро размонтировать с закрытием всех прог принадлежащих именно этому диску. Это нужно для быстрого скрытия Z, иначе, если остаются открытые проги, диск уходит, но хвосты с него и его след видны в системе. Но вот что оказалось. Из портативной версии офиса Word стартует нормально, то есть домашний путь его процесса определяется с диска Z, а вот процесс Exell определяет свой путь из c:\...Roaming\ То есть косячок с правильным закрытием прог. Вот никак не могу найти событие по которому можно закрыть такие блуждающие процессы. По заголовку окна не знаю, параллельно может быть запущено несколько Exell и некоторые из штатного дистрибутивного каталога, их не надо закрывать. Вот скриптик, сорри что не раскрасил, никак не доберусь разобраться как это делать. $list = ProcessList() $MyDrive=StringLeft(@ScriptDir, 3) for $i = 1 to $list[0][0] $FoundNameOfProc=_ProcessGetLocation($list[$i][1]) If StringLeft($FoundNameOfProc,3) = $MyDrive Then $PID = ProcessExists($list[$i][1]) ProcessClose($PID) EndIf next Func _ProcessGetLocation($iPID) Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID) If $aProc[0] = 0 Then Return SetError(1, 0, '') Local $vStruct = DllStructCreate('int[1024]') DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0) Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048) If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '') Return $aReturn[3] EndFunc | Всего записей: 132 | Зарегистр. 06-10-2008 | Отправлено: 09:25 19-07-2009 | Исправлено: 11943499, 09:33 19-07-2009 |
|