Текущий архив: 2004.07.18;
Скачать: CL | DM;
Вниз
Нужно при щелчке на рабочем столе вывести звезду Найти похожие ветки
← →
_student (2004-06-27 12:30) [0]Ну нарисовать звезду на рабочем столе я смог. А как сделать чтобы именно в том месте где я щелкнул. А? Дяденьки, не откажите бедному студенту.
← →
Anatoly Podgoretsky © (2004-06-27 12:40) [1]Ну у тебя и учебные задания, а учиться не пробовал?
← →
DrPass © (2004-06-27 15:08) [2]
> Нужно при щелчке на рабочем столе вывести звезду
А серп и молот слабо?
← →
SammIk © (2004-06-27 15:26) [3]Хук
← →
jack128 © (2004-06-27 16:26) [4]
> Хук
Апперкорт
← →
Cardinal © (2004-06-27 18:08) [5]ammIk © (27.06.04 15:26) [3]
А потом при рисовании прибавляй полученные координаты к координатам при рисовании звезды
← →
connect (2004-06-27 18:21) [6]Плохие дяденьки попались
← →
Ajax © (2004-06-27 22:34) [7]Я чего-то не понимаю в чем проблема??? Звезду свою ты вроде уже нарисовал... Координаты мыши получить - если так, то GetCursorPos тебе поможет... Все равно не монимаю затруднения...
← →
Sliski Slimak (2004-06-27 22:39) [8]Или тебе сразу готовый код написать? Тогда опубликуй свою звезду...
← →
VID © (2004-06-27 23:13) [9]GetCursorPos
← →
connect (2004-06-28 20:53) [10]Я тут кое-что наваял. Можно ли эту бредятину как-нибудь оптимизировать?
Спасибо
dll-каlibrary Project1;
uses
windows,
messages;
var h : THandle;
function hook(c, wParam, lParam : integer): Lresult; stdcall;
const r1=10;
r2=20;
var
w:THandle;
hw:hwnd;
dc:hdc;
points:TPoint;
a:real;
i,x1,y1,x2,y2,xc,yc,r3:integer;
begin
if c >= 0
then
begin
if wparam=WM_LBUTTONUP
then
begin
dc:=getdc(0);
GetCursorPos(points);
x1:=round(cos(0*pi/180)*r2);
y1:=round(sin(0*pi/180)*r2);
MoveToEx(dc,points.x,points.y,0);
for i:=1 to 10 do
begin
a:=i*(360/(10));
if not odd(i) then r3:=r2 else r3:=r1;
x2:=round(cos(a*pi/180)*r3);
y2:=round(sin(a*pi/180)*r3);
LineTo(dc,450+x2,250+y2);
end;
end;
end
else
begin
result := CallNextHookEx(h,c,wParam,lParam);
exit;
end;
result := CallNextHookEx(h,c,wParam,lParam);
end;
procedure sethook;
begin
h:= SetWindowsHookEx(WH_MOUSE, @hook, hInstance, 0);
end;
procedure removehook;
begin
UnhookWindowsHookEx(H);
end;
exports
sethook index 1 name "sethook",
removehook index 2 name "removehook";
end.
Программаunit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure sethook; far; external "project1.dll";
procedure removehook; far; external "project1.dll";
procedure TForm1.FormCreate(Sender: TObject);
begin
sethook;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
removehook;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Hide;
end;
end.
← →
Rouse_ © (2004-06-28 21:09) [11]Первоначально не мешало бы почитать вот это
http://www.delphimaster.ru/articles/hooks/index.html
и понять, почему ТАК писать нельзя...
Страницы: 1 вся ветка
Текущий архив: 2004.07.18;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.026 c