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 / samples5 / ch14 / watch.bas < prev    next >
Encoding:
BASIC Source File  |  1997-02-16  |  3.5 KB  |  99 lines

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