public void Buscar(string pregunta, ProcesamientoComandos pc, int x, int y, ProcesamientoComandos.Preguntas Pregunta) { m_Pregunta = Pregunta; if (Pregunta == ProcesamientoComandos.Preguntas.QueEs) { m_pc = pc; this.Visible = true; tbDireccionWeb.Text = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=que%20es%20" + pregunta.Replace(" ", "%20"); DocumentoCompleto = false; this.Location = new Point(x, y - this.Height); picXulia.Visible = true; rtbRespuesta.Visible = false; rtbRespuesta.Refresh(); picXulia.Refresh(); CargarBusquedaTexto(); if (BuscandoInformacion != "") { m_pc.Hablar(BuscandoInformacion); } webBrowser1.Navigate(tbDireccionWeb.Text); } else if (Pregunta == ProcesamientoComandos.Preguntas.QuienEs) { m_pc = pc; this.Visible = true; tbDireccionWeb.Text = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=quien+es+" + pregunta.Replace(" ", "+"); DocumentoCompleto = false; this.Location = new Point(x, y - this.Height); picXulia.Visible = true; picXulia.Refresh(); CargarBusquedaTexto(); webBrowser1.Navigate(tbDireccionWeb.Text); } else if (Pregunta == ProcesamientoComandos.Preguntas.QueTiempoHace) { m_pc = pc; this.Visible = true; tbDireccionWeb.Text = "https://www.google.es/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=que+tiempo+hace+en+" + pregunta.Replace(" ", "+"); DocumentoCompleto = false; this.Location = new Point(x, y - this.Height); picXulia.Visible = true; picXulia.Refresh(); CargarBusquedaTexto(); webBrowser1.Navigate(tbDireccionWeb.Text); } }
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { int pos_ini = 0; int pos_fin = 0; if (!DocumentoCompleto) { DocumentoCompleto = true; picXulia.Visible = false; picXulia.Refresh(); HtmlDocument document = webBrowser1.Document; document.ExecCommand("SelectAll", true, null); document.ExecCommand("Copy", false, null); document.ExecCommand("Unselect", true, null); rtbRespuesta.Visible = true; rtbRespuesta.Text = ""; if (m_Pregunta == ProcesamientoComandos.Preguntas.QueEs) { bool encontrado = false; if (Clipboard.ContainsText()) { pos_ini = 0; pos_fin = 0; string cad = Clipboard.GetText(); foreach (sBusquedasTexto b in Busquedas) { foreach (string s in b.texto_ini) { pos_ini = Strings.InStr(cad, s); if (pos_ini > 0) { cad = cad.Substring(pos_ini - 1 + s.Length); encontrado = true; break; } } if (encontrado) { encontrado = false; foreach (string s in b.texto_fin) { pos_fin = Strings.InStr(cad, s); if (pos_fin > 0) { encontrado = true; break; } } } if (encontrado) { string texto = cad.Substring(0, pos_fin - 1); if (texto != "") { rtbRespuesta.Visible = true; rtbRespuesta.Text = texto; m_pc.Hablar(texto); return; } } } } } else if (m_Pregunta == ProcesamientoComandos.Preguntas.QuienEs) { pos_ini = 0; pos_fin = 0; if (Clipboard.ContainsText()) { string cad = Clipboard.GetText(); string descripcion = ""; foreach (sBusquedasQuien b in BusquedasQuien) { pos_ini = Strings.InStr(cad, b.Localizador); if (pos_ini > 0) { //Localizamos el inicio de la línea donde hemos encontrado el localizador char c; int i = pos_ini - 1; c = cad[i]; while ((i > 0) && ((cad[i] != 10) && (cad[i] != 13))) { i--; } if (i > 0) { //Hemos localizado el inicio de la línea descripcion = cad.Substring(i + 1, pos_ini - i); cad = cad.Substring(pos_ini - 1 + b.Localizador.Length); rtbRespuesta.Text = descripcion + Environment.NewLine; //Localizamos las propiedades foreach (string s in b.propiedades) { pos_ini = Strings.InStr(cad, s); if (pos_ini > 0) { i = pos_ini; //Localizamos el final de la línea de la propiedad while ((i < cad.Length) && ((cad[i] != 10) && (cad[i] != 13))) { i++; } if (i < cad.Length) { rtbRespuesta.AppendText(cad.Substring(pos_ini - 1, i - pos_ini + 2) + "." + Environment.NewLine + Environment.NewLine); } } } if (rtbRespuesta.Text != "") { m_pc.Hablar(rtbRespuesta.Text); return; } } } } } } else if (m_Pregunta == ProcesamientoComandos.Preguntas.QueTiempoHace) { pos_ini = 1; pos_fin = 0; int i; string cad = ""; if (Clipboard.ContainsText()) { cad = Clipboard.GetText(); foreach (sBusquedasTiempo b in BusquedasTiempo) { pos_ini = 1; do { pos_ini = Strings.InStr(pos_ini, cad, b.propiedad); if (pos_ini > 0) { //Localizamos el inicio de la línea donde hemos encontrado el localizador i = pos_ini - 1; if (LocalizarInicioLinea(ref i, cad)) { if (i == pos_ini - 2) { //La propiedad comienza la línea i = pos_ini - 1; if (b.final_linea == "") { if (LocalizarFinLinea(ref i, cad)) { string resp = cad.Substring(pos_ini - 1, i - pos_ini); rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine); } } else { pos_fin = Strings.InStr(pos_ini, cad, b.final_linea); if (pos_fin > 0) { string resp = ""; if (b.final_linea_incluida) { resp = cad.Substring(pos_ini - 1, pos_fin - pos_ini - 1); } else { resp = cad.Substring(pos_ini - 1, pos_fin - pos_ini + b.final_linea.Length + 1); } rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine); } LocalizarFinLinea(ref i, cad); } //Comprobamos si necesitamos leer más líneas int lineas = b.num_lineas; while (lineas > 0) { pos_ini = i; i += 2; if (LocalizarFinLinea(ref i, cad)) { string resp = cad.Substring(pos_ini - 1, i - pos_ini); rtbRespuesta.AppendText(resp + Environment.NewLine + Environment.NewLine); lineas--; } else { break; } } pos_ini++; } else { pos_ini++; } } } } while (pos_ini > 0); } } } //else if } if (rtbRespuesta.Text != "") { m_pc.Hablar(rtbRespuesta.Text); Clipboard.Clear(); return; } m_pc.Hablar(NoLocalizado); }