Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как определить запущен ли файл Добавлено: 18.07.04 10:20  

Автор вопроса:  Монах
Как определить запущен ли exe файл

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #1
Добавлено: 18.07.04 10:42
Если свой используй
If App.PrevInstance Then MsgBox "Программа уже запущена"

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: intermult.boom.ru
 Профиль | | #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()
    ;Dim Snap As Long
    ;Dim TheLoop As Long
    ;Dim 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-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 18.07.04 18:07
А если dll библиотека !? Прийдется просматривать еще у каждого процесса и dll'ки... должен быть способ проще :)) Хотя... навряд-ли :(

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам