在我的Android应用程序中,我可以使用以下方法以编程方式打开包含To,Subject和Message的默认电子邮件编辑器:
Intent emailIntent=new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, toemail);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
emailIntent.setType("text/plain");
emailIntent.setClassName("com.android.email", "com.android.email.activity.MessageCompose");
startActivity(emailIntent);
Run Code Online (Sandbox Code Playgroud)
这很好用,但是我需要在我的应用中等待,直到用户完成电子邮件屏幕,并且还知道电子邮件是发送还是丢弃.
有人知道怎么做吗?
我有一个旧的Windows应用程序,在Visual C++ 6.0中编译,我需要在x64平台上工作.该应用程序实际上似乎没问题,因为我使用了非常仔细的数据输入,但它与Outlook加载项交互,我必须重新编译为x64 dll才能将其加载到Outlook 64位版本中.
加载项使用WM_COPYDATA消息将数据发送到主应用程序,发送的数据是一个结构,如下所示:
{
DWORD dwData1;
char pszData2[32];
DWORD dwData3;
}
Run Code Online (Sandbox Code Playgroud)
事情没有用,所以我做了一些调试,事实证明,当64位加载项将数据发送到32位程序时,DWORD以64位(8字节)的形式进入,抛出结构完全关闭,因为程序需要32位DWORD(4个字节).查看内存中的数据,我可以看到每个DWORDS在32字节字符串之前和之后的额外4个字节.
现在在Stack Overflow和其他地方做一些研究.我认为,即使在x64平台上,作为微软的选择,DWORD仍然保留了32位长度.在64位域中执行TRACE(sizeof(DWORD))我得到4个字节,如预期的那样.
那么是什么原因导致我的64位加载项在每个DWORD中发送64位?
我通过改变我的结构定义来使用DWORD32解决了这个问题,但我想"获取"基本概念,以便知道这可能会影响我的代码.