2016-07-09 7 views
-1

アプリケーションの前に自分のフォームが必要です。しかし、一般的な方法は機能しません。別のアプリケーションを強制するSendToBack

方法はすでに enter image description here

コメント

問題のアプリケーションが唯一のフルスクリーンモードで動作する問題の

//method #1 

PostMessage(HD, WM_USER, 0, 0); 
SetWindowPos(HD, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE); 


//method #2 
dwThreadID := GetWindowThreadProcessId(HD, nil); 
dwCurrentThreadID := GetCurrentThreadId; 
AttachThreadInput(dwCurrentThreadID, dwThreadID, true); 
BringWindowToTop(Aff.handle); 
ShowWindow(Aff.handle, SW_SHOW); 

アプリケーションを試してみました。

完全なコードは必要ありません。

あなたの時間のために私の悪い英語とおかげですみません。

+0

からSertac Akyuzへ

function ForceForegroundWindow(AHandle: THandle): Boolean; var Input: TInput; begin Result := True; ZeroMemory(@Input, SizeOf(Input)); SendInput(1, Input, SizeOf(Input)); SetForegroundWindow(AHandle); end; 

クレジットは、あなたはFormStyle = fsStayOnTopを持っていますか? –

+0

はい、このアプリだけで動作しません – 3V3LYN

+1

HDでうまく処理できますか? – GolezTrol

答えて

0

フォームを下部に設定しています。それを一番上にするには:

もう1つのアプローチでは、実際に外部アプリケーションをバックグラウンドに強制したい場合は、そのハンドルを取得する必要があります。例えば、このようなアプリケーションがカルクという名前の場合:

hCalc := FindWindow('calc', nil); 
SendMessage(hCalc , WM_SYSCOMMAND, SC_MINIMIZE, 0); // you can also minimize the application 
SetWindowPos(hCalc , HWND_BOTTOM, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); 
+0

お手伝いをしていただきありがとうございますが動作しません。 アプリケーションはすべての前にあり、常にタスクマネージャを開いて、彼はフォーカスを保つことができません。 – 3V3LYN

+0

タスクマネージャを同じ位置に移動してもトップに留まるアプリケーションがありますか? –

+0

VMWare Playerにアプリケーションがあり、それが同じ仮想環境にない他のアプリケーションの上にあることを期待していますか?たぶん完全なスクリーンショットが状況を説明するかもしれない。 –

0

あなたはこれを試すことができます(How to bring my application to the front?

+0

お試しいただきありがとうございます。しかし、働かないでください ' - ' – 3V3LYN

+1

クレジットください。 –

+1

[Here](http://stackoverflow.com/a/12950454/243614)。 –

関連する問題