プロが教える店舗&オフィスのセキュリティ対策術

指定したインアクティブウィンドウを常に手前に表示させたいのですが,どのようにすればよいのでしょうか?

最後に示した参考サイトにあるように,このようなことは可能なようですが,設定方法が分かりません.
OSはXPを使用しています.

何かwindowsの設定をすれば出来るのでしょうか?それともコードを書かないといけないのでしょうか?

手前に表示させたいインアクティブウィンドウの内容は,ネットワークカメラで,リアルタイムに撮影している映像です.アクティブにしたいウィンドウはコマンドプロンプトです.カメラの映像を全画面で見つつ,キーボード入力をしたいのです.コマンドプロンプトで,実行するプログラムはVC++で書かれたもので,キーボード入力を受け付け,それに応じて他のPCに,ソケット通信で命令を送るという内容です.ws2_32.libを使用しています.

また,何か他に良い方法があれば教えていただければ幸いです.
初心者で知識が少なく,申し訳ありませんが,よろしくお願い致します.

[参考サイト]
http://e-words.jp/w/E382A4E383B3E382A2E382AFE383 …
インアクティブウィンドウはアクティブウィンドウの背景に隠れるが、設定により、インアクティブでも常に手前に表示させることもできる。

A 回答 (2件)

>指定したウィンドウ


ウィンドウはウィンドウハンドルで管理しています。
(1)ハンドルの値を知っている
(2)ウィンドウのクラス名を知っている
(3)ウィンドウのタイトルバーを知っている
のいずれかが必要です。(2)、(3)ではFindWindowやEnumWindowsを
使用してウィンドウを見つけます。
ウィンドウハンドルを把握できたらSetWindowPosでZオーダを最前面に
設定すれば完了です。
目的のウィンドウハンドルを得る方法がまちまちなので、一般的な
プログラムやWindowsの設定でどうにかなるものではありません。
つまり、コードを書かないといけません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
なるほど,やはりコードを書く必要があるんですね.
頑張ってみます.ありがとうございます.

お礼日時:2009/01/20 00:52

 こんばんは。



 件のウィンドウはCreateWindowで作成している部分がソース上にあるのでしょうか。
 でしたら、CreateWindowの拡張スタイルに

 WS_EX_TOPMOST

 を指定して下さい。
 ソース上に見えていなくてもウィンドウハンドルが手元にあれば(何らかの手段で取って来れるなら)、

 const long lExStyle = ::GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_TOPMOST;
 ::SetWindowLong(hWnd, GWL_EXSTYLE, lExStyle);

 で出来ると思います。

 C++/CLIでしたら、デザインの「プロパティ」→「ウィンドウスタイル」→「TopMost項目」をTrueにして見て下さい。
    • good
    • 0
この回答へのお礼

詳しいご説明,ありがとうございます.
しかし,プログラムはコンソールアプリケーションなので,CreateWindowなどは使っていません.
開発環境はVC++2008で,プロジェクトの種類はWin32,テンプレートでWin32コンソールアプリケーションを選択しました.
初めの質問で書いておくべきでした.申し訳ありません.

お礼日時:2009/01/19 23:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています