- 締切済み
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 意外の値が帰って来た経験がある方はいらっしゃいますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
Windows XP + VC++6.0 で試したのですが、とりあえず問題なかったけど、何かミスがあるのかな・・・。 私のところでもログオンしてから30~60秒くらいは、シェル関係の呼び出しが、ちゃんと出来ません。デバイスを全て認識するのに時間がかかっていて、待たされるようです。
自分でも使えそうなので作ってみました。適当にリファインしてみてください。 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);
補足
ありがとうございます。 もう少しでできそうなとこまでいきました。 新しいウインドウで開くことができたけど、 Win98から、IEのページ違反だったかな? 何かのエラーダイアログが表示されて、 IEが使えなくなってしまうんです。 IEを使うためにはWin98を再起動する必要がある状態です。 再起動してもう1度、EXEを実行しても、 CreateProcess は実行されません。 起動後にしばらくパソコンを使うと、いつのまにか CreateProcess が使える状態になっています。 今は、IEのエラーダイアログの原因より、 この、起動後すぐには CreateProcess が使えない という原因究明を考えています。 だいたい、起動後10分ぐらい、適当にパソコンを使っていると CreateProcess が実行できるようになります。 実行できない時の場合はエラー表示はありません。 今は CreateProcess でメモ帳を指定してやっています。 メモ帳なら、ページ違反とかいう問題もなく CreateProcess で実行できているけど、Win98起動後すぐに は CreateProcess でメモ帳も起動することができません。
お礼
ありがとうございます。 そういえば、Windows っていうOSは、起動して というか、起動し始めて、しばらく待たないと 一見、落ち着いたように見えても、正常に動作しない 部分があるらしいですねー。 BCC32 でコンパイルして、Win98 でまだ成功していません。