123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System.Drawing.Imaging;
- using DummyCursor.Spy;
- using Timer = System.Threading.Timer;
- namespace DummyCursor
- {
- public partial class MainForm : Form
- {
- private const int DummySize = 128;
- private nint _hWndWatch;
- private nint _hWndShowDummy;
- private Form _dummy = new Form()
- {
- FormBorderStyle = FormBorderStyle.None,
- ControlBox = false,
- Width = DummySize,
- Height = DummySize,
- BackColor = Color.White,
- TransparencyKey = Color.White,
- MinimumSize = Size.Empty,
- TopMost = true,
- BackgroundImageLayout = ImageLayout.Center
- };
- public MainForm()
- {
- InitializeComponent();
- }
- private void ChooseWatchingWindowButton_Click(object sender, EventArgs e)
- {
- SpyAgent sa = null;
- sa = new SpyAgent(w =>
- {
- _hWndWatch = w.Handle;
- ChooseWatchingWindowButton.Text = w.Caption;
- sa!.EndSpying();
- });
- sa.BeginSpying();
- }
- private void ChooseShowDummyOnWindowButton_Click(object sender, EventArgs e)
- {
- SpyAgent sa = null;
- sa = new SpyAgent(w =>
- {
- _hWndShowDummy = w.Handle;
- ChooseShowDummyOnWindowButton.Text = w.Caption;
- sa!.EndSpying();
- });
- sa.BeginSpying();
- }
- private void ActiveCheckButton_CheckedChanged(object sender, EventArgs e)
- {
- _dummy.Visible = ActiveCheckButton.Checked;
- if (_dummy.Visible)
- {
- var oldBmp = _dummy.BackgroundImage;
- using var cur = Icon.FromHandle(Cursor.Current.Handle).ToBitmap();
- var newBmp = new Bitmap(DummySize, DummySize, PixelFormat.Format32bppArgb);
- using var grp = Graphics.FromImage(newBmp);
- grp.DrawImage(cur, DummySize / 2f - 0, DummySize / 2f - 1, new RectangleF(0, 0, cur.Width, cur.Height), GraphicsUnit.Pixel);
- grp.DrawLine(Pens.White, 0, DummySize / 2, DummySize, DummySize / 2);
- grp.DrawLine(Pens.Black, 0, DummySize / 2 - 1, DummySize, DummySize / 2 - 1);
- grp.DrawLine(Pens.Black, 0, DummySize / 2 + 1, DummySize, DummySize / 2 + 1);
- grp.DrawLine(Pens.White, DummySize / 2, 0, DummySize / 2, DummySize);
- grp.DrawLine(Pens.Black, DummySize / 2 - 1, 0, DummySize / 2 - 1, DummySize);
- grp.DrawLine(Pens.Black, DummySize / 2 + 1, 0, DummySize / 2 + 1, DummySize);
- _dummy.BackgroundImage = newBmp;
- oldBmp?.Dispose();
- timer1.Enabled = true;
- }
- else
- {
- timer1.Enabled = false;
- }
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- if (_hWndWatch == 0) return;
- if (_hWndShowDummy == 0) return;
- //check mouse in watching window
- var wndWatch = new SpiedWindow(_hWndWatch);
- var rcWatch = wndWatch.ClientArea;
- var mPos = MousePosition;
- if (rcWatch.Contains(mPos) == false)
- {
- return;
- }
- int bp = 0;
- //calc % of w and h
- var wcx = mPos.X - rcWatch.X;
- var wcy = mPos.Y - rcWatch.Y;
- var percentX = (float)wcx / rcWatch.Width;
- var percentY = (float)wcy / rcWatch.Height;
- //calc show target x and y
- var wndShow = new SpiedWindow(_hWndShowDummy);
- var rcShow = wndShow.Area;
- var showX = rcShow.X + rcShow.Width * percentX - DummySize / 2f;
- var showY = rcShow.Y + rcShow.Height * percentY - DummySize / 2f;
- //move dummy to show
- _dummy.Location = new Point((int)showX, (int)showY);
- }
- }
- }
|