|
楼主 |
发表于 2010-11-10 08:22
|
显示全部楼层
實在讓人失望,所以我只好求助google,找半天,只找到有人說
PInvoke:SetWindowPos
Private Const HWND_TOPMOST = -1
就這樣
找setwindowpos只說了是api,然後一堆用法,
找範例,只有c++ vb.net
最後用了vba setwindowpos 前面也一堆沒用的,後來才出現…
最後emily果然沒讓我失望
二大EXCEL範例網
http://cat14051.mysinablog.com/index.php這是EMILY
http://chijanzen.net/wp/- '在sheet1設二個按鈕,一個開啟計時器一個關閉
- Private Sub CommandButton1_Click()
- Call ssOff
- End Sub
- Private Sub CommandButton2_Click()
- Call ssOn
- End Sub
复制代码
- 'MODULE1
- Public tm As Date
- Sub ssOn()
- tm = Now + TimeValue("0:0:5")
- Application.OnTime tm, "ssOn"
- '出現對話框
- Call MsgBoxForGround
- End Sub
- Sub ssOff()
- 'Application.OnTime EarliestTime:=tm, Procedure:="ssOn", Schedule:=False
- Debug.Print "Will End " & tm & " Ontime"
- Application.OnTime tm, "ssOn", , False
- End Sub
- Sub MsgBoxForGround()
- '就是這個讓功能實現!!!!
- Call MakeTopMost(Application.hwnd)
- MsgBox "test", vbSystemModal
- End Sub
复制代码- '---------------------------------------------------------------------------------------
- ' Module : Module2
- ' DateTime :
- ' Author :
- ' Purpose :
- '---------------------------------------------------------------------------------------
- Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
- Private Const HWND_TOPMOST = -1
- Private Const HWND_NOTOPMOST = -2
- Private Const SWP_NOMOVE = &H2
- Private Const SWP_NOSIZE = &H1
- Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
- Call MakeNormal(Application.hwnd)
- End Sub
- Public Sub MakeNormal(hwnd As Long)
- SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
- End Sub
- Public Sub MakeTopMost(hwnd As Long)
- SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
- End Sub
- Sub Test()
- Call MakeTopMost(Application.hwnd)
- ' Call MakeNormal(Application.hwnd)
- End Sub
复制代码 為何API總是那麼難學?!
[ 本帖最后由 lolmuta 于 2010-11-10 08:38 编辑 ] |
|