CreateProcessでURLを開く

[戻る]
ポッキー 2002/01/23(水) 01:01:03
CreateProcessでURLを開きたいんだけど

STARTUPINFO si;
PROCESS_INFORMATION pi;
CreateProcess(NULL, http://www.yahoo.co.jp/, NULL, NULL, FALSE, 
NORMAL_PRIORITY_CLASS, NULL, curdir, &si, &pi);

ではだめでした。
サイトを開けるようにしたソースを教えてください。

NGA 2002/01/23(水) 09:45:16
>CreateProcess(NULL, http://www.yahoo.co.jp/, NULL, NULL, FALSE, 
少なくともこのままではURLの"http://"以降がコメントになる。

Ahoo.co.jp 2002/01/23(水) 16:49:34
おいおい初心者は無理しないように。そこ直しただけじゃできないってば。
少なくともどころかCreateProcessでURLを開くことの回答できなくて
悔しくて失敗につけこむようなことしかできない初心者はだまってなさい。
少なくともあなたには回答できる知識がないことがわかったので
あなたはここにレスをつけないでね。

2002/01/23(水) 18:15:20
CreateProcess じゃなくて、ShellExecute じゃぁダメなんでしょうか?
そのほうが、簡単に実現できると思いますが。

どうしても、ってことなら
1.HTMLファイル開くアプリをさがす
2.そのHTMLファイルを1でさがしたアプリで開く
って手順になるのかなぁと思いますが。
以下、思いつきサンプルです。ヒントにでもなればよいですが。

(HTMLっていじった事ないですが http://www.yahoo.co.jp/http://www.yahoo.co.jp/index.html を示すであってましたっけ?)

// ここから
    // 対応アプリケーションの検索 /////////////////////////////////////////
    char exec_apl[1024];
    FindExecutable(
        "http://www.yahoo.co.jp/index.html",
        NULL,
        exec_apl);

    // 対応アプリケーションの起動 /////////////////////////////////////////
    STARTUPINFO  si;
    PROCESS_INFORMATION  pi;

    ZeroMemory( &si, sizeof( STARTUPINFO ));
    si.cb          = sizeof( STARTUPINFO );
    si.wShowWindow = SW_SHOWNORMAL;
    si.dwFlags     = STARTF_USESHOWWINDOW;

    char lpCommandLine[128];
    sprintf( lpCommandLine , "%s %s", 
                     exec_apl, "http://www.yahoo.co.jp/index.html" );

    if(CreateProcess( NULL,lpCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, 
&si, &pi))
    {
        // 起動成功
    }

// ここまで

> あなたはここにレスをつけないでね。
あなたはここにレスをつけないでね。

NGA 2002/01/23(水) 18:19:37
あ、なんか言われてる。

STARTUPINFO si;
PROCESS_INFORMATION pi;

memset(&si, 0x00, sizeof(si));
si.cb = sizeof(si);

CreateProcess(szExeFilePath, "/open http://www.yahoo.co.jp/",
    NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);

szExeFilePathは関連付けられたブラウザのパス。

ShellExecute使ったほうが楽だけど。

NGA 2002/01/23(水) 18:27:17
「ん」さんと似てしまいましたようです。

>FindExecutable(
>    "http://www.yahoo.co.jp/index.html",
>    NULL,
>    exec_apl);
え〜っと、ローカルで実在しないと無理だと思います。
というわけで、空ファイルを作ってからそのファイルを足掛かりにするのはどうでしょう。

2002/01/24(木) 09:33:38
> え〜っと、ローカルで実在しないと無理だと思います。
という事なので FindExecutable について何通りか試してみました。

1."http://www.yahoo.co.jp/index.html"を指定→失敗
2."C:\temp\a.html"(ローカルにも実在しないファイル名)を指定→失敗
3."C:\temp\home.html"(ローカルに存在するファイル名)を指定→成功

という結果になりました。なるほど。
個人的には末尾の拡張子情報から対応するアプリケーションを検索して
くれるものとばかり思っていましたが、ファイルとして存在しないと
だめなんですね。

古いスレッドには追加発言できません。