良い一日
これが可能かどうかについての指示をウェブで検索しましたが、役に立ちませんでした。別のアプリケーションを選択できるようにするアプリケーションを作成する必要があります。これにより、選択したアプリケーションが半透明になり、上に表示されます (ゴースト イメージ オーバーレイのように)。
Delphiでこれはまったく可能ですか? Delphi XE と Lazarus を使用しています。誰かがどこから始めるべきかの一般的な方向性を教えていただければ幸いです.
前もって感謝します、
良い一日
これが可能かどうかについての指示をウェブで検索しましたが、役に立ちませんでした。別のアプリケーションを選択できるようにするアプリケーションを作成する必要があります。これにより、選択したアプリケーションが半透明になり、上に表示されます (ゴースト イメージ オーバーレイのように)。
Delphiでこれはまったく可能ですか? Delphi XE と Lazarus を使用しています。誰かがどこから始めるべきかの一般的な方向性を教えていただければ幸いです.
前もって感謝します、
これは可能ですが、この種の動作は独自のアプリケーションで処理する必要があるため、お勧めしません。とにかく、これを行う非常に正当な理由があるために主張する場合は、ここでコードを残してウィンドウの透明度を設定し、ウィンドウを最上位にする方法を示します。
透明性
透明度を設定するには、フラグ付きの関数とを使用するSetWindowLong
関数を使用する必要があります。WS_EX_LAYERED
SetLayeredWindowAttributes
LWA_ALPHA
Procedure SethWndTrasparent(hWnd: HWND;Transparent:boolean);
var
l : Longint;
lpRect : TRect;
begin
if Transparent then
begin
l := GetWindowLong(hWnd, GWL_EXSTYLE);
l := l or WS_EX_LAYERED;
SetWindowLong(hWnd, GWL_EXSTYLE, l);
SetLayeredWindowAttributes(hWnd, 0, 180, LWA_ALPHA);
end
else
begin
l := GetWindowLong(hWnd, GWL_EXSTYLE);
l := l xor WS_EX_LAYERED;
SetWindowLong(hWnd, GWL_EXSTYLE, l);
GetWindowRect(hWnd, lpRect);
InvalidateRect(hWnd, lpRect, true);
end;
end;
Windowsを最上位にする
最上位以外のすべてのウィンドウの上にウィンドウを配置SetWindowPos
する値を渡す関数を使用する必要があります。HWND_TOPMOST
ウィンドウは、非アクティブ化されている場合でも最上位の位置を維持します。
Procedure SethWndOnTop(hWnd: HWND);
var
lpRect : TRect;
begin
if GetWindowRect(hWnd,lpRect) then
SetWindowPos(hWnd , HWND_TOPMOST, lpRect.left, lpRect.top, lpRect.Right-lpRect.left, lpRect.Bottom-lpRect.Top, SWP_SHOWWINDOW);
end;
Windows はこれを実行できますが、アプリがこれを確実に実行できる見込みはありません。