2011-08-15 17 views
2

Windowsショートカットを最小限に抑えて検出する方法はありますか? ショートカットがプログラムの最小化を開始したいのかどうかを検出し、その後最小化/最大化/通常サイズ変更を処理したいと考えています。アプリケーションを最小限に抑えた起動プログラム

私は私

Form_Splash := TForm_Splash.Create(Application); 

を使用して作成したスプラッシュスクリーンを持つメインフォームが、私はform_Splashを破壊し、その時点で私が表示された後、後

Application.CreateForm(TForm_main, Form_main); 

を使用して、メインフォームを作成しますウィンドウのショートカットが要求したものに基づいてform_mainを最小化/最大化/通常サイズにしたい。

ありがとうございました。 スティーブ...

答えて

5

GetStartupInfo APIコールを使用して、作成時にプロセスに渡されるSTARTUPINFO(DelphiではTStartupInfo)を使用できます。 wShowWindowのメンバーには、目的の初期表示状態が含まれています。知っていることは常に良いです何

がある:GUIプロセスについては

、呼び出されたのShowWindow初めて、そのnCmdShow パラメータはwShowWindowは、デフォルト値を指定は無視されます。その後、ShowWindowの 呼び出しで、ShowWindowの nCmdShowパラメータがSW_SHOWDEFAULTに設定されている場合、wShowWindowメンバが使用されます。

したがって、ShowWindowが最初に呼び出されたウィンドウでは、スタートアップ情報レコードで指定された値が使用されます。これはあなたのスプラッシュ画面に影響する可能性があります。

いずれにしても、STARTUPINFOの値を使用して、メインフォームを適切に動作させることができます。

個人的には、私が最小化を開始したいときにスプラッシュ画面を表示するアプリケーションが嫌いです。通常、これらのアプリケーションは私の魅力を引きつける入力フォーカスを盗みます。

+0

ありがとうHeinrichは本当に助けてくれました。もう1つの質問。どのように私はStartInfo.wShowWindow = SW_SHOWMINNOACTIVEをオーバーライドすることができますので、もはや最小化されて来る任意のアイデア? – Steve

+0

@スティーブ私は助けてうれしい!ウインドウが最小化するのを防ぐために、 'WM_SHOWWINDOW'メッセージを受信したかどうかをチェックし、もしあればそれを傍受しようとします。これがうまくいかない場合は、新しい最初のウィンドウになる3番目の(ダミーの)ウィンドウを作成することができます。これがWindowsによって最小限に抑えられている場合は、気にしないでください:) –

+0

FYIは起動時にプログラムが最小化されないようにするためにCmdShow:= 1; Application.Initialize行の前に。私のプロジェクトファイルに。私はws_ShowNormalの代わりに1を使用したので、別の '用途'を追加する必要はありませんでした。スティーブ... – Steve

関連する問題