Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизКак можно поместить свою надпись поверх чужого окна ? Найти похожие ветки
← →
dreamse (2006-11-26 19:04) [0]Например игры. Но так чтобы на каждую секунду её отрисовывать, так как фон игры перерисовываеться и надпись стираеться. Думаю копать нужно в сторону DirectX
Кто сталокивался с подобным вопросом ?
← →
Eraser © (2006-11-26 19:06) [1]> [0] dreamse (26.11.06 19:04)
чтобы не перерисовывать - никак.
← →
Ma[X]iM © (2007-03-24 17:44) [2]Переместить контрол со своего окна на чужое :)
Следующий код создаёт в "Пауке" небольшую панельку
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons,ShellAPI, ExtCtrls;
type
TFHack = class(TForm)
Panel1: TPanel;
HelpBull: TSpeedButton;
NewRowButt: TSpeedButton;
UndoButt: TSpeedButton;
xcheck: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure UndoButtClick(Sender: TObject);
procedure HelpBullClick(Sender: TObject);
procedure NewRowButtClick(Sender: TObject);
procedure xcheckTimer(Sender: TObject);
private
{ Private declarations }
Spider:HWND;
smGame:HMENU;
function ItemEnabled(id:WPARAM):boolean;
public
{ Public declarations }
procedure OnNCHitTest(var msg:TMessage);
message WM_NCHITTEST;
procedure OnNCLButtonUp(var msg:TMessage);
message WM_NCLBUTTONUP;
end;
var
FHack: TFHack;
const
rc :TRect=(left:4;top:4;right:24;bottom:24);
rc2:TRect=(left:30;top:4;right:50;bottom:24);
implementation
{$R *.dfm}
procedure TFHack.FormCreate(Sender: TObject);
begin
Spider:=FindWindow("Пасьянс "Паук"",nil);
if(not IsWindow(Spider)) then begin
if(WinExec("spider",SW_SHOW)<=31) then exit;
repeat
Spider:=FindWindow("Пасьянс "Паук"",nil);
until(IsWindow(Spider));
end;
xcheck.Enabled:=true;
Caption:="Windows Hacked!";
SetWindowLong(Handle,GWL_EXSTYLE,
GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_TOPMOST);
Windows.SetParent(Handle,Spider);
SetWindowLong(Handle,GWL_STYLE,
(GetWindowLong(Handle,GWL_STYLE) and
(not WS_POPUP) and (not WS_OVERLAPPED)
)or WS_CHILD);
ShowWindowAsync(Application.Handle,SW_HIDE);
smGame:=GetSubMenu(GetMenu(Spider),0);
end;
procedure TFHack.OnNCHitTest(var msg: TMessage);
var pt:TPoint;
begin
pt.X:=msg.LParamLo;
pt.Y:=msg.LParamHi;
windows.ScreenToClient(handle,pt);
if(PtInRect(rc,pt))then begin
msg.Result:=HTCAPTION;
end else if(PtInRect(rc2,pt))then begin
msg.Result:=HTCLOSE;
end else begin
msg.Result:=HTCLIENT;
end;
end;
procedure TFHack.FormPaint(Sender: TObject);
begin
with Canvas do begin
pen.Color:=clWhite;
pen.Width:=3;
Brush.Style:=bsSolid;
Brush.Color:=RGB(55,85,117);
RoundRect(rc.Left ,rc.Top ,rc.Right ,rc.Bottom ,5,5);
pen.Color :=RGB(55,85,117);
Brush.Color:=clWhite;
RoundRect(rc2.Left,rc2.Top,rc2.Right,rc2.Bottom,5,5);
Brush.Style:=bsClear;
Rectangle(ClientRect);
end;
end;
const
smUndo =$00009C4A;
smHelp =$00009C4D;
smNewRow=$00009C47;
smExit =SC_CLOSE;//$00009C44;
procedure TFHack.OnNCLButtonUp(var msg: TMessage);
begin
case msg.WParam of
HTCLOSE: begin
SetForegroundWindow(Spider);
SendMessage(Spider,WM_SYSCOMMAND,smExit,0);
if(not IsWindow(Spider)) then close;
end;
end;
end;
procedure TFHack.UndoButtClick(Sender: TObject);
begin
SetForegroundWindow(Spider);
if(ItemEnabled(smUndo)) then
PostMessage(Spider,WM_COMMAND,smUndo,$00);
end;
procedure TFHack.HelpBullClick(Sender: TObject);
begin
SetForegroundWindow(Spider);
if(ItemEnabled(smHelp)) then
PostMessage(Spider,WM_COMMAND,smHelp,$00);
end;
procedure TFHack.NewRowButtClick(Sender: TObject);
begin
SetForegroundWindow(Spider);
if(ItemEnabled(smNewRow)) then
PostMessage(Spider,WM_COMMAND,smNewRow,$00);
end;
function TFHack.ItemEnabled(id: WPARAM): boolean;
var
mii:TMenuItemInfo;
begin
result:=false;
ZeroMemory(@mii,sizeof(TMenuItemInfo));
mii.cbSize:= sizeof(TMenuItemInfo);
mii.fMask:=MIIM_STATE;
if(GetMenuItemInfo(smGame,id,false,mii))then begin
result:=(mii.fState and MFS_DISABLED)=0;
end;
end;
procedure TFHack.xcheckTimer(Sender: TObject);
begin
if(not IsWindow(Spider))then begin
xcheck.Enabled:=false;
Self.Close;
end;
end;
end.
← →
homm © (2007-03-24 22:14) [3]> Как можно поместить свою надпись поверх чужого окна ?
способ 1
> Например игры.
Через DirectX (искать как fraps работает)
способ 2
Сделать окно поверх. Если надо с прозрачным фоном см. SetLayeredWindowAttributes
способ 3
Нарисовать фломастером на мониторе.
← →
Eraser © (2007-03-25 12:16) [4]> [3] homm © (24.03.07 22:14)
первые 2 варианта не всегда будут работать, 3 не всем подойдет )
← →
patrushevd © (2007-03-25 13:12) [5]uses
graphics, windows;
...
var
c: tcanvas;
...
c:= tcanvas.create;
c.handle:= getdc(Хендл_Вражеского_Окна)
while 1 = 1 do
begin
c.textout(x, y, "TEXXXXT");
sleep(100)
end;
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.042 c