Q2:如何从winCE 5.0设备读取短信。 [英] Q2: how to read SMS from winCE 5.0 device.?
问题描述
我想在VC ++ .net中开发一个应用程序,它从PND71C_EN(ARMV4I)设备读取短信。
我试过以下代码来阅读短信
代码:
// THREADSTRUCT * ts =(THREADSTRUCT *)pArg;
//THREADSTRUCT* ts = (THREADSTRUCT*)pArg;
  SMS_ADDRESS smsaDestination;
SMS_ADDRESS smsaDestination;
  TEXT_PROVIDER_SPECIFIC_DATA tpsd;
TEXT_PROVIDER_SPECIFIC_DATA tpsd;
  SMS_HANDLE smshHandle;
SMS_HANDLE smshHandle;
  HANDLE hRead = CreateEvent(NULL,FALSE,FALSE,NULL);
HANDLE hRead = CreateEvent (NULL, FALSE, FALSE, NULL);
  //打开短信处理
// Open an SMS Handle
  HRESULT HR = SmsOpen(SMS_MSGTYPE_TEXT,SMS_MODE_RECEIVE,
HRESULT hr = SmsOpen (SMS_MSGTYPE_TEXT, SMS_MODE_RECEIVE,
             &安培; smshHandle, & hRead);
&smshHandle, &hRead);
  if(hr!= ERROR_SUCCESS){
if (hr != ERROR_SUCCESS) {
            返回0;
return 0;
  }
}
  //等待邮件进来。
// Wait for message to come in.
  int rc = WaitForSingleObject(hRead,30000);
int rc = WaitForSingleObject (hRead, 30000);
  if(rc!= WAIT_OBJECT_0){
if (rc != WAIT_OBJECT_0) {
    SmsClose(smshHandle);
SmsClose (smshHandle);
     返回0;
return 0;
  }
}
  memset(& smsaDestination,0,sizeof(smsaDestination));
memset (&smsaDestination, 0, sizeof (smsaDestination));
  DWORD dwSize,dwRead = 0;
DWORD dwSize, dwRead = 0;
  hr = SmsGetMessageSize(smshHandle,& dwSize);
hr = SmsGetMessageSize (smshHandle, &dwSize);
  if(hr!= ERROR_SUCCESS){
if (hr != ERROR_SUCCESS) {
      dwSize = 1024;
dwSize = 1024;
     返回0;
return 0;
  }
}
  char * pMessage =(char *)malloc(dwSize + 1);
char *pMessage = (char *)malloc (dwSize+1);
  memset(& tpsd,0,sizeof(tpsd));
memset (&tpsd, 0, sizeof (tpsd));
  HR = SmsReadMessage(smshHandle,NULL,&安培; smsaDestination,NULL,
hr = SmsReadMessage (smshHandle, NULL, &smsaDestination, NULL,
            &NBSP ;(PBYTE)pMessage,的dwSize,
(PBYTE)pMessage, dwSize,
             (PBYTE)及tpsd,的sizeof(TEXT_PROVIDER_SPECIFIC_DATA),
(PBYTE)&tpsd, sizeof(TEXT_PROVIDER_SPECIFIC_DATA),
             &安培; dwRead);
&dwRead);
  if(hr == ERROR_SUCCESS){
if (hr == ERROR_SUCCESS) {
      CString outputStr;
CString outputStr;
      outputStr.Format(L" dst =%s,msg =%s",smsaDestination.ptsAddress,pMessage);
outputStr.Format(L"dst=%s,msg=%s",smsaDestination.ptsAddress,pMessage);
      AfxMessageBox(outputStr);
AfxMessageBox(outputStr);
  } else
} else
       免费(pMessage);
free (pMessage);
  SmsClose(smshHandle);
SmsClose (smshHandle);
    返回0;
return 0;
.................................. .................................................. .................................................. .........................
...............................................................................................................................................................
错误:
但是在我编译项目时给了我以下错误,尽管我已经包含了"sms.h"和"sms.h"。标题
错误 1
错误LNK2019:未解决函数"unsigned long __cdecl ThreadRecordMsg(void)"中引用的外部符号SmsReadMessage (?ThreadRecordMsg @@ YAKXZ)的
跨度> Smsreceiver2Dlg.obj的 跨度> Smsreceiver2
Error 1 error LNK2019: unresolved external symbol SmsReadMessage referenced in function "unsigned long __cdecl ThreadRecordMsg(void)" (?ThreadRecordMsg@@YAKXZ) Smsreceiver2Dlg.obj Smsreceiver2
错误LNK2019:未解析的外部符号SmsGetMessageSize在函数"unsigned long __cdecl ThreadRecordMsg(void)"中引用(?ThreadRecordMsg @@ YAKXZ)的
跨度> Smsreceiver2Dlg.obj的 跨度> Smsreceiver2
推荐答案
包括一个标题只是定义了一些符号;为了让链接器解析这些符号,你必须链接到实现它们的库,在你的情况下,它是sms.lib
Including a header simply defines some symbols; in order for the linker to resolve such symbols you have to link to the library which implements them which, in your case, is sms.lib
这篇关于Q2:如何从winCE 5.0设备读取短信。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!