Option Explicit
Const TH32CS_SNAPPROCESS As Long = 2&
Const 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 GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch 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 Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Command1_Click()'Список всех процессов
List1.Clear
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot = 0 Then
Exit Sub
End If
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapShot, uProcess)
Do While r
List1.AddItem uProcess.szExeFile
r = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End Sub
Private Sub Timer1_Timer()'заголовок активного окна
Dim hwnd As Long
Dim buffer As String
buffer = Space(100)
hwnd = GetForegroundWindow()
GetWindowText hwnd, buffer, 100
Form1.Caption = buffer
End Sub
Спасибо помогло, список есть....Ship писал(а):Может быть это подойдет:
На форме: Timer, Command1, ListBox
- Код: Выделить всё
Option Explicit
Const TH32CS_SNAPPROCESS As Long = 2&
Const 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 GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch 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 Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Command1_Click()'Список всех процессов
List1.Clear
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot = 0 Then
Exit Sub
End If
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapShot, uProcess)
Do While r
List1.AddItem uProcess.szExeFile
r = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End Sub
Private Sub Timer1_Timer()'заголовок активного окна
Dim hwnd As Long
Dim buffer As String
buffer = Space(100)
hwnd = GetForegroundWindow()
GetWindowText hwnd, buffer, 100
Form1.Caption = buffer
End Sub
Тобишь на каком сфокусирован пользователь...
Private Sub Timer1_Timer()'заголовок активного окна
Dim hwnd As Long
Dim buffer As String
buffer = Space(100)
hwnd = GetForegroundWindow()
GetWindowText hwnd, buffer, 100
Form1.Caption = buffer
End Sub
Amed писал(а):Ой, что сейчас будет!
tyomitch писал(а):Ramzes, ты чего
Я же только на прошлой неделе это разжёвывал...
GetWindowModuleFileName (по hWnd) / GetModuleFileNameEx (по hProcess)
Ship писал(а):Может быть это подойдет:
На форме: Timer, Command1, ListBox
- Код: Выделить всё
Option Explicit
Const TH32CS_SNAPPROCESS As Long = 2&
Const 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 GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch 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 Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Private Sub Command1_Click()'Список всех процессов
List1.Clear
Dim hSnapShot As Long
Dim uProcess As PROCESSENTRY32
Dim r As Long
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot = 0 Then
Exit Sub
End If
uProcess.dwSize = Len(uProcess)
r = ProcessFirst(hSnapShot, uProcess)
Do While r
List1.AddItem uProcess.szExeFile
r = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End Sub
Private Sub Timer1_Timer()'заголовок активного окна
Dim hwnd As Long
Dim buffer As String
buffer = Space(100)
hwnd = GetForegroundWindow()
GetWindowText hwnd, buffer, 100
Form1.Caption = buffer
End Sub
tyomitch писал(а):Нельзя.
Можно только создать на VB6 библиотеку с вызовами API и из скрипта обращаться к ней.
tyomitch писал(а):Нельзя.
Можно только создать на VB6 библиотеку с вызовами API и из скрипта обращаться к ней.
Jenizix писал(а):SAS, ты хоть представь что будет если все смогут выполнять апи ф-ии на клиентских компах!!!!!! Беспредел!
Jenizix писал(а):SAS, ты хоть представь что будет если все смогут выполнять апи ф-ии на клиентских компах!!!!!! Беспредел!
Jenizix писал(а):SAS, угу вот тока у меня опера, и мне по барабану все эти БВСкрипты...
Jenizix писал(а):...и мне по барабану все эти БВСкрипты...
Jenizix писал(а):SAS, угу вот тока у меня опера, и мне по барабану все эти БВСкрипты...
SAS писал(а):Jenizix писал(а):SAS, угу вот тока у меня опера, и мне по барабану все эти БВСкрипты...
На самом деле без разницы - пользуетесь Вы Интернет через MS IE или оперу или кардебалет какой нибудь и не важно на VBScript или на JavaScript я напишу этот скрипт, он будет выполняться в нашей интрасети на каждой локальной машине как сценарий Windows Script Host (WSH). Здесь я пытался узнать об объектной модели WMI для того, чтобы узнать список работающих приложений. имеющих активные окна.
Ruslan Demidow писал(а):Тогда тебе прямая дорога в WMI - класс Win32_Process. Там и хендлы можешь узнать и PID процесса (чтобы потом можно было управлять им через Shell.Activate(ProcessPID) ...
'чтобы запустить этот пример нужно скопировать
'содержимое в файл "*.vbs", сохранить его и запустить
on error resume next
'create instances of all processes
Machine = InputBox ("Enter a machine name" & vbCRLF & _
"например //geoth0", " ","//")
set oWMI = _
GetObject("winmgmts:{impersonationLevel=impersonate}" & _
"!" & Machine).InstancesOf("Win32_Process")
' enumerate all processes
For Each oProcess in oWMI
processes = processes & oProcess.Name & " " & oProcess.ProcessID & " " & oProcess.priority & chr (13) & chr(10)
Next
msgbox processes
Сейчас этот форум просматривают: Google-бот и гости: 57