none
【VB.net】關於 信差服務 and EvenLog RRS feed

  • 問題

  • 各位前輩大大好

    我又來跟各位討教了

    先前有發過類似的問題,不過是VB6的

    小弟已經改用vb.net的方式撰寫

    目前測試一切都是OK

    程式功能:

    監控信差服務有無新增訊息 -> 就是如果跑程式的本機端有無收到信差服務

    收到後,除了OS上的叮一聲,程式自己也會發出聲音

    並且在程式重新讀取EVENLOG顯示在LISTBOX -> 這部分小弟也有另外一種寫法,無須更新,可以直接出現新的訊息在LISTBOX中

     

    問題:

    功能測試都OK

    但是問題在於出現的【信差服務訊息】一定要點【確定】之後

    我的程式才會【更新】or【顯示新的訊息】

     

    這是OS本身的問題嗎?

    EX:信差服務訊息出現 -> 點選確定 -> 系統本身才會將該信息寫入EVENLOG中

     

    請各位大大解惑?

    提供程式片段

     

     

     Dim applogs As New EventLog("System")
     Dim str As String = "Jim"
     Dim log_temp As String
     Dim monitor As Integer = 0
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
      For Each lentry As EventLogEntry In applogs.Entries
       log_temp = lentry.Message
       If InStr(1, log_temp, str) >= 1 Then
        ListBox1.Items.Add(lentry.Message)
        ListBox1.TopIndex = ListBox1.Items.Count - 1
       End If
      Next
      Label1.Text = ListBox1.Items.Count
    
    
     End Sub
    
     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
      timeshow.Text = Now()
      For Each lentry As EventLogEntry In applogs.Entries
       log_temp = lentry.Message
       If InStr(1, log_temp, str) >= 1 Then
        ListBox2.Items.Add(lentry.Message)
        monitor += 1
       End If
      Next
      Label2.Text = monitor.ToString
      monitor = 0
    
      If Int(Label2.Text) > Int(Label1.Text) Then
     
       ListBox1.Items.Add(ListBox2.Items.Item(Int(Label2.Text - 1)))
       ListBox1.TopIndex = ListBox1.Items.Count - 1
      
       My.Computer.Audio.Play("c:\temp\complete.wav", AudioPlayMode.BackgroundLoop)
       Button6.Enabled = True
       ListBox2.Items.Clear()
       Label1.Text = Label2.Text
      Else
       ListBox2.Items.Clear()
      End If
     End Sub
    

     

     


    2011年6月5日 上午 09:50

解答

  • 我有點搞懂了, 我倒覺得這樣的用途, 直接用Socket寫會比較靈活吧, 也不需要用Timer 一直讀東西.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Rickyjim 2011年6月13日 上午 09:45
    2011年6月11日 上午 06:03
    版主
  • 我有點搞懂了, 我倒覺得這樣的用途, 直接用Socket寫會比較靈活吧, 也不需要用Timer 一直讀東西.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    我之前也想用socket的方式去寫

    但是信差服務的port已經被windows鎖定

    之前有爬過文 怎麼去把他解開

    但是過程有點過於複雜 Q_Q

    還是大大你有簡單的方式可以提供

    只要提供【如何把信差服務的port解開 改由自己寫的程式去宣告】的相關方法Q_Q

    或是用 【監聽】的方式?


    2011年6月11日 上午 08:14

所有回覆

  • 沒看到哪一行有Messagebox之類的啊 ? 你是在哪邊顯示 "確定" ?

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年6月6日 下午 02:55
    版主
  • 沒看到哪一行有Messagebox之類的啊 ? 你是在哪邊顯示 "確定" ?

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    您好

    我的程式碼是沒有問題 是參考而已 ^_^

    可能我問題沒有說得很清楚吧

    提供下列流程

    PC-A 用 net send 連續送5個訊息(1.2.3.4.5)到 PC-B

    PC-B上掛有我寫的程式(X)

    PC-B出現信差服務訊息(1)

    PC-B上的X發出警訊,LIST更新出現PC-A送過來的(1)的訊息

    但是PC-A是連續送五個

    所以必須把PC-B上面第一個出現的(1)訊息點掉

    才會出現(2)訊息,程式X也才會再次發出警告聲,List更新(2)的訊息

     

    感覺很難懂@@||||

    2011年6月7日 上午 02:29
  • PC-B出現信差服務訊息(1) <--這是在哪一段程式 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年6月7日 上午 02:33
    版主
  • PC-B出現信差服務訊息(1) <--這是在哪一段程式 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    這不是程式...@@

    信差服務~ 就是在cmd下net send出來的訊息 ^^

    我的解釋 好像讓大家很難懂吼~>"<~

    2011年6月7日 上午 10:44
  • 你怎麼監控net send的 ?

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年6月8日 上午 12:33
    版主
  • 程式碼中的方式 evenlog 就可以實行監控

    說是監控~ 其實也是 一直用timer的方式去讀取evenlog

    程式流程

    程式開啟後 把evenlog裡面的資料撈到listbox1裡面 假設有10筆

    然後再用timer1 每1秒 去撈取evenlog的資料到listbox2

    然後再比較 listbox1跟 listbox2的筆數

    listbox2的資料如果有更新(Net send過來的訊息 會寫入電腦裡面的evenlog中)

    就會發出警訊

    這樣^^~

    2011年6月11日 上午 05:07
  • 我有點搞懂了, 我倒覺得這樣的用途, 直接用Socket寫會比較靈活吧, 也不需要用Timer 一直讀東西.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Rickyjim 2011年6月13日 上午 09:45
    2011年6月11日 上午 06:03
    版主
  • 我有點搞懂了, 我倒覺得這樣的用途, 直接用Socket寫會比較靈活吧, 也不需要用Timer 一直讀東西.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    我之前也想用socket的方式去寫

    但是信差服務的port已經被windows鎖定

    之前有爬過文 怎麼去把他解開

    但是過程有點過於複雜 Q_Q

    還是大大你有簡單的方式可以提供

    只要提供【如何把信差服務的port解開 改由自己寫的程式去宣告】的相關方法Q_Q

    或是用 【監聽】的方式?


    2011年6月11日 上午 08:14