|
以下のような処理を追加して、直前のウィンドウがアクティブになるようにはできたのですが、 SendKeys.Send("^(v)")で貼り付けできる時とできない時があり、動作が不安定です。 原因が分かる方がいらっしゃいましたらご教授下さい。 よろしくお願いいたします。
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Integer) As Integer End Function <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer End Function
Public Function GetText(ByVal hWnd As IntPtr) As String Dim length As Integer If hWnd.ToInt32 = 0 Then Return Nothing End If length = GetWindowTextLength(hWnd) If length = 0 Then Return Nothing End If Dim sb As New System.Text.StringBuilder("", length) GetWindowText(hWnd, sb, sb.Capacity + 1) Return sb.ToString() End Function
Me.TopMost = Trueの前にアクティブウィンドウのタイトル名を取得 Dim AWhwnd As IntPtr = GetForegroundWindow() Dim activeWindowName As String = GetText(AWhwnd) Me.TopMost = True
'直前にアクティブだったウィンドウをアクティブにする AppActivate(activeWindowName) SendKeys.Send("^(v)")
|