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

Yesを使用SendKeysして送信Yしてみてください。

于 2012-05-11T18:47:46.083 に答える
0

MAPILab の Advanced Security for Outlook を試してみてください。Outlook 2003 でも動作するはずです。これにより、アプリケーションへの永続的なアクセスが可能になります。ポップアップ ウィンドウは、Outlook アイテムに初めてアクセスしたときにのみ表示されます: http://www.mapilab.com/outlook/security/

アプリを実行する各マシンに Advanced Security をインストールする必要があります。非営利・商用問わず無料でご利用いただけます。

于 2012-05-12T14:42:18.883 に答える