急!急!急! Winform如何将文字写入到浏览器的文本框

养 家 糊 口 2019-12-12 05:32:56
真是个奇葩需求,搜了很多文章,没找到解决方案,只能来这里请教各位大神了!!!

需求详情:点击winform窗口上的提交按钮,将窗口上的textbox的值发送到某浏览器上的文本框
...全文
584 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40142095 2020-01-15
  • 打赏
  • 举报
回复
用webSocket
9点0频道 2020-01-15
  • 打赏
  • 举报
回复
引用 25 楼 养 家 糊 口的回复:
[quote=引用 22 楼 9点0频道 的回复:]
找到文本框的位置
模拟点击,输入。

问题就在这里,我用了句柄,发现根本获取不到网页上输入框的句柄[/quote] 不用句柄,保持你的网页在最前面,用js让输入框获取焦点,这样再Ctrl v
养 家 糊 口 2020-01-15
  • 打赏
  • 举报
回复
引用 22 楼 9点0频道 的回复:
找到文本框的位置
模拟点击,输入。

问题就在这里,我用了句柄,发现根本获取不到网页上输入框的句柄
datafansbj 2020-01-13
  • 打赏
  • 举报
回复
这种需求是不严谨的。web 上为了安全(预防机器人、暴力破解、自动探测等黑客行为),增加了很多限制,即使你实现了一种方法,说不定浏览器升级后就不好用了。当然探索一下还是可以的,用在工程上是不行的。
data-v 2020-01-12
  • 打赏
  • 举报
回复
我5楼前半部分被你吃了?
9点0频道 2020-01-12
  • 打赏
  • 举报
回复
找到文本框的位置 模拟点击,输入。
肥胖的柠檬 2020-01-04
  • 打赏
  • 举报
回复
别人代码都给你写好了 https://www.cnblogs.com/zeshao/p/7877747.html
肥胖的柠檬 2020-01-04
  • 打赏
  • 举报
回复
搜索: SignalR WebSocket 使用 SignalR 就搞定了,不过你要写JS
货郎大叔 2020-01-04
  • 打赏
  • 举报
回复

string uri = @"http://www.baidu.com";
System.Diagnostics.Process.Start(uri);
Thread.Sleep(1000);
Clipboard.SetText("msg");
SendKeys.SendWait("(^v)");
1
W2KEXP 2020-01-03
  • 打赏
  • 举报
回复
引用 7 楼 养 家 糊 口的回复:
[quote=引用 4 楼 enaking 的回复:] 你是用了webbrowser控件吗,你要知道页面源码,然后get到文本框就可以赋值了。
引用 5 楼 WQR1994 的回复:
IE可以,用UI Automation;Chrome无法直接做到,可以参考UIBot;其他浏览器不了解。考虑用WebBrowser控件操作DOM实现。
引用 6 楼 WQR1994 的回复:
还可用图像识别,找到文本框……Y(^_^)Y
不是WebBrowser,拿东西太难用,而且仅限于IE内核。我的需求就是两个不相干的东西,一个浏览器,一个winform[/quote] 6楼正解,屏幕图像识别好用!
  • 打赏
  • 举报
回复
用2楼说的就可以啊,C#使用Selenium
养 家 糊 口 2020-01-02
  • 打赏
  • 举报
回复
引用 15 楼 行走的小强 的回复:
IE界面是你自己写的吗,如果是的话,可以通过WCF通信将winform值传过去,当然需要了解js的一些东西哦

两个程序毫无关联,这是难点所在,没办法通信的
行走的小强 2019-12-26
  • 打赏
  • 举报
回复
IE界面是你自己写的吗,如果是的话,可以通过WCF通信将winform值传过去,当然需要了解js的一些东西哦
养 家 糊 口 2019-12-25
  • 打赏
  • 举报
回复
引用 13 楼 养 家 糊 口 的回复:
[quote=引用 11 楼 大然然 的回复:] 有个最笨的方法能实现,cs程序模拟鼠标移动和点击,模拟键盘输入,但有个前提是你的网页要最大化并且不能改变,然后必须是最上层窗口,我以前做过模拟输入游戏登录界面的账号密码输入和点击登录按钮,网页应该也可以
在一个winform窗体内,很容易实现,但是,两个毫不相干的程序,一个是网页上的任意文本框,一个是winform窗体,这就没办法通信了[/quote] 我的winform是TopMost的,最上层
养 家 糊 口 2019-12-25
  • 打赏
  • 举报
回复
引用 11 楼 大然然 的回复:
有个最笨的方法能实现,cs程序模拟鼠标移动和点击,模拟键盘输入,但有个前提是你的网页要最大化并且不能改变,然后必须是最上层窗口,我以前做过模拟输入游戏登录界面的账号密码输入和点击登录按钮,网页应该也可以
在一个winform窗体内,很容易实现,但是,两个毫不相干的程序,一个是网页上的任意文本框,一个是winform窗体,这就没办法通信了
养 家 糊 口 2019-12-25
  • 打赏
  • 举报
回复
引用 9 楼 andy_wanhl 的回复:
不要慌,有需求就好办。
引用 楼主 养 家 糊 口 的回复:
老哥,你说的是WebBrowser,这个我会用,但是不符合我的需求
大然然 2019-12-24
  • 打赏
  • 举报
回复
有个最笨的方法能实现,cs程序模拟鼠标移动和点击,模拟键盘输入,但有个前提是你的网页要最大化并且不能改变,然后必须是最上层窗口,我以前做过模拟输入游戏登录界面的账号密码输入和点击登录按钮,网页应该也可以
andy_wanhl 2019-12-23
  • 打赏
  • 举报
回复
下面这种是使用默认浏览器打开指定网址,使用复制粘帖到页面输入框,当然得已有焦点,若没有,可使用tab键获焦。 然后打开网页需要些时间,程序睡眠1秒。

string uri = @"http://www.baidu.com";
System.Diagnostics.Process.Start(uri);
Thread.Sleep(1000);
Clipboard.SetText("msg");
SendKeys.SendWait("(^v)");
andy_wanhl 2019-12-23
  • 打赏
  • 举报
回复
不要慌,有需求就好办。
引用 楼主 养 家 糊 口 的回复:
andy_wanhl 2019-12-23
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApp15
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {            
            Uri uri = new Uri("http://www.baidu.com");
            webBrowser1.Navigate(uri);
            webBrowser1.DocumentCompleted += delegate
            {
                HtmlDocument doc = webBrowser1.Document;
                HtmlElementCollection elementcol = doc.GetElementsByTagName("input");
                foreach (HtmlElement ele in elementcol)
                {
                    if (!ele.GetAttribute("type").Equals("submit"))
                    {
                        ele.SetAttribute("value", "123");
                    }
                }
            };
        }
    }
}
加载更多回复(7)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧