Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1187865942
race1
2007-08-23 14:45
2007.09.16
Наследник сервиса и его использование


15-1187269943
Ega23
2007-08-16 17:12
2007.09.16
О корректном разрыве соединения с сервером БД


11-1169748733
Jon
2007-01-25 21:12
2007.09.16
KOLComServ?


15-1187577985
Slider007
2007-08-20 06:46
2007.09.16
С днем рождения ! 20 августа 2007 понедельник


15-1187477610
wp2
2007-08-19 02:53
2007.09.16
Может и тупой вопрос, но все же.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский