.net 设置其他应用程序上的文本框值对话框PInvoke
是否可以使用PInvoke(或其他方法)更改另一进程拥有的对话框上文本框的值.net 设置其他应用程序上的文本框值对话框PInvoke,.net,textbox,dialog,pinvoke,sendkeys,.net,Textbox,Dialog,Pinvoke,Sendkeys,是否可以使用PInvoke(或其他方法)更改另一进程拥有的对话框上文本框的值 在.NET中开发。我假设像SetWindowText这样的调用的可用性将表明对文本框也可以这样做。我不想使用SendKeys。当然可以这样做。您可以查看my LinqToWindows库的源代码: 此库使用PInvoke获取通过LINQ where子句指定的窗口处理程序,获取子窗口的实例并更改其文本属性,如下所示(更改“打开文件”对话框窗口中所有编辑元素的文本): var shell=newshell(); var o
在.NET中开发。我假设像SetWindowText这样的调用的可用性将表明对文本框也可以这样做。我不想使用SendKeys。当然可以这样做。您可以查看my LinqToWindows库的源代码: 此库使用PInvoke获取通过LINQ where子句指定的窗口处理程序,获取子窗口的实例并更改其文本属性,如下所示(更改“打开文件”对话框窗口中所有编辑元素的文本):
var shell=newshell();
var openDialog=shell.Windows
.Where(x=>x.Text.Contains(“打开”))
.SingleOrDefault()
.Cast();
var edits=openDialog.OfType();
foreach(编辑中的变量编辑)
edit.Text=“Hello Word!”;
代码未经测试,但应该可以工作。请查看包含在LinqToWindows解决方案中的测试项目以获取更多示例。当然可以这样做。您可以查看my LinqToWindows库的源代码: 此库使用PInvoke获取通过LINQ where子句指定的窗口处理程序,获取子窗口的实例并更改其文本属性,如下所示(更改“打开文件”对话框窗口中所有编辑元素的文本):
var shell=newshell();
var openDialog=shell.Windows
.Where(x=>x.Text.Contains(“打开”))
.SingleOrDefault()
.Cast();
var edits=openDialog.OfType();
foreach(编辑中的变量编辑)
edit.Text=“Hello Word!”;
代码未经测试,但应该可以工作。请查看LinqToWindows解决方案中包含的测试项目以了解更多示例。只要文本框是窗口控件,就可以使用SetWindowText执行此操作。否则,您可能需要使用UIAutomation。您可以使用SetWindowText执行此操作,只要文本框是窗口控件。否则,您可能需要使用UIAutomation.Nice库。我可以让它工作,但我没有指望不能识别我要找的编辑“窗口”,除了在适当的编辑窗口之前迭代并找到静态窗口。Spy++列出了一个似乎没有改变的控件ID,但我不确定如何通过这个库实现它。很好的库。我可以让它工作,但我没有指望不能识别我要找的编辑“窗口”,除了在适当的编辑窗口之前迭代并找到静态窗口。Spy++列出了一个似乎没有改变的控件ID,但我不确定如何通过这个库实现它。
var shell = new Shell();
var openDialog = shell.Windows
.Where(x => x.Text.Contains("Open"))
.SingleOrDefault()
.Cast<OpenFileDialog>();
var edits = openDialog.OfType<Edit>();
foreach (var edit in edits)
edit.Text = "Hello Word!";