小编Nic*_*las的帖子

如何等待电子邮件意图完成并获得结果?

在我的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)

这很好用,但是我需要在我的应用中等待,直到用户完成电子邮件屏幕,并且还知道电子邮件是发送还是丢弃.

有人知道怎么做吗?

android email-client android-intent

9
推荐指数
1
解决办法
1万
查看次数

在WM_COPYDATA命令中获取64位数据而不是预期的32位DWORD

我有一个旧的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解决了这个问题,但我想"获取"基本概念,以便知道这可能会影响我的代码.

64-bit types windows-7

2
推荐指数
1
解决办法
1643
查看次数