問題を解決する最善の方法は、コードを修正することであることを知っているのは正しいことです。その場合、おそらくポップアップをトグル可能にします。
ただし、潜在的な回避策として使用できる可能性のあるこれを書きました。VBScript を使用してマルチスレッドをシミュレートし、 modal にキーを送信できるようにしますMsgbox
。コードを介してやりたいことを実行できると仮定するとSendDelayedKeys
、Msgbox
. Delay
100ミリ秒では不十分な場合があるため、状況に基づいて調整する必要がある場合があります。を変更するにはDelay
、次のように呼び出します: SendDelayedKeys 500
500 ミリ秒。
Sub SendDelayedKeys(Optional Delay As Long = 100, Optional keys As String = """ """)
Dim oFSO As Object
Dim oFile As Object
Dim sFile As String
sFile = "C:\SendKeys.vbs" 'Make this a valid path to which you can write.
'Check for the .vbs file.
If Not Len(Dir$(sFile)) Then
'Create the vbs file.
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.CreateTextFile(sFile)
oFile.WriteLine "Set WshShell = WScript.CreateObject(""WScript.Shell"")"
oFile.WriteLine "WScript.Sleep CLng(WScript.Arguments(0))"
oFile.WriteLine "WshShell.SendKeys WScript.Arguments(1)"
oFile.Close
End If
Shell "wscript C:\SendKeys.vbs " & Delay & " " & keys
End Sub
Sub ProofOfConcept()
'Using default parameters which sends a space after 100 milliseconds
SendDelayedKeys
MsgBox "I disappear on my own!"
End Sub
警告の言葉: を利用するソリューションSendKeys
は壊れやすいソリューションであり、可能な限り避ける必要があります。ただし、オプションが限られており、手動プロセスを回避する必要がある場合は、それが唯一のオプションになる場合があります。
SiddhartRout は、API 呼び出しを使用してこれを解決できることを正しく指摘しているので、毎秒メッセージ ボックスを閉じる C# コードのリンクを次に示します。