Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 设置其他应用程序上的文本框值对话框PInvoke_.net_Textbox_Dialog_Pinvoke_Sendkeys - Fatal编程技术网

.net 设置其他应用程序上的文本框值对话框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

是否可以使用PInvoke(或其他方法)更改另一进程拥有的对话框上文本框的值


在.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!";