4

別のアプリケーション内でボタンを押すアプリケーションの作成に成功しました。現在、ループでボタンの押下を繰り返そうとしていますが、アプリケーションがハングしますが、その理由がわかりません。

環境

私にとって非常に役立つアプリケーションがありますが、それを開発した人はすべてを考えていませんでした. アプリケーション内のある時点で、ダイアログ ボックスが開き、既存のデータをアップロードされたデータで置き換えることを確認するよう求められます。クリックOKして同意する必要がありますが、問題は、このアプリケーションに大量のデータをアップロードし、「すべてに適用」チェックボックスがないことです。OKそのため、繰り返しクリックする必要があります。OKしたがって、ダイアログが表示されなくなるまでボタンを押すアプリケーションに取り組んでいます。

コード

ボタンを1回クリックするコード(これは機能します)...

private void btnOKloop_Click(object sender, System.EventArgs e)
{
    int hwnd=0;
    IntPtr hwndChild = IntPtr.Zero;

    //Get a handle for the Application main window
    hwnd = FindWindow(null, "Desired MessageBox");

    hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "OK");

    //send system message
    if (hwnd != 0)
    {
        SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);  
    }
    else
    {
        MessageBox.Show("Button Could Not Be Found!", "Warning", MessageBoxButtons.OK);
    }

}

ループでボタンをクリックするコード (これはハングします)...

private void btnOKloop_Click(object sender, System.EventArgs e)
{
    int hwnd=0;
    IntPtr hwndChild = IntPtr.Zero;

    hwnd = FindWindow(null, "Desired MessageBox");

    hwndChild = FindWindowEx((IntPtr)hwnd, IntPtr.Zero, "Button", "OK");

    do 
    {
        SendMessage((int)hwndChild, BN_CLICKED, 0, IntPtr.Zero);  
    } while (hwnd != 0);
4

1 に答える 1