2024年3月21日发(作者:)
我试了一下,可以用回调函数(并非本论坛无高手,而是高手们都对VB不感冒)
以下是代码:有一点小缺憾,就是在TEXT文本框中,系统本身有右键菜单,所有要调用自
己的右键菜单,需要双击(点击两下)右键,才能看到自己的菜单。第一次出来的是系统
右键菜单。
需要自己先建立一个右键菜单,命名为menu1
'********************* 本段代码放在 Form1
Private Sub Form_Activate()
SetTimer , 0, 1, AddressOf TimerProc
End Sub
Private Sub Form_Load()
hDC1 = GetActiveWindow
End Sub
Private Sub Form_Unload(Cancel As Integer)
KillTimer , 0
End Sub
Private Sub Text1_Change()
PopupMenu menu1
End Sub
'*************** 本段代码放在
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long,
ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long)
As Long
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Declare Function GetActiveWindow Lib "user32" () As Long
Global Cnt&, sSave$, sOld$, Ret$, Tel&
Global hDC1 As Long
Function GetPressedKey() As String
For Cnt = 1 To 128
If GetAsyncKeyState(Cnt) <> 0 Then
GetPressedKey = Cnt 'Chr$(Cnt)
Exit For
End If
Next Cnt
End Function
Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long,
ByVal lpTimerFunc As Long)
Ret = GetPressedKey
'sSave = ""
If Ret <> sOld Then
sOld = Ret
Dim hdc2 As Long
hdc2 = GetActiveWindow
If Ret = "2" And hdc2 = hDC1 Then
If = "0" Then
= "1"
Else
= "0"
End If
End If
End If
End Sub
发布评论