Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 15:05   #1
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
Лампочка как программно добавить "виртуальные курсоры" Delphi

Добрый час! Подскажите, как программно добавить "виртуальные курсоры" Delphi, т.е. существует основной курсор, который реагирует на нажатия и все события, и помимо его, несколько курсоров добавить, которые двигаются в случайном порядке, но не реагируют на события, см. скрин:



здесь нашел

Последний раз редактировалось beegl; 07.03.2013 в 15:26.
beegl вне форума Ответить с цитированием
Старый 07.03.2013, 16:07   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Второй курсор наверно винда не даст создать (хотя могу ошибаться), а вот сделать картинку как курсор и перемещать её по экрану вполне возможно.
Вот тут почитай, хотя сам не читал, убегаю на корпоратив http://habrahabr.ru/post/86023/

Последний раз редактировалось FaTaL; 07.03.2013 в 16:10.
FaTaL вне форума Ответить с цитированием
Старый 07.03.2013, 18:50   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Все можно и все просто. http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
Человек_Борща вне форума Ответить с цитированием
Старый 07.03.2013, 19:57   #4
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Человек_Борща, напишите пожалуйста пример, а то не очень понятно
beegl вне форума Ответить с цитированием
Старый 07.03.2013, 20:46   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для одной мыши мало вероятно сделать несколько курсоров. Можно по таймеру рандомно рисовать в DC экрана ваши виртуальные курсоры
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.03.2013, 21:20   #6
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Аватар, напишите пример, как на скрине, если получается, за пределы главного, то можете оформить за пределы окна, ...... кстати, хорошая идея по защите конфиденциальности инф.., т.е. чтоб была малая вероятность воровства пароля?
beegl вне форума Ответить с цитированием
Старый 07.03.2013, 23:19   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как на скрине самому прийдется, в примере с рандомностью и прозрачностью не заморачивался и только для одной картинки. bmp 32*32 (во вложении) нужно в Image засунуть. Прозрачность можно здесь посмотреть http://www.sources.ru/msdn/howto/q79212.shtml
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    lRow,lCol: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var DC,CompatibleDC: HDC;
    OldBitmap: HBITMAP;
begin
  Refresh;
  DC:=GetDC(Handle);
  CompatibleDC:=CreateCompatibleDC(DC);
  OldBitmap:=SelectObject(CompatibleDC,Image1.Picture.Bitmap.Handle);
  BitBlt(DC,lCol,lRow,32,32,CompatibleDC,0,0,SRCCOPY);
  SelectObject(CompatibleDC,OldBitmap);
  DeleteDC(CompatibleDC);
  ReleaseDC(Handle,DC);
  Inc(lRow);
  if lRow>ClientHeight-32 then lRow:=0;
  Inc(lCol);
  if lCol>ClientWidth-32 then lCol:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 lRow:=0; lCol:=0;
  Image1.Visible:=False;
 Timer1.Interval:=50;
 Timer1.Enabled:=True;
end;

end.
Изображения
Тип файла: bmp Bitmap1.bmp (630 байт, 129 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.03.2013 в 23:36.
Аватар вне форума Ответить с цитированием
Старый 08.03.2013, 13:23   #8
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Аватар, этот код двигает курсор только в одном направлении, без рандома, куда вставить рандом, и чтоб реагировал на движение основного курсора,т.е. если реальный курсор без действия, то и виртуальные курсоры тоже должны быть без действия?
beegl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа тест на Delphi. Надо добавить "работу над ошибками" dex16 Помощь студентам 1 25.02.2012 00:56
Как программно изменить цвет "компонента"? Смотрим внутри... Vova777 Общие вопросы Delphi 3 15.02.2012 05:56
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Как программно запускать "Дефрагментация дисков" на Windows XP kenta Общие вопросы Delphi 2 29.11.2009 20:12
Как добавить програмно "Назначенные задания" новое задание??? Paul Hindenburg Общие вопросы Delphi 3 05.08.2009 17:07