ここで教えて頂きhpを見ながら
下記のようにしてみましたが
hProcessからハンドルが取れません
エクスプローラは立ち上がりますし
わざとエラーを起こさせても返ってきます
でもハンドルは取れません
宜しくお願いいたします
SHELLEXECUTEINFO shellexe;
HANDLE shellexehandle;
memset( &shellexe, 0, sizeof(SHELLEXECUTEINFO) );
shellexe.cbSize = sizeof(SHELLEXECUTEINFO);
shellexe.fMask = SEE_MASK_NOCLOSEPROCESS;
shellexe.hwnd = HWND_DESKTOP;
shellexe.lpVerb = "explore";
shellexe.lpFile = "C:\\";
shellexe.lpParameters = NULL;
shellexe.lpDirectory = NULL;
shellexe.nShow = SW_SHOWNORMAL;
ShellExecuteEx( &shellexe );
hShell = shellexe.hInstApp;
shellexehandle = shellexe.hProcess;
No.2ベストアンサー
- 回答日時:
>違うハンドルが返ってきてるのでしょうか?
>SetWindowPos(shellexehandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
>で立ち上げたアプリを最前面固定にしたいのですが
hProcessは、プロセスハンドルです。で、hInstAppはインスタンスハンドルです。SetWindowPosで使用するのはウィンドウハンドルで、すべて別物です。
で、ご希望の処理を実現するには実はShellExecuteExを
使うことは出来ません。理由は、起動したプロセスの
プロセスIDが取得できないからです。
で、どのようにすればいいかというと、
1.FindExecutableで、関連付けされているアプリケーションを取得
2.CreateProcessで起動(CreateProcessならプロセスIDを取得できる)
3.EnumWindowsでウィンドウを列挙
4.列挙したウィンドウから、GetWindowThreadProcessIdで
そのウィンドウを持っているプロセスのプロセスIDを取得
5.起動したアプリのプロセスIDと同じかどうかチェックし、
同じだったらそのウィンドウのウィンドウハンドルを
引数にしてSetWindowPosを呼び出す
てな事をする必要があります。
注意が必要なのは、プロセスが起動直後にウィンドウを表示していない可能性がある点と、1つのプロセスは、複数のトップレベルウィンドウを持つ可能性がある点です。
No.1
- 回答日時:
エクスプローラ、新規に立ち上がってないんじゃないんですか?
>shellexe.lpVerb = "explore";
となっているので、おそらくこういうことだと。
>For example, if a document to be launched is a URL and an instance of Microsoft Internet Explorer is already running, it will display the document.
>No new process is launched, and hProcess will be NULL.
lpVervに指定するのではなくて、lpFileにexplorer.exeを指定しないとまずいようですね。
http://msdn.microsoft.com/library/default.asp?ur …
ありがとうございます
どうも違うようです
shellexe.lpVerb = "open";
にし他のアプリケーション立ち上げてみても
だめでした
もう少し考えてみます。
ただ失敗するとNULLは返ってきているので
違うハンドルが返ってきてるのでしょうか?
SetWindowPos(shellexehandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
で立ち上げたアプリを最前面固定にしたいのですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- 釣り リールについて 19ステラsw 8000hgを購入したのですがハンドルの左右交換はできるのでしょうか 2 2022/05/07 13:01
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- 輸入車 左ハンドルや並行輸入車を買う人 11 2022/12/24 15:29
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- 車検・修理・メンテナンス 210系クラウンのハンドルについて 1 2022/09/12 16:05
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- ノートパソコン Win10 EXCEL でのエラー 2 2022/04/03 15:57
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
ShellExecuteが起動したプロセスのID
C言語・C++・C#
-
外部exe呼び出しの方法 ShellExecuteEx, System...
C言語・C++・C#
-
プロセスIDからウィンドウハンドルを取得する方法
C言語・C++・C#
-
-
4
VC++からブラウザを起動して・・・
C言語・C++・C#
-
5
ShellExecuteでエクセルファイルが起動しません。
Visual Basic(VBA)
-
6
ShellExecuteの使い方について
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
C#でのbatファイル実行結果取得
-
SendMessageが失敗するときがある
-
他のアプリケーションをクリッ...
-
他のEXEが起動しているかの確認
-
Windowsでのfork方法
-
Process.Startの戻り値を後で取得
-
Visual C++からpingを実行して...
-
起動中のEXCELファイル(EXCEL...
-
プロセスが実行中かどうか調べ...
-
タスクマネージャーのプロセス...
-
プロセスのアタッチ・デタッチ...
-
別のプロセスの関数を呼び出す...
-
GetModuleFileNameでエラーが出...
-
C++でシェルを起動
-
非表示になったエクセルは?
-
explorer.exeが異様にメモリを食う
-
プロセスIDの取得方法について
-
異なるプロセス間でのイベント...
-
ウィンドウのタイトルからプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
C#でのbatファイル実行結果取得
-
explorer.exeが異様にメモリを食う
-
プロセスのアタッチ・デタッチ...
-
タスクマネージャーのプロセス...
-
怪しいプロセス教えてください。
-
非表示になったエクセルは?
-
Process.Startの戻り値を後で取得
-
ADOでアクセスのレコードに...
-
Windowsでのfork方法
-
他のコンピュータのプロセスを取得
-
プロセスIDからウィンドウハ...
-
SendMessageが失敗するときがある
-
プロセスが実行中かどうか調べ...
-
IISがフリーズ
-
ロードアベレージが高いのです...
-
プロセスIDの取得方法について
-
OSPFでプロセスを分ける意義に...
-
API関数 GetExitCodeProcess
-
別のプロセスの関数を呼び出す...
おすすめ情報