hola, tengo este código de visual basic 6
me funciona perfecto, pero solo funciona para 32 bits y no para 64 bits     
Código vb:
Ver original- Option Explicit 
- Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long 
- Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 
- Private Declare Function EnumProcesses Lib "PSAPI.DLL" (lpidProcess As Long, ByVal cb As Long, cbNeeded As Long) As Long 
- Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, lphModule As Long, ByVal cb As Long, lpcbNeeded As Long) As Long 
- Private Declare Function GetModuleBaseName Lib "PSAPI.DLL" Alias "GetModuleBaseNameA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long 
- Private Const PROCESS_VM_READ = &H10 
- Private Const PROCESS_QUERY_INFORMATION = &H400 
-   
- Private Function EstaCorriendo(ByVal NombreDelProceso As String) As Boolean 
-     Const MAX_PATH As Long = 260 
-     Dim lProcesses() As Long, lModules() As Long, N As Long, lRet As Long, hProcess As Long 
-     Dim sName As String 
-     NombreDelProceso = UCase$(NombreDelProceso) 
-     ReDim lProcesses(1023) As Long 
-   
-     If EnumProcesses(lProcesses(0), 1024 * 4, lRet) Then 
-         For N = 0 To (lRet \ 4) - 1 
-             hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, lProcesses(N)) 
-             If hProcess Then 
-                 ReDim lModules(1023) 
-                 If EnumProcessModules(hProcess, lModules(0), 1024 * 4, lRet) Then 
-                     sName = String$(MAX_PATH, vbNullChar) 
-                     GetModuleBaseName hProcess, lModules(0), sName, MAX_PATH 
-                     sName = Left$(sName, InStr(sName, vbNullChar) - 1) 
-   
-                     If Len(sName) = Len(NombreDelProceso) Then 
-                         If NombreDelProceso = UCase$(sName) Then EstaCorriendo = True: Exit Function 
-                     End If 
-                 End If 
-             End If 
-             CloseHandle hProcess 
-         Next N 
-     End If 
- End Function 
-   
- Private Sub Command1_Click() 
-     If EstaCorriendo("DTEPlanoWS.exe") Then 
-          MsgBox "El programa está en ejecución" 
-     Else 
-          MsgBox "El programa NO está en ejecución" 
-     End If 
- End Sub