首先準備Form1, List1, Command1, Text1
再準備一個Module1
Form1的程式碼:
Option Explicit
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd
As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As
Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx
As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long,
ByVal nCmdShow As Long) As Long
Private Sub Command1_Click()
CallBackDemo
End Sub
Private Sub List1_Click()
On Error Resume Next
Dim W As String
SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3
SetForegroundWindow Val(Left(List1.List(List1.ListIndex), 12))
ShowWindow Val(Left(List1.List(List1.ListIndex), 12)), 3
DoEvents
keybd_event vbKeyMenu, &H0, &H0, &H0
keybd_event vbKeyD, &H0, &H0, &H0
keybd_event vbKeyD, &H0, &H2, &H0
keybd_event vbKeyMenu, &H0, &H2, &H0
DoEvents
keybd_event vbKeyControl, &H0, &H0, &H0
keybd_event vbKeyC, &H0, &H0, &H0
keybd_event vbKeyC, &H0, &H2, &H0
keybd_event vbKeyControl, &H0, &H2, &H0
DoEvents
W = ""
W = Clipboard.GetText
If LCase(Left(W, 7)) = "http://" Then
Text1.Text = W
Else
Text1.Text = "沒有網址或不正確的網址"
End If
SetForegroundWindow Me.hwnd
SetWindowPos Me.hwnd, -2, 0, 0, 0, 0, 3
End Sub
Module1的程式碼:
Option Explicit
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As
Long, ByVal lParam As Any) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As
Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public EWin As String
Private Function CallBackFunction(ByVal hwnd As Long) As Long
Dim ShWnd As String * 12
ShWnd = Str(hwnd)
If IsWindowVisible(hwnd) Then
If InStr(GetTitle(hwnd), "Microsoft Internet Explorer") < > 0 Or
InStr(GetTitle(hwnd), "Netscape") < > 0 Then
Form1.List1.AddItem ShWnd & GetTitle(hwnd)
End If
End If
CallBackFunction = True
End Function
Public Sub CallBackDemo()
Form1.List1.Clear
EnumWindows AddressOf CallBackFunction, 0&
End Sub
Public Function GetTitle(hwnd As Long) As String
Dim Title As String * 255
Dim TitleLength As Long
TitleLength = GetWindowText(hwnd, Title, 255)
GetTitle = Left(Title, TitleLength)
End Function
用法:
注意:德本立沒有Netscape, 因此可能測不到Netscape的網址~
範例可到VB範例單元中API範例項目下載。