home *** CD-ROM | disk | FTP | other *** search
/ Dan Appleman's Visual Bas…s Guide to the Win32 API / Dan.Applmans.Visual.Basic.5.0.Programmers.Guide.To.The.Win32.API.1997.Ziff-Davis.Press.CD / VB5PG32.mdf / vbpg32 / samples4 / ch14 / watch.bas < prev    next >
Encoding:
BASIC Source File  |  1997-02-16  |  3.5 KB  |  98 lines

  1. Attribute VB_Name = "modWatcher"
  2. Option Explicit
  3. ' Copyright ⌐ 1997 by Desaware Inc. All Rights Reserved
  4.  
  5. Public Const SYNCHRONIZE = &H100000
  6. Public Const PROCESS_DUP_HANDLE = &H40
  7. Public Const INFINITE = &HFFFF           '  Infinite timeout
  8. Public Const DEBUG_PROCESS = &H1
  9. Public Const DEBUG_ONLY_THIS_PROCESS = &H2
  10.  
  11. Public Const CREATE_SUSPENDED = &H4
  12.  
  13. Public Const DETACHED_PROCESS = &H8
  14.  
  15. Public Const CREATE_NEW_CONSOLE = &H10
  16.  
  17. Public Const NORMAL_PRIORITY_CLASS = &H20
  18. Public Const IDLE_PRIORITY_CLASS = &H40
  19. Public Const HIGH_PRIORITY_CLASS = &H80
  20. Public Const REALTIME_PRIORITY_CLASS = &H100
  21.  
  22. Public Const CREATE_NEW_PROCESS_GROUP = &H200
  23.  
  24. Public Const CREATE_NO_WINDOW = &H8000000
  25.  
  26. Public Const WAIT_FAILED = -1&
  27. Public Const WAIT_OBJECT_0 = 0
  28. Public Const WAIT_ABANDONED = &H80&
  29. Public Const WAIT_ABANDONED_0 = &H80&
  30. Public Const WAIT_TIMEOUT = &H102&
  31.  
  32. Public Type PROCESS_INFORMATION
  33.         hProcess As Long
  34.         hThread As Long
  35.         dwProcessId As Long
  36.         dwThreadId As Long
  37. End Type
  38.  
  39. Public Type STARTUPINFO
  40.         cb As Long
  41.         lpReserved As String
  42.         lpDesktop As String
  43.         lpTitle As String
  44.         dwX As Long
  45.         dwY As Long
  46.         dwXSize As Long
  47.         dwYSize As Long
  48.         dwXCountChars As Long
  49.         dwYCountChars As Long
  50.         dwFillAttribute As Long
  51.         dwFlags As Long
  52.         wShowWindow As Integer
  53.         cbReserved2 As Integer
  54.         lpReserved2 As Long
  55.         hStdInput As Long
  56.         hStdOutput As Long
  57.         hStdError As Long
  58. End Type
  59.  
  60. Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  61. Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  62. Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
  63. Public Declare Function CreateProcessBynum Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
  64. Public Declare Function WaitForInputIdle Lib "user32" (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
  65. Public Declare Function DuplicateHandle Lib "kernel32" (ByVal hSourceProcessHandle As Long, ByVal hSourceHandle As Long, ByVal hTargetProcessHandle As Long, lpTargetHandle As Long, ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwOptions As Long) As Long
  66. Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
  67.  
  68.  
  69. Public frmptr As frmWatcher
  70. Public WatchCollection As New Collection
  71.  
  72. Public Sub Main()
  73.     Set frmptr = New frmWatcher
  74.     Load frmptr ' Make sure form is loaded (but invisible)
  75.     If App.StartMode = vbSModeStandalone Then
  76.         ' Show the form if created standalone
  77.         frmptr.Show
  78.     End If
  79. End Sub
  80.  
  81. ' Raise an error
  82. Public Sub RaiseError(errnum&, cls$, desc$)
  83.     Dim usenum&
  84.     usenum& = errnum& + vbObjectError
  85.     Err.Raise Number:=usenum, source:="dwWatcher." & cls, Description:=desc
  86. End Sub
  87.  
  88. Public Sub RemovingClass(o As Object)
  89.     Dim obj As Object
  90.     Dim counter&
  91.     For counter = 1 To WatchCollection.Count
  92.         If WatchCollection.Item(counter) Is o Then
  93.             WatchCollection.Remove counter
  94.         End If
  95.     Next counter
  96.         
  97. End Sub
  98.