あるプロセスからForm起動後について

解決


alvin  2010-01-18 19:23:42  No: 146700  IP: [192.*.*.*]

1.あるプロセスからEXE形式のWindowsFormを実行しました。
2.起動したFormは起動されるが、その後アクティブでない状態になり、Winodwsのタスクバーに表示されているFormのタスクが光る状態になります。

3.2の問題を解決するために、起動対象のプロジェクトに入って、「アプリケーションフレームワークを有効にする」のチェックを外しました。

4.3の解決案にすると、フォームをスタイルが変わってしまいます。


フォームのスタイルはそのままにして、プロセス起動ご、タスクバーでピカピカ光らないようするためにはどうすればいいでしょうか?

編集 削除
alvin  2010-01-18 19:26:01  No: 146701  IP: [192.*.*.*]

開発環境はVS2008、VISTAです〜

編集 削除
 2010-01-19 21:23:51  No: 146702  IP: [192.*.*.*]

Application.EnableVisualStyles()を使えば、
、「アプリケーションフレームワークを有効にする」のチェックを外しても
フォームのスタイルはそのままになるとおもいます。

編集 削除
alvin  2010-01-19 22:47:04  No: 146703  IP: [192.*.*.*]

Application.EnableVisualStyles()を使うまではわかっていましたが、
どこに書くのが一番妥当でしょうか?

1.フォームロード時に
2.Form.Activatedイベントに 
1と2を検討しましたが、ボタンが無効になったときのスタイルがXPVisualスタイルが適用されてない状態です。

編集 削除
魔界の仮面弁士  2010-01-20 01:42:22  No: 146704  IP: [192.*.*.*]

Form のイベントでは遅いかと。Application.EnableVisualStyles() は、
フォーム等を作成する前に呼び出しておく必要があるため、たとえば
Main メソッドの先頭(Application.Run の実行前)に記述してみてください。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.application.enablevisualstyles.aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/234winxpstyle/winxpstyle.html

編集 削除
alvin  2010-01-20 10:27:10  No: 146705  IP: [192.*.*.*]

スタートアップにフォームを指定して、「アプリケーションフレームワークを無効にした」場合、Mainメソッドが見つからないです。
この場合、アプリのエントリポインタ(入り口)はどこでしょうか?
Application.Run が書かれている場所ともいえますね。

編集 削除
魔界の仮面弁士  2010-01-20 11:20:04  No: 146706  IP: [192.*.*.*]

Main メソッドは、自分で記述する必要があります。

編集 削除
alvin  2010-01-20 11:22:13  No: 146707  IP: [192.*.*.*]

追記:
Sub Mainを作成し、
Application.EnableVisualStyles
Application.Run 
を実装しましたが、

アプリケーションフレームワークプロパティでXpViusualスタイルを有効にした場合とソースでApplication.EnableVisualStylesを実行した場合、
ボタンが無効になったときのスタイルが違うのはなぜでしょうか?
後者のほうが、凹んでるようなスタイルになります。

編集 削除
alvin  2010-01-20 17:32:12  No: 146708  IP: [192.*.*.*]

FlashWindowEx関数を利用して、強制的に点滅を回避しました。

あさん、魔界の仮面弁士さん、ありがとうございました。
感謝いたします。

編集 削除
alvin  2010-01-20 17:33:57  No: 146709  IP: [192.*.*.*]

一旦解決〜

編集 削除
魔界の仮面弁士  2010-01-20 21:10:57  No: 146710  IP: [192.*.*.*]

> ボタンが無効になったときのスタイルが違うのはなぜでしょうか?
「FlashWindowEx で解決した」という件とは別の話でしょうか?

> 後者のほうが、凹んでるようなスタイルになります。
可能であれば、実際の違いを PNG 画像等にして、どこかに
提示してもらえると有り難いです。

実際の画面イメージを見たわけではないため、どのような違いなのか
読み取れていないのですが、見た目が微妙に異なるという事であれば、
下記の点について調べてみては如何でしょう。

・SetCompatibleTextRenderingDefault メソッド
・UseCompatibleTextRendering プロパティ

それ以外で見た目に影響を与える箇所と言うと、
・UseVisualStyleBackColor プロパティ
・FlatStyle プロパティ
あたりとか。

編集 削除
alvin  2010-01-21 14:46:12  No: 146711  IP: [192.*.*.*]

「FlashWindowEx で解決」というのは、現行のまま、タスクバーで点滅しているとこを強制的に点滅しないよう提案しているということです。

SetCompatibleTextRenderingDefault を使用してみたら、ビルドは通りますが、プログラムを実行すると落ちます。

編集 削除