我现在正试图用gamelauncher窗口解决问题.. 所以我的问题是:
如何更改另一个进程窗口的表单属性(我需要使用带圆角的表单)?或者甚至可以在同一个过程中,因为我可以将DLL注入/挂钩。
答案 0 :(得分:1)
您需要做的是:
1) Get the window handle of the window你想“破解”。
2)创建圆形区域。我通常会为此目的使用CreatePolyRgn() API。
3)使用SetWindowRgn() API将区域应用于表单。
*)请注意,某些应用程序会控制其区域并覆盖您的设置。 (但不太可能。)
答案 1 :(得分:1)
procedure TForm6.btn1Click(Sender: TObject);
var
hWndX : HWND;
hRegX: HRGN;
begin
hWndX := FindWindow(nil,PChar('YourWindowName'));
if hWndX <> 0 then
begin
hRegX := CreateEllipticRgn(1, 1, 300, 300);
SetWindowLong(hWndX, GWL_STYLE, GetWindowLong(hWndX, GWL_STYLE) and not WS_BORDER and not WS_SIZEBOX and not WS_DLGFRAME );
SetWindowPos(hWndX, hWndX, Left, Top, Width, Height, SWP_FRAMECHANGED);
SetWindowRgn(hWndX, hRegX, True);
end
else
MessageBox(Handle,PChar('Cant find the window andle'),PChar('Error!'),0)
end;
所有这些API调用在所有语言中看起来都是一样的。