別のアプリケーション内でボタンを押すアプリケーションの作成に成功しました。現在、ループでボタンの押下を繰り返そうとしていますが、アプリケーションがハングしますが、その理由がわかりません。
環境
私にとって非常に役立つアプリケーションがありますが、それを開発した人はすべてを考えていませんでした. アプリケーション内のある時点で、ダイアログ ボックスが開き、既存のデータをアップロードされたデータで置き換えることを確認するよう求められます。クリック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);