以下这段代码应该如何部署,哪些是部署在类或者模块里的,哪些是部署在窗体里的,具体应该部署在什么位置?如何部署才能使代码生效,由于我对.net不熟悉,不知道代码应该放在什么位置上,请指教!非常感谢![StructLayout(LayoutKind.Sequential)]
public struct CALLLOGENTRY
{ public UInt32 cbSize;
public UInt64 ftStartTime;
public UInt64 ftEndTime;
public short iom; public bool fOutgoing;
public bool fConnected;
public bool fEnded; public bool fRoam;
public short cidt;
public IntPtr pszNumber;
public IntPtr pszName;
public IntPtr pszNameType;
public IntPtr pszNote;
};
[DllImport("phone.dll", EntryPoint = "PhoneOpenCallLog", SetLastError = true)]
private static extern int PhoneOpenCallLog(ref IntPtr pHandle); [DllImport("phone.dll", EntryPoint = "PhoneCloseCallLog", SetLastError = true)]
private static extern int PhoneCloseCallLog(IntPtr pHandle); [DllImport("phone.dll", EntryPoint = "PhoneGetCallLogEntry", SetLastError = true)]
private static extern int PhoneGetCallLogEntry(IntPtr pHandke, ref CALLLOGENTRY pEntry);
//下面是测试代码
/// <summary>
/// 获取通话记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
IntPtr handle = IntPtr.Zero; CALLLOGENTRY entry = new CALLLOGENTRY();
PhoneOpenCallLog(ref handle);
entry.cbSize = (uint)Marshal.SizeOf(entry); if (handle != IntPtr.Zero)
{ listView.Items.Clear();
listView.Columns[0].Width = this.Width;
while (PhoneGetCallLogEntry(handle, ref entry) == 0)
{ string phoneNumber = Marshal.PtrToStringUni(entry.pszNumber);
string name = Marshal.PtrToStringUni(entry.pszName);
if (name == null)
{
name = string.Empty;
} ListViewItem item = new ListViewItem(phoneNumber.Trim());
item.SubItems.Add(name.Trim()); listView.Items.Add(item);
}
PhoneCloseCallLog(handle); }
else
{ int error = Marshal.GetLastWin32Error();
}
}
catch (Exception ep)
{
MessageBox.Show(ep.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
public struct CALLLOGENTRY
{ public UInt32 cbSize;
public UInt64 ftStartTime;
public UInt64 ftEndTime;
public short iom; public bool fOutgoing;
public bool fConnected;
public bool fEnded; public bool fRoam;
public short cidt;
public IntPtr pszNumber;
public IntPtr pszName;
public IntPtr pszNameType;
public IntPtr pszNote;
};
[DllImport("phone.dll", EntryPoint = "PhoneOpenCallLog", SetLastError = true)]
private static extern int PhoneOpenCallLog(ref IntPtr pHandle); [DllImport("phone.dll", EntryPoint = "PhoneCloseCallLog", SetLastError = true)]
private static extern int PhoneCloseCallLog(IntPtr pHandle); [DllImport("phone.dll", EntryPoint = "PhoneGetCallLogEntry", SetLastError = true)]
private static extern int PhoneGetCallLogEntry(IntPtr pHandke, ref CALLLOGENTRY pEntry);
//下面是测试代码
/// <summary>
/// 获取通话记录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
IntPtr handle = IntPtr.Zero; CALLLOGENTRY entry = new CALLLOGENTRY();
PhoneOpenCallLog(ref handle);
entry.cbSize = (uint)Marshal.SizeOf(entry); if (handle != IntPtr.Zero)
{ listView.Items.Clear();
listView.Columns[0].Width = this.Width;
while (PhoneGetCallLogEntry(handle, ref entry) == 0)
{ string phoneNumber = Marshal.PtrToStringUni(entry.pszNumber);
string name = Marshal.PtrToStringUni(entry.pszName);
if (name == null)
{
name = string.Empty;
} ListViewItem item = new ListViewItem(phoneNumber.Trim());
item.SubItems.Add(name.Trim()); listView.Items.Add(item);
}
PhoneCloseCallLog(handle); }
else
{ int error = Marshal.GetLastWin32Error();
}
}
catch (Exception ep)
{
MessageBox.Show(ep.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货