2

我正在编写一个函数,允许用户将他们的电子邮件从 Outlook 导入到企业存储中。但是我遇到了安全提示问题,因为我们仍然有使用 Office 2003 的客户端,所以我们无法禁用它。

我正在尝试使用以下代码自动单击它:

    [DllImport("User32.dll")]
    public static extern Int32 FindWindow(String lpClassName, String lpWindowName);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int SendMessage(int hWnd, int msg, int wParam, IntPtr lParam);

    [DllImport("user32.dll", SetLastError = true)]
    public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);


    private const int WM_LBUTTONDOWN = 0x201;
    private const int WM_LBUTTONUP = 0x0202;

    private void button1_Click(object sender, EventArgs e)
    {
        int hwnd = 0;
        IntPtr hwndChild = IntPtr.Zero;
        while (true)
        {
            hwnd = FindWindow(null, "Microsoft Outlook");
            if (hwnd != 0)
            {
                hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "Yes");
                if (hwndChild != IntPtr.Zero)
                {
                    SendMessage((int)hwndChild, WM_LBUTTONDOWN, 0, IntPtr.Zero);
                    SendMessage((int)hwndChild, WM_LBUTTONUP, 0, IntPtr.Zero);
                }
                else
                {
                    //...
                }
            }
            else
            {
                //...
            }
            hwnd = 0;
        }
    }

但是当我尝试使用该代码时,我遇到了意想不到的问题。仅当我实际执行鼠标单击时,安全提示才会消失,即使在某些空白屏幕空间上也是如此。它有什么问题?

4

2 回答 2

0

您应该尝试使用SendKeys并发送YesY

于 2012-05-11T18:47:46.083 回答
0

试用 MAPILab 的 Outlook 高级安全功能。也应该适用于 Outlook 2003。这将使您可以永久访问您的应用程序 - 一个弹出窗口将仅在您第一次访问 Outlook 项目时显示:http: //www.mapilab.com/outlook/security/

必须在您运行应用程序的每台机器上安装高级安全性。它可免费用于非商业和商业用途。

于 2012-05-12T14:42:18.883 回答