On-line: tnsr2, гостей 1. Всего: 2 [подробнее..]
АвторСообщение



Пост N: 226
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 29.05.14 16:54. Заголовок: "Висящий" процесс


Всем привет !

На компе открыт Exel. В некоторой ситуации он падает (в смысле окна нет, а процесс висит) Если в Excel был открыт файл общего доступа, то он блокируется на запись. Моя прога резидентно перехватывает висящие процессы и удаляет их. Можно ли определить открывался файл данным Excel или нет ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]





Пост N: 1089
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 30.05.14 12:47. Заголовок: fil пишет: Моя прог..


fil пишет:

 цитата:
Моя прога резидентно перехватывает висящие процессы

Это на harbour?

fil пишет:

 цитата:
Можно ли определить открывался файл данным Excel или нет ?

может использовать Process Monitor

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 287
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 30.05.14 13:54. Заголовок: fil пишет: На компе..


fil пишет:

 цитата:
На компе открыт Exel. В некоторой ситуации он падает (в смысле окна нет, а процесс висит) Если в Excel был открыт файл общего доступа, то он блокируется на запись. Моя прога резидентно перехватывает висящие процессы и удаляет их. Можно ли определить открывался файл данным Excel или нет ?



ЕСли в данный момент нужно определить занят чи файл excel то надо открыть excel и проверить

 
Private Sub Workbook_Open()
If ActiveWorkbook.ReadOnly Then
msgbox "Открыта только для чтения"

End If
End Sub



 цитата:

тогда впринципе можно макрос написать, который через API-вызов например вычитывал бы имя машины/Login name/IPшник из системного реестра запустившего пользователя. И складывать их например в Workbook.Property. Или на отдельный worksheet.
штука реально полезная и интересная. реализовал так, вставляю во все отчеты =)))
пихаем это в Книгу

Private Sub Workbook_Open()
'ведение лога
UserLog
End Sub

непосредственно код в модуле

Private Declare Function GetComputerNameA Lib "kernel32" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function WNetGetUserA Lib "mpr.dll" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
'сетевое имя компьютера
Function GetComputerName() As String
Dim sBuffer As String * 255
If GetComputerNameA(sBuffer, 255&) <> 0 Then
GetComputerName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
End If
End Function
'имя пользователя
Function GetUserName() As String
Dim sUserNameBuff As String * 255
sUserNameBuff = Space(255)
Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) - 1)
End Function
'запись в лог-файл
Sub UserLog()
Dim nLogtxt As String

nLogtxt = "G:\PROJECTS\LogData" & "\" & Replace(ThisWorkbook.Name, ".xls", ".txt")

Open nLogtxt For Append As #1
Print #1, Application.UserName & " -- " & Now & " -- " & GetComputerName & " -- " & GetUserName
Close #1
End Sub

хорошо ещё ставить на событие сохранения книги процедуру программного скрытия всех листов, чтобы у пользователя не оставалось шансов, кроме включения макросов. одновременно с этим в тихую дать пользователям доситуп к какой-нить незаметной папочке, где всё это будет вестись...


Можно взять утилиты командной строки : Windows Sysinternals

Есть неплохая утилита Unlocker вики unlocker
Похожая lockhunter lockhunter


 цитата:

OPENFILES /<параметр> [<аргументы>]

Описание:
Эта команда позволяет администратору вывести список открытых файлов и папок,
которые были открыты в системе.

Список параметров:
/Disconnect Отключение одного и более открытых файлов.

/Query Отображение открытых файлов, локально и с сетевого ресурса.

/Local Включает/отключает отображение локально открытых файлов.
Примечание: Включение отображения локально открытых файлов
приводит к снижению производительности системы.
Примеры:
OPENFILES /Disconnect /?
OPENFILES /Query /?
OPENFILES /Local /?





Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 227
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 03.06.14 15:51. Заголовок: Спасибо за советы (..



Спасибо за советы (тока до компа добрался).

Я заранее не знаю какой .XLS файл будет использоваться

Можно ли определить находится ли приложение в процессе загрузки (в данном случае Excel) Т.к. я ориентируюсь на наличие окна у процесса, то загружаемое и висящее приложение для меня одно и тоже

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 661
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет