環境はWinXP VisualStudio.NET2003 VC++ MFC です。
また質問です。
画面にはエディットボックス1つ、ボタン1つを貼っています。
インターネット検索をします。
1.エディットボックスに検索したいキーワードを入力します。
2.ボタンを押します。
3.ブラウザが開き1のキーワードを使い、グーグルでインターネット検索した結果が表示され
ます。
3の部分がわかりません。
処理の方法を教えてください。
3の部分を段階的に分けましょう。
3''. ブラウザを起動する。
3'. ブラウザを起動し、グーグルのトップページを表示する。
3. ブラウザが開き1のキーワードを使い、グーグルでインターネット検索した結果が表
示される。
どこまでできます?
グーグルの検索のURLのsearch?q=のあとにURLエンコードしたキーワードをつなげ
ShellExecuteで実行という方法はどうかな?
やったことないので成功するか知りませんが
検索してみるとできそうな感触。
たいちうさん
3'.までできます。
3.はわかりません。
> 3'.までできます。
3'は、どんなコードですか。
> 3.はわかりません。
wclrp ( 'o')さんが書いている通りです。
3'で使ったURLを、パラメータ付きのURLに換えるようなイメージです。
(HTTPのGETメソッドを使う)
3'と3の間にもう1ステップあっても良かったかもしれない。
「グーグルの検索結果が表示されているURLをコピーして、
プログラムにあらかじめ書いておいて、
ブラウザを起動し、グーグルの検索結果のページを表示する。」
> 3'は、どんなコードですか。
サンプルプログラムを探してきてURLの部分を変えました。
ボタンをクリックするとグーグルのトップページが表示されます。
void CTree_basisView::OnBnClickedButton1()
{
CString ss1 = _T( http://www.google.co.jp/);
HINSTANCE ret = ShellExecute(NULL, _T(open), _T(iexplore.exe),
ss1, NULL, SW_SHOWNORMAL);
}
URLを次のものに差し換えると?
http://www.google.co.jp/search?hl=ja&q=%E3%82%89%E3%82%89%E3%82%89
(関連検索の科学の子に笑った)
あとは、URLエンコードのみ。以下が参考になると思う。
http://www31.ocn.ne.jp/~yoshio2/vcmemo20-1.html
ボタンを押してもトップが表示されるだけです。
どこを直せばいいですか?
m_urlはCString型のエディットボックスのメンバ変数です。
void CTree_basisView::OnBnClickedButton3()
{
CString strURL;
CString strChar;
for(int i = 0; m_url[i] != '\0'; i++){
// 英数字 _ . - は変換しないでそのまま
if(isalnum((BYTE)m_url[i]) || m_url[i] == '_' || m_url[i]
== '.' || m_url[i] == '-'){
strChar = m_url[i];
}
// スペースは + に変換
else if(m_url[i] == ' ')
{
strChar = '+';
}
// それ以外は %3B のような形式に変換
else
{
strChar.Format(%%%02X, (BYTE)m_url[i]);
}
strURL += strChar;
}
CString ss1 = http://www.google.co.jp/search?hl=ja&lr=&q= + strURL;
HINSTANCE ret = ShellExecute(NULL, _T(open), _T(iexplore.exe),
ss1, NULL, SW_SHOWNORMAL);
}
関数の最初で、UpdateData(TRUE); が必要ではなかったっけ。
だとすると、m_urlに何が入っているか調べれば、
辿り付けたのではと思う。
> 関数の最初で、UpdateData(TRUE); が必要ではなかったっけ。
検索ができるようになりました。
ありがとうございました。
解決です。