Shell 路径\程序名
ShowWindow FindWindowTitle("程序名"), SW_SHOWNORMAL
AppActivate ("程序名")
就可以实现所需要的程序焦点置前啦
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下, Name: LblBtn, BorderStyle: 1, Appearance: 0, Alignment: 2, 这样一个按钮的雏形就已经出来了,如果工程量很大,可以将多个Label控件的Name属性设为一样的,对于按钮的识别就要靠识别Index属性了,为了方便起见,在进入到代码编辑窗口,输入以下代码: Private Const LBL_BACK_COLOR = &HE0E0E0 ’正常时Label控件的背景色 Private Const LBL_WHEN_MOUSE_MOVE = &HC0C0C0 ’鼠标移动时Label的背景色 Private Const LBL_WHEN_MOUSE_DOWN = &H808080 ’鼠标按下时Label的背景色 再在Form的Load事件中输入以下内容 Private Sub Form_Load() Dim Count As Integer For Count = 0 To 3 ’请将此出的3换成你的LblBtn数量的个数-1 LblBtn(Count).BackColor=LBL_BACK_COLOR ’初始化LblBtn的背景 Next Count End Sub 然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分: Private Sub LblBtn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’当鼠标按在LblBtn上时 LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN ’临时改变LblBtn背景颜色 End Sub Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’鼠标在LblBtn上面移动时触发该事件 Dim Count As Integer DoEvents ’暂时将系统控制权教给系统 If Button Then Exit Sub ’如果按钮被按下就退出该过程 For Count = 0 To 3 If Count <>Index Then ’如果按下的不是其它按钮 LblBtn(Index).BackColor = LBL_BACK_COLOR ’将背景设为正常 Else LblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE ’将背景设为鼠标移动的背景 End If Next Count End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Count As Integer DoEvents For Count=0 To 3 LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢复背景 Next Count End调用API函数SETWINDOWPOS可达到这一目的。该函数的语法是:SetWindowPos (hWnd, hwndInsetAfter, x, y, cx, xy, wFlags)
其中:
hWnd ---- 窗体的句柄(handle)。
hWndInsetAfter ---- 它就是决定是否“总在前”的参数,
应用中设置为: HWND_TOPMOST 总在前
HWND_NOTOPMOST正常的
x,y,cx,cy ----表示窗体的位置和大小的参数,在实际应用中可忽略。
wFlags ---- 决定窗体是否可以移动和改变尺寸,一般设置成这样的形式:SWP_NOMOVE or SWP_NOSIZE。
例子:
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)
Private Sub Form_Load()
Call SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 3)
End Sub
永远保有焦点:。
在LostFocus()事件里调用API函数SetFocus
例:
Declare Function SetFocus Lib "user32 " Alias "SetFocus " (ByVal hwnd As Long)As Long
Dim dl As Long
Private Sub Form_LostFocus()
dl&=SetFoucs(me.Hwnd)
end sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)