TabControl上の『選択されていないTabPage上の』ボタンをプログラムからクリックしたいんだが、どうすればいいのだ?

試したことは以下。
((Button^)ctrl)->PerformClick(); // ボタンが見えてないと(ボタンのあるTabPageが選択されていないと)ClickEventが発生しない(以下※1)
((Button^)ctrl)->OnClick(gcnew EventArgs()); // protected なメソッドなので呼べない
((Button^)ctrl)->Click->DynamicInvoke(gcnew array<Object^>(2){ctrl,gcnew EventArgs()}); // C3918、データメンバではないため、マルチキャストデリゲートに直接アクセス出来ない
((Button^)ctrl)->Click(ctrl, gcnew EventArgs()); // C3718, Clickにraiseメソッドがないから駄目

環境
.NET Framework3.5(Form), VC++/CLI, VS2008EE

目的
GUIの画面をバッチ処理しようとしていて、
ボタンの名前をスクリプトに書いておけば順にクリックしてくれる、みたいなものを作っている。
見えていればPerformClickは動作するので、今はその都度SelectedTabを切り替えて逃げているが、
バッチ中に一々画面が変わるので出来ればそのままで処理したい。