使用PROCESS.START()方法时C#:“登录失败:未知用户名或密码错误”错误

时间:2012-03-31 07:03:27

标签: .net wpf visual-studio-2010 c#-4.0

我尝试使用以下代码登录gmail:

private void button1_Click(object sender, EventArgs e)
{
    var user = new SecureString();
    foreach (char c in textBox3.Text)
    {
        user.AppendChar(c);
    }

    Process.Start("C:/Users/Indish/Desktop/chrome",
        "www.gmail.com", user, textBox4.Text);
}

程序说问题中提到的登录失败。所以,如果有人可以提供帮助.........提前致谢

2 个答案:

答案 0 :(得分:5)

首先,您正在使用错误的参数来重载您正在使用的方法。参数是:

Process.Start(fileName, userName, password, domain)

因此,您将www.gmail.com作为用户名发送,并将用户名作为密码发送,这就是您收到登录失败的错误消息的原因。

您需要使用带有五个参数的重载来发送参数并登录到方法:

Process.Start(fileName, arguments, userName, password, domain)

但是,它用于为用于运行程序的用户帐户提供登录,而不是将登录信息发送到程序。

如果网页支持,您可以在URL中发送登录信息:

Process.Start("C:/Users/Indish/Desktop/chrome", user + ":" + textBox4.Text + "@www.gmail.com");

否则,您需要在程序中嵌入浏览器控件,以便在加载后访问该表单。

答案 1 :(得分:-1)

但是,我可以帮助您,您在HTML交互中使用的代码在哪里?也许我是误会。您是将这些变量发布到Web服务器并检查响应,还是使用无返回方法来登录?

- 编辑 -

我道歉,我对Stack Overflow的操作还有点新意。你想要做的就是在应用程序内部的Web浏览器上使用webBrowser1.Document.GetElementById("IDNAME").SetAttribute("value", "data to put in");。对于FaceBook,网站的HTML已经在您尝试设置的框中嵌入了标记。

因此,考虑到这一点,您可以通过将“IDNAME”替换为“email”来使用标记的HTML ID,就像FaceBook上该框的ID一样。您可以在整个登录过程中执行此操作(包括使用webBrowser1.Document.GetElementByID("ID OF THE BUTTON HERE").InvokeMember("click");

您通常可以通过 F12 访问我的Chrome中的开发者控制台,或者使用Chrome浏览器中的CTRL + SHIRT + C, F12 访问开发人员控制台,以及< IE中的kbd> F12 。您正在寻找一个名为“Inspect Element”的工具来查找ID。