I try to delete the folder..but cannot because another program is using the files. So how I can release the folder or kill the process?
Printable View
I try to delete the folder..but cannot because another program is using the files. So how I can release the folder or kill the process?
You cannot kill the process without knowing it's name.
I know the program that use the folder.. The program name is ArcGIS.exe, I also know the folder location I tying to kill the process.
vb Code:
Const PROCESS_ALL_ACCESS = &H1F0FFF Const TH32CS_SNAPPROCESS As Long = 2& 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 * 260 End Type Private Declare Function OpenProcess Lib "kernel32.dll" ( _ ByVal dwDesiredAccess As Long, _ ByVal blnheritHandle As Long, _ ByVal dwAppProcessId As Long _ ) As Long Private Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" ( _ ByVal hSnapshot As Long, _ uProcess As PROCESSENTRY32 _ ) As Long Private Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" ( _ ByVal hSnapshot As Long, _ uProcess As PROCESSENTRY32 _ ) As Long Private Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" ( _ ByVal lFlags As Long, _ lProcessID As Long _ ) As Long Private Declare Function TerminateProcess Lib "kernel32.dll" (ByVal ApphProcess As Long, _ ByVal uExitCode As Long _ ) As Long Private Declare Function CloseHandle Lib "kernel32.dll" ( _ ByVal hObject As Long _ ) As Long Public Sub KillProcess(NameProcess As String) Dim uProcess As PROCESSENTRY32 Dim RProcessFound As Long Dim hSnapshot As Long Dim SzExename As String Dim ExitCode As Long Dim MyProcess As Long Dim AppKill As Boolean Dim AppCount As Integer Dim i As Integer Dim WinDirEnv As String If NameProcess <> "" Then AppCount = 0 uProcess.dwSize = Len(uProcess) hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) RProcessFound = ProcessFirst(hSnapshot, uProcess) Do i = InStr(1, uProcess.szexeFile, Chr(0)) SzExename = LCase$(Left$(uProcess.szexeFile, i - 1)) WinDirEnv = Environ("Windir") + "\" WinDirEnv = LCase$(WinDirEnv) If Right$(SzExename, Len(NameProcess)) = LCase$(NameProcess) Then AppCount = AppCount + 1 MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID) AppKill = TerminateProcess(MyProcess, ExitCode) Call CloseHandle(MyProcess) End If RProcessFound = ProcessNext(hSnapshot, uProcess) Loop While RProcessFound Call CloseHandle(hSnapshot) End If End Sub Private Sub Command1_Click() KillProcess "notepad.exe" End Sub
I think I not kill the process.. I would like to unlock or release the folder path location from used by other program.
KillProcess "C:\Program Files\ArcGIS\Bin\ArcMap.exe"
KillProcess "ArcMap.exe"
Go to Command prompt and type Taskkill /IM ProcessNAmeQuote:
Originally Posted by matrik02
In your case
Taskkill /IM ArcGIS.exe or Taskkill /IM ArcGIS*
Can this done using VB code Without using command promptQuote:
Originally Posted by Dungeon Keeper
Why not,
vbHide is so the Command prompt window will be hiddenCode:Shell "c:\windows\system32\taskkill.exe /IM ArcGIS*",vbHide
Have API need to use the code because it used Shell.
Shell is VB6 function its not API :)Quote:
Originally Posted by matrik02
KillProcess "ArcMap.exe"
Is this not working?