'取得窗体句柄
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Integer, ByVal wCmd As Integer) As Integer
Public Const GW_HWNDPREV As Short = 3
Public Const GW_HWNDNEXT As Short = 2
Public Const GW_HWNDFIRST As Short = 0
Public Const GW_OWNER As Short = 4
'取得窗体文本
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
'查找运行程式列表中是否有指定标题的程式
Public Function FindRunningProgram(ByVal PrgName As String, Optional ByVal ExtString As String = "") As Integer
Dim RenHWND As Integer
Dim RetValue As Integer
Dim WinText As New VB.Compatibility.VB6.FixedLengthString(256)
Dim fgFindRunningProgram As Integer
'取得第一个Hwnd
RenHWND = GetWindow(Form7.Handle.ToInt32, GW_HWNDFIRST)
Do
'取得标题
RetValue = GetWindowText(RenHWND, WinText.Value, 256)
'如果成功
If RetValue <> 0 Then
'判断是否是要找的程式
If ExtString = "" Then
If InStr(1, WinText.Value, PrgName) > 0 Then
fgFindRunningProgram = 1
Exit Do
End If
Else
If InStr(1, WinText.Value, PrgName) > 0 AndAlso InStr(1, WinText.Value, ExtString) > 0 Then
fgFindRunningProgram = 1
Exit Do
End If
End If
End If
'寻找下一个
RenHWND = GetWindow(RenHWND, GW_HWNDNEXT)
Loop Until RenHWND = 0
Return fgFindRunningProgram
End Function
Public Function IsOffline(ByVal PrinterName As String) As Integer
If FindRunningProgram(PrinterName) > 0 Then
If FindRunningProgram(PrinterName, "脱机使用打印机") > 0 Then
Return 1
Else
Return 0
End If
Else
Return -1
End If
End Function
呵呵,是不是很流氓啊~