728x90
현재 마우스의 커서 위치 및 마우스 커서의 모양을 알고자 할때 쓰는 유용한 함수 Class
using System;
using System.Drawing;
using System.Runtime.InteropServices;
class CGetCursor {
[StructLayout(LayoutKind.Sequential)]
public struct ICONINFO
{
public bool fIcon;
public Int32 xHotspot;
public Int32 yHotspot;
public IntPtr hbmMask;
public IntPtr hbmColor;
}
[StructLayout(LayoutKind.Sequential)]
public struct CURSORINFO
{
public Int32 cbSize;
public Int32 flags;
public IntPtr hCursor;
public Point stScreenPos;
}
[DllImport("user32.dll", EntryPoint = "GetCursorInfo")]
public static extern bool GetCursorInfo(out CURSORINFO pci);
[DllImport("user32.dll", EntryPoint = "CopyIcon")]
public static extern IntPtr CopyIcon(IntPtr hIcon);
[DllImport("user32.dll", EntryPoint = "GetIconInfo")]
public static extern bool getIconInfo(IntPtr hIcon, out ICONINFO piconinfo);
private const Int32 CURSOR_SHOWING = 0x00000001;
private Point Position;
private Icon Cursor;
public CGetCursor()
{
Position = new Point(0, 0);
Cursor = null;
CursorFind();
}
private void CursorFind()
{
CURSORINFO ci = new CURSORINFO();
IntPtr hicon;
ICONINFO icInfo;
ci.cbSize = Marshal.SizeOf(ci);
if (GetCursorInfo(out ci))
{
if (ci.flags == CURSOR_SHOWING)
{
hicon = CopyIcon(ci.hCursor);
if (getIconInfo(hicon, out icInfo))
{
Cursor = Icon.FromHandle(hicon);
Position = ci.stScreenPos;
}
}
}
}
//현재 CURSOR의 iCon모양 return
public Icon GetCursoriCon
{
get
{
return Cursor;
}
}
//현재 CURSOR의 iCon위치 return
public Point GetCursorPosition
{
get
{
return Position;
}
}
}
728x90
반응형
'Application > C# (WinForm)' 카테고리의 다른 글
[C# WinForm] Delegate, Event, Invoke, Cross Thread 사용법 (0) | 2022.12.01 |
---|---|
[C# WinForm] INI 파일 읽기 및 쓰기 (0) | 2022.11.29 |
[C# WinForm] 프로그램 광고 달기 (Ads Jumbo) (0) | 2022.11.25 |
[C# WinForm] Cross Thread 해결법 (0) | 2014.08.13 |
[C# WinForm] 자석 효과 구현 (0) | 2014.08.13 |