Страница: 1 |
Страница: 1 |
Вопрос: Как определить запущен ли файл
Добавлено: 18.07.04 10:20
Автор вопроса: Монах
Как определить запущен ли exe файл
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #1
Добавлено: 18.07.04 10:42
Если свой используй
If App.PrevInstance Then MsgBox "Программа уже запущена"
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 18.07.04 11:31
Попробуй его стереть
Номер ответа: 3
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #3
Добавлено: 18.07.04 17:32
А если сотрется?
Номер ответа: 4
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #4
Добавлено: 18.07.04 17:37
2Mihalыch: ну.. это уже детали
Если уж развить тему удаления, то можно сначала файл куда-нибудь копировать, а потом уже пробовать удалять. Хотя эта система ламерская.
Может кто знает еще способ как проверить запущен ли файл?
Номер ответа: 5
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #5
Добавлено: 18.07.04 17:56
Простите, не удержался! Думаю можно попробовать так:
Private Const GWL_WNDPROC = -4, WM_GETMINMAXINFO = &H24, TH32CS_SNAPPROCESS = &H2, TH32CS_SNAPheaplist = &H1, TH32CS_SNAPthread = &H4, TH32CS_SNAPmodule = &H8, TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule, MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Sub Command1_Click()
 im Snap As Long
 im TheLoop As Long
 im Proc As PROCESSENTRY32
Snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
Proc.dwSize = Len(Proc)
TheLoop = ProcessFirst(Snap, Proc)
While TheLoop <> 0
If left(Proc.szExeFile, Len("имя файла.exe") = "имя файла.exe" Then
'файл запущен
End If
TheLoop = ProcessNext(Snap, Proc)
Wend
CloseHandle Snap
End Sub
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 18.07.04 18:02
P. S. Пример взят с этого сайта
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 18.07.04 18:07
А если dll библиотека !? Прийдется просматривать еще у каждого процесса и dll'ки... должен быть способ проще ) Хотя... навряд-ли