none
關於 PhoneIncomingCall 事件 RRS feed

  • 問題

  • 各位先進 大家好!!

     

    我已經可以取得目前電話的狀態

    Microsoft.WindowsMobile.Status.SystemState.PhoneIncomingCall 等....

     

    但是我卻找不到引發事件的切入點

    我想在來電時執行程式的功能(程式已預先常駐)

    而我卻找不到來電的事件 QQ 不知道我這樣說有沒有人聽得懂

    像是表單的載入事件表單一載入就會引發,我要電話一來就引發

     

    先謝謝各位先進給予小弟指導

    2008年7月9日 下午 03:59

解答

  • HI,

     

    Code Snippet

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Text
    Imports System.Windows.Forms
    Imports Microsoft.WindowsMobile.Status

    Namespace HandlingIncomingCall
        Public Partial Class Form1
            Inherits Form
            Private state As New SystemState(SystemProperty.PhoneIncomingCall)
           
            Public Sub New()
                InitializeComponent()
            End Sub
           
            Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
                AddHandler state.Changed, AddressOf state_Changed
            End Sub
           
            Private Sub state_Changed(ByVal sender As Object, ByVal args As ChangeEventArgs)
                MessageBox.Show("incoming call")
            End Sub
        End Class
    End Namespace

     

     

     

    2008年7月10日 下午 06:09

所有回覆

  • 嗨!

    我在 Microsoft Windows CE .Net 第三版,
    有找到相關訊息提供參考,有五個 Api 可以試試看!

    PDA Phone 跟 SmartPhone 都適用喔!

    希望對您有幫助。

     

    Code Snippet

    LONG PhoneMakeCall (PHONEMAKECALLINFO *ppmci);

     

    HRESULT PhoneOpenCallLog (HANDLE * ph);

     

    HRESULT PhoneGetCallLogEntry (HANDLE h, PCALLLOGENTRY pentry);

     

    HRESULT PhoneSeekCallLog (HANDLE h, CALLLOGSEEK seek, DWORD iRecord, LPDWORD piRecord);

     

    HRESULT PhoneCloseCallLog (HANDLE h);

    2008年7月10日 上午 08:11
  • Hi,

     

       可掛載事件至SystemState.Changed

     

    Code Snippet

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.WindowsMobile.Status;

    namespace HandlingIncomingCall
    {
        public partial class Form1 : Form
        {
            private SystemState state = new SystemState(SystemProperty.PhoneIncomingCall);

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                state.Changed += new ChangeEventHandler(state_Changed);
            }

            void state_Changed(object sender, ChangeEventArgs args)
            {
                MessageBox.Show("incoming call");
            }
        }
    }

     

     

     

    2008年7月10日 上午 09:16
  • 先感謝各位的指導

    小弟忘了說 我是用VB2008

    2008年7月10日 下午 03:06
  • HI,

     

    Code Snippet

    Imports System
    Imports System.Collections.Generic
    Imports System.ComponentModel
    Imports System.Data
    Imports System.Drawing
    Imports System.Text
    Imports System.Windows.Forms
    Imports Microsoft.WindowsMobile.Status

    Namespace HandlingIncomingCall
        Public Partial Class Form1
            Inherits Form
            Private state As New SystemState(SystemProperty.PhoneIncomingCall)
           
            Public Sub New()
                InitializeComponent()
            End Sub
           
            Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
                AddHandler state.Changed, AddressOf state_Changed
            End Sub
           
            Private Sub state_Changed(ByVal sender As Object, ByVal args As ChangeEventArgs)
                MessageBox.Show("incoming call")
            End Sub
        End Class
    End Namespace

     

     

     

    2008年7月10日 下午 06:09
  •  

    code6421 兄 您好

     

    我在測試您的程式碼時會出現

     InitializeComponent() 名稱未宣告

    想請問是因為未加入甚麼參考嗎??

    2008年8月2日 上午 04:47
  • Hi,

    InitializeComponent宣告是在Form1.Designer.vb裡面,這是你用一般的裝置應用程式時IDE會自動幫你建好的,而 code6421大是自己做了一個繼承Form類別的自訂類別,InitializeComponent也是初始化用的~

     

    你可以測看看下面這樣可不可以動作,預設是沒有Microsoft.WindowsMobile.Status的參考,要手動加入參考

     

    Code Snippet

    Imports Microsoft.WindowsMobile.Status

     

    Public Class Form1

     

        Private state As New SystemState(SystemProperty.PhoneIncomingCall)

     

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)

            AddHandler state.Changed, AddressOf state_Changed

        End Sub

     

        Private Sub state_Changed(ByVal sender As Object, ByVal args As ChangeEventArgs)

            MessageBox.Show("incoming call")

        End Sub

    End Class

     

     

     

    2008年8月2日 上午 06:15
    版主
  • bauann 兄 您好

     

    我先加入 Microsoft.WindowsMobile.Status 參考

    鍵入您的範例程式碼後 VB 提示

     Private state As New SystemState(SystemProperty.PhoneIncomingCall)

    SystemState 須加入 Microsoft.WindowsMobile 參考

    然後我按修正再用模擬器偵錯當電話撥入程式並沒有觸發 PhoneIncomingCall 事件            

    2008年8月6日 上午 07:01
  • Hi,

    抱歉,我的code少了這個,加上之後我測試是可以動作

    少了Handles MyBase.Load

        

    Code Snippet

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            AddHandler state.Changed, AddressOf state_Changed

        End Sub

     

     

     

    2008年8月6日 下午 12:40
    版主
  •  bauann 兄 您好

     

    這樣可以成功觸發了 我覺得這個問題我應該能自己發現沒想到我卻忽略了

    實在很感謝您無私的指導 小弟實在獲益良多

     

    不知道可否介紹一些關於 PDA 程式開發相關的書籍

    小弟住的地方是個小城鎮一直找不到相關的書
    如果可以的話希望能從網路上購買
     

     

     

    2008年8月6日 下午 02:59
  • 書本基本上我還是覺得自己看過比較好Microsoft® Mobile Development Handbook可以看看,這本在google上可以找到電子書,自己處理一下吧。

    2008年8月7日 上午 11:38
    版主
  • 謝謝您 ^^

    2008年8月7日 下午 03:32