史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   VB6.0從工作列再跳出程式 (http://forum.slime.com.tw/thread250186.html)

chung1206 2009-07-07 01:08 PM

VB6.0從工作列再跳出程式
 
各位先進們好,請教在VB6.0裡,我執行我的程式,我將此程式縮小到工作列,我希望5分鐘後他能自動再跳出來桌面上,Timer我會設定,但跳出來這個就不會了,謝謝。

mini 2009-07-07 01:55 PM

Me.WindowState = 0

chung1206 2009-07-07 03:10 PM

引用:

作者: mini (文章 2173779)
Me.WindowState = 0

感謝大大,問題解決了,不知這種小問題是要靠經驗累積而成的還是有書
本有介紹?如果有可否介紹一下,謝謝。

另外不知道要如何突破五分鐘才偵測一次,因為我試了最多一分五秒=65535
有找到相關解決方式,但我看不懂,可否請大大再次指教,謝謝。

Private Sub Timer_Timer
Dim NowSecond As Long
NowSecond = (Date - StartDate) * 86400 + Timer
If NowSecond - StartSecond >= 10800 Then
MsgBox "三小時到"
StartDate = Date
StartSecond = Timer
End If
End Sub

mini 2009-07-08 08:45 PM

可以說算是 經驗吧
以 google為主 MSDN Library Visual Studio為輔


一天有多少秒
60*60*24=86400

Timer 函數
傳回一 Single,其內容為從前一個午夜算起到現在所經過的秒數

如果 StartDate是今年的一月一號
所以 (Date- StartDate) * 86400 + Timer
就可以算出現在是今年的第幾秒

chung1206 2009-07-09 09:30 AM

引用:

作者: mini (文章 2174175)
可以說算是 經驗吧
以 google為主 MSDN Library Visual Studio為輔


一天有多少秒
60*60*24=86400

Timer 函數
傳回一 Single,其內容為從前一個午夜算起到現在所經過的秒數

如果 StartDate是今年的一月一號
所以 (Date- StartDate) * 86400 + Timer
就可以算出現在是今年的第幾秒

感謝大大,我將10800改為120,我想二分鐘偵測一次,但測試過了
二分鐘後連動都沒動,不知問題出在那,程式碼如下:

Private Sub Timer1_Timer()
Dim NowSecond As Long
NowSecond = (Date - StartDate) * 86400 + Timer
If NowSecond - StartSecond >= 120 Then
End If
StartDate = Date
StartSecond = Timer
Call Command1_Click
Me.WindowState = 0
End Sub

謝謝。

mini 2009-07-09 12:02 PM

引用:

作者: chung1206 (文章 2174345)
感謝大大,我將10800改為120,我想二分鐘偵測一次,但測試過了
二分鐘後連動都沒動,不知問題出在那,程式碼如下:

Private Sub Timer1_Timer()
Dim NowSecond As Long
NowSecond = (Date - StartDate) * 86400 + Timer
If NowSecond - StartSecond >= 120 Then
End If
StartDate = Date
StartSecond = Timer
Call Command1_Click
Me.WindowState = 0
End Sub

謝謝。

IF 區塊裡沒有什麼程式碼
當然就什麼都不會做
你可以放個 msgbox "兩分鐘到了"
看看有沒有反應

還有 Timer1.Interval屬性 要給他一個小於 1000的值(500應該就可以了)

chung1206 2009-07-09 12:35 PM

引用:

作者: mini (文章 2174401)
IF 區塊裡沒有什麼程式碼
當然就什麼都不會做
你可以放個 msgbox "兩分鐘到了"
看看有沒有反應

我改成這樣如下:

Private Sub Timer1_Timer()
Dim NowSecond As Long
NowSecond = (Date - StartDate) * 86400 + Timer
If NowSecond - StartSecond >= 120 Then
Call Command1_Click
Me.WindowState = 0
End If
StartDate = Date
StartSecond = Timer
End Sub

但仍然沒反應=.=

mini 2009-07-09 09:29 PM

引用:

作者: chung1206 (文章 2174415)
我改成這樣如下:

Private Sub Timer1_Timer()
Dim NowSecond As Long
NowSecond = (Date - StartDate) * 86400 + Timer
If NowSecond - StartSecond >= 120 Then
Call Command1_Click
Me.WindowState = 0
End If
StartDate = Date
StartSecond = Timer
End Sub

但仍然沒反應=.=

發現程式有矛盾
改成
語法:

Dim StartDate As Date
Dim StartSecond As Long

Private Sub Form_Load()

    StartDate = Date
    StartSecond = Timer
    Timer1.Interval = 500

End Sub

Private Sub Timer1_Timer()
Dim NowSecond As Long

    NowSecond = (Date - StartDate) * 86400 + Timer
    If NowSecond - StartSecond >= 120 Then
'        MsgBox "2分鐘了"
        Me.WindowState = 0
       
        StartDate = Date
        StartSecond = Timer
    End If
   
End Sub


chung1206 2009-07-10 09:52 AM

引用:

作者: mini (文章 2174531)
發現程式有矛盾
改成
語法:

Dim StartDate As Date
Dim StartSecond As Long

Private Sub Form_Load()

    StartDate = Date
    StartSecond = Timer
    Timer1.Interval = 500

End Sub

Private Sub Timer1_Timer()
Dim NowSecond As Long

    NowSecond = (Date - StartDate) * 86400 + Timer
    If NowSecond - StartSecond >= 120 Then
'        MsgBox "2分鐘了"
        Me.WindowState = 0
       
        StartDate = Date
        StartSecond = Timer
    End If
   
End Sub


感謝大大,但不知道為何Timer1.Interval = 500
是500呢?

mini 2009-07-10 02:35 PM

引用:

作者: chung1206 (文章 2174626)
感謝大大,但不知道為何Timer1.Interval = 500
是500呢?

因為你的最小計時單位是 1000也就是 一秒
但 VB的Timer其實精度不怎麼好 (也就是雖然設定1000ms執行一次,其實會是1050ms也不一定)
再加上
執行程式碼也會花費一些時間
所以
如果以效能(不要執行太多次無意義的監察,比如如果以每0.1秒檢查一次的話,說真的就真的太過火了)

小於0.5秒的誤差
個人是認為以 0.5秒檢查一次為最佳

其實個人也沒有驗證過啦
畢竟每個人的程式寫的不一樣
沒有所謂的標準答案


所有時間均為台北時間。現在的時間是 07:20 PM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1