基本的に、この小型の Windows フォーム C# (.NET 3.5) アプリケーションは、イベントのリッスン中に問題を抱えています。
フォームに 2 つのボタンを設定して、2 つの主要な機能を直接呼び出します (これらはキーストロークを別のプロセス ウィンドウに送信し、ブール値を切り替えて送信済みかどうかを表示します)。
問題が発生している部分は、2 つのボタンと同じ機能を自動的に起動するために監視している実際のイベントです。イベントハンドラーは、含まれていない場合にのみ成功しません MessageBox.Show("Blah Blah");
例:
public tester()
InitializeComponent();
wsiRemote.clsWsiEventsClass Events = new wsiRemote.clsWsiEventsClass();
Events.AuthorRecordStarted += new __clsWsiEvents_AuthorRecordStartedEventHandler(Events_AuthorRecordStarted);
private static bool _pedcheck = false;
public static void SendkeyT()
{
foreach (Process w in System.Diagnostics.Process.GetProcessesByName("WinScribe Internet Author"))
{
IntPtr hwnd = w.MainWindowHandle;
SetForegroundWindow(hwnd);
}
if (_pedcheck == false)
{
foreach (Process p in System.Diagnostics.Process.GetProcessesByName("Pedable"))
{
IntPtr hWnd = p.MainWindowHandle;
SetForegroundWindow(hWnd);
InputSimulator.SimulateKeyDown(VirtualKeyCode.CONTROL);
InputSimulator.SimulateKeyPress(VirtualKeyCode.VK_D);
InputSimulator.SimulateKeyUp(VirtualKeyCode.CONTROL);
_pedcheck = true;
}
else
{
MessageBox.Show("Boolean Failure");
}
}
public void button1_Click(object sender, EventArgs e)
{
SendkeyT();
}
public void Events_AuthorRecordStarted(string msg)
{
// MessageBox.Show("Recording Started");
SendkeyT();
}
MessageBox のコメントを外すと、起動してボックスがユーザーに表示されます。ユーザーが [OK] をクリックすると、関数が適切に起動します。メッセージボックスを含めないと、キーが送信されてアクティブになっているウィンドウがタスクバーで点滅し始めることに気づきました。したがって、フォアグラウンド設定に関係していると想定しています。
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
誰か提案があれば、私はそれを大いに感謝します。
ありがとう!