|
分類:[.NET 全般]
お世話になります。
Excelより出力されたメッセージボックスをVB.NETで監視し、それを閉じるプログラムを作成したいのですが、
以下のコードでExcelのメッセージボックスらしきものを取得することができるのですが、
そこから閉じることができません。
Dim colWindows As Collection
colWindows = GetAllWindows()
Dim strProcess As New System.Text.StringBuilder
Dim bytClass As Byte()
Dim bytTitle As Byte()
Dim bytSpace As Byte()
' 親ウィンドウ毎のコレクションループ
For i = 1 To colWindows.Count
' 子コントロール毎のコレクション取得
Dim colChilds As Collection
colChilds = colWindows.Item(i)
If colChilds.Count > 1 Then ' 子コントロールを持つ物のみ対象
For j = 1 To colChilds.Count
bytSpace = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes(New String(" ", 50))
' コレクションからクラス名取得
bytClass = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes(colChilds.Item(j)(1))
If bytClass.Length < 30 Then
Dim p As Integer = bytClass.Length
ReDim Preserve bytClass(bytClass.Length + bytSpace.Length - 1)
Array.Copy(bytSpace, 0, bytClass, p, bytSpace.Length)
ReDim Preserve bytClass(30 - 1)
End If
Dim strClass As String = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(bytClass)
' コレクションから文字列取得
bytTitle = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetBytes(colChilds.Item(j)(2))
If bytTitle.Length < 50 Then
Dim p As Integer = bytTitle.Length
ReDim Preserve bytTitle(bytTitle.Length + bytSpace.Length - 1)
Array.Copy(bytSpace, 0, bytTitle, p, bytSpace.Length)
ReDim Preserve bytTitle(50 - 1)
End If
Dim strTitle As String = System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(bytTitle)
Next
End If
Next
参考でもよろしいのでなにか御教示いただけませんでしょうか。
|