我正在用 C# 编写。
我有一个过程可以午餐嵌入在我的程序中的第三方应用程序。我还有一个 RichTextBox,我在其中编写文本,然后将其实时显示在嵌入式应用程序中。一切正常,但我需要移动鼠标,因为应用程序将获得焦点,然后刷新并向我显示更改。
这是过程:
private void button2_Click(object sender, EventArgs e)
{
System.IO.File.WriteAllText(@"ForParsing.txt", textBox1.Text);
pdf.StartInfo.FileName = @"yap.exe";
pdf.StartInfo.Arguments = "ForParsing.dvi";
pdf.Start();
pdf.WaitForInputIdle(-1);
SetParent(pdf.MainWindowHandle, this.splitContainer2.Panel1.Handle);
SetWindowPos(pdf.MainWindowHandle, HWND_TOP,
this.splitContainer2.Panel1.ClientRectangle.Left,
this.splitContainer2.Panel1.ClientRectangle.Top,
this.splitContainer2.Panel1.ClientRectangle.Width,
this.splitContainer2.Panel1.ClientRectangle.Height,
SWP_NOACTIVATE | SWP_SHOWWINDOW);
}
我在下面有一个用于 TextBox 的按键处理程序。当按键被按下时,我专注于嵌入在我的程序中的第三方应用程序。
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
System.IO.File.WriteAllText(@"ForParsing.txt", textBox1.Text);
//Focus on third party application
SetForegroundWindow(pdf.MainWindowHandle);
}
到现在为止还挺好。现在的问题:我希望焦点立即返回到课程在 TextBox 中的同一位置。我希望能够继续在 TextBox 中写入,就像除了实时刷新嵌入式应用程序之外什么都没有发生。
简而言之,我需要第三方应用程序立即刷新(获得焦点),并且我能够在我停止的当前位置在 TextBox 中不受干扰地输入。
有可能吗?有没有更好,更简单的解决方案?很乐意听取任何建议。
由于不允许我回答自己的问题,我将在这里写下:
我找到了修补人们问题的解决方案
这是我所做的:
私人无效richTextBox1_TextChanged(对象发件人,EventArgs e){ System.IO.File.WriteAllText(@“ForParsing.txt”,textBox1.Text);
//Focus on third party application
SetForegroundWindow(pdf.MainWindowHandle);
//Restore focus
pdf.WaitForInputIdle();
SetForegroundWindow(this.Handle);
this.Focus();
}
感谢大家的帮助