• 締切済み

IEを新しい窓で CraeteProcess( )

CraeteProcess( ) を使ってサイトを新しいウインドウで 開くためのSDK、BCC32用のソースを教えてください。 ShellExecute(NULL,"open","http://~",NULL,NULL,SW_SHOWNORMAL); ではIEの設定に左右されるらしいから CraeteProcess( ) で やろうと思いました。 もう1つ質問なんだけど、C に限らず、   真理値は偽なら 0 、真なら 0 以外。 ということ説明をたまに見かけます。 実際やった結果では、どれも 真理値は偽なら 0 、真なら 1。 でした。 真の場合に 1 意外の値を返す場合があるから 1 ではなく、 0 以外 というふうに書いてあるんだと思うんだけど 真で 1 意外の値が帰って来た経験がある方はいらっしゃいますか?

みんなの回答

noname#30727
noname#30727
回答No.2

Windows XP + VC++6.0 で試したのですが、とりあえず問題なかったけど、何かミスがあるのかな・・・。 私のところでもログオンしてから30~60秒くらいは、シェル関係の呼び出しが、ちゃんと出来ません。デバイスを全て認識するのに時間がかかっていて、待たされるようです。

A__
質問者

お礼

ありがとうございます。 そういえば、Windows っていうOSは、起動して というか、起動し始めて、しばらく待たないと 一見、落ち着いたように見えても、正常に動作しない 部分があるらしいですねー。 BCC32 でコンパイルして、Win98 でまだ成功していません。

noname#30727
noname#30727
回答No.1

自分でも使えそうなので作ってみました。適当にリファインしてみてください。 static TCHAR iesk[] = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE"); static TCHAR url[] = _T("http://oshiete.goo.ne.jp/"); static TCHAR curdir[] = _T("C:\\"); TCHAR cmdline[1024]; HKEY key; DWORD type = REG_SZ; DWORD size = 1024; STARTUPINFO si; PROCESS_INFORMATION pi; RegOpenKeyEx(HKEY_LOCAL_MACHINE, iesk, 0, KEY_QUERY_VALUE, &key); RegQueryValueEx(key, NULL, NULL, &type, (LPBYTE)cmdline, &size); lstrcat(cmdline, _T(" ")); lstrcat(cmdline, url); ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.wShowWindow = SW_SHOW; CreateProcess(NULL, cmdline, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, curdir, &si, &pi);

A__
質問者

補足

ありがとうございます。 もう少しでできそうなとこまでいきました。 新しいウインドウで開くことができたけど、 Win98から、IEのページ違反だったかな? 何かのエラーダイアログが表示されて、 IEが使えなくなってしまうんです。 IEを使うためにはWin98を再起動する必要がある状態です。 再起動してもう1度、EXEを実行しても、 CreateProcess は実行されません。 起動後にしばらくパソコンを使うと、いつのまにか CreateProcess が使える状態になっています。 今は、IEのエラーダイアログの原因より、 この、起動後すぐには CreateProcess が使えない という原因究明を考えています。 だいたい、起動後10分ぐらい、適当にパソコンを使っていると CreateProcess が実行できるようになります。 実行できない時の場合はエラー表示はありません。 今は CreateProcess でメモ帳を指定してやっています。 メモ帳なら、ページ違反とかいう問題もなく CreateProcess で実行できているけど、Win98起動後すぐに は CreateProcess でメモ帳も起動することができません。

関連するQ&A