0

特定のダイアログにデータを入力してからダイアログを送信するプロセスを自動化しようとしていますが、データ入力部分は正常に機能しますが、データを自動的に入力すると、手動入力時のように [承認] ボタンが有効になりません。

その結果、いくつかの方法でボタンを有効にしようとしましたが、有効になりません。

ダイアログの画像

EnableWindow を使用するか、SendMessage で WM_ENABLED メッセージを送信しようとしましたが、どちらも機能しませんでした。

ボタン ハンドルを取得し、Disabled スタイル (P/INVOKE を使用する VB.NET) を削除しようとするコードを次に示します。Spy++ を使用して、次のアプローチで WS_DISABLED スタイルが削除されたことを確認しましたが、ボタンは引き続き無効として表示されます。

Private Shared Sub ProceedWithRebuild(ByVal mWindow As IntPtr)
    Dim proceedButton As IntPtr
    Dim style As Long

    proceedButton = FindWindowEx(mWindow, IntPtr.Zero, Nothing, "&Proceed")

    style = GetWindowLong(proceedButton, WindowLongFlags.GWL_STYLE)

    style = style And (Not WS_DISABLED)

    SetWindowLong(proceedButton, WindowLongFlags.GWL_STYLE, CType(style, IntPtr))

    UpdateWindow(mWindow)

    SendMessage(proceedButton, WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero)
    SendMessage(proceedButton, WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero)

    Thread.Sleep(500)
End Sub
4

2 に答える 2

1

への呼び出しの後にこのコードを試してくださいFindWindowEx():

if (proceedButton != NULL)
    EnableWindow(proceedButton, TRUE);
于 2013-05-01T06:17:01.723 に答える