728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : Form
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Import
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 메시지 보내기 - SendMessage(windowHandle, message, longParameter, wordParameter)
/// <summary>
/// 메시지 보내기
/// </summary>
/// <param name="windowHandle">윈도우 핸들</param>
/// <param name="message">메시지</param>
/// <param name="longParameter">LONG 매개 변수</param>
/// <param name="wordParameter">WORD 매개 변수</param>
/// <returns>처리 결과</returns>
[DllImport("User32.dll", CharSet=CharSet.Auto)]
private extern static IntPtr SendMessage(IntPtr windowHandle, int message, IntPtr longParameter, IntPtr wordParameter);
#endregion
#region 메시지 보내기 - SendMessage(windowHandle, message, longParameter, wordParameter)
/// <summary>
/// 메시지 보내기
/// </summary>
/// <param name="windowHandle">윈도우 핸들</param>
/// <param name="message">메시지</param>
/// <param name="longParameter">LONG 매개 변수</param>
/// <param name="wordParameter">WORD 매개 변수</param>
/// <returns>처리 결과</returns>
[DllImport("User32.dll", CharSet=CharSet.Auto)]
private extern static IntPtr SendMessage(IntPtr windowHandle, int message, int longParameter, int wordParameter);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// WM_LBUTTONDOWN
/// </summary>
private const int WM_LBUTTONDOWN = 513;
/// <summary>
/// WM_LBUTTONUP
/// </summary>
private const int WM_LBUTTONUP = 514;
/// <summary>
/// MK_LBUTTON
/// </summary>
private const int MK_LBUTTON = 0x0001;
/// <summary>
/// MK_RBUTTON
/// </summary>
private const int MK_RBUTTON = 0x0002;
/// <summary>
/// MK_SHIFT
/// </summary>
private const int MK_SHIFT = 0x0004;
/// <summary>
/// MK_CONTROL
/// </summary>
private const int MK_CONTROL = 0x0008;
/// <summary>
/// MK_MBUTTON
/// </summary>
private const int MK_MBUTTON = 0x0010;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
this.showMessageButton.Click += showMessageButton_Click;
this.clickButtonButton.Click += clickButtonButton_Click;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 메시지 표시하기 버튼 클릭시 처리하기 - showMessageButton_Click(sender, e)
/// <summary>
/// 메시지 표시하기 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void showMessageButton_Click(object sender, EventArgs e)
{
MessageBox.Show("메시지를 표시합니다.");
}
#endregion
#region 버튼 클릭하기 버튼 클릭시 처리하기 - clickButtonButton_Click(sender, e)
/// <summary>
/// 버튼 클릭하기 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void clickButtonButton_Click(object sender, EventArgs e)
{
ClickControl(this.showMessageButton);
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region LONG 매개 변수 구하기 - GetLongParameter(low, high)
/// <summary>
/// LONG 매개 변수 구하기
/// </summary>
/// <param name="low">하위 워드</param>
/// <param name="high">상위 워드</param>
/// <returns>LONG 매개 변수</returns>
private int GetLongParameter(int low, int high)
{
return ((high << 16) | (low & 0xffff));
}
#endregion
#region 컨트롤 클릭하기 - ClickControl(control)
/// <summary>
/// 컨트롤 클릭하기
/// </summary>
/// <param name="control">컨트롤</param>
private void ClickControl(Control control)
{
int x = 0;
int y = 0;
int longParameter = GetLongParameter(x, y);
SendMessage(control.Handle, WM_LBUTTONDOWN, longParameter, MK_LBUTTON);
SendMessage(control.Handle, WM_LBUTTONUP , longParameter, MK_LBUTTON);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > WinForm' 카테고리의 다른 글
[C#/WINFORM] 화상 키보드 사용하기 (0) | 2018.01.30 |
---|---|
[C#/WINFORM] Control 클래스 : SetStyle 메소드를 사용해 깜박임 방지하기 (0) | 2018.01.28 |
[C#/WINFORM] 명령 프롬프트를 모방한 콘솔 컨트롤 사용하기 (0) | 2018.01.22 |
[C#/WINFORM] 마우스 자동화 하기 (0) | 2018.01.20 |
[C#/WINFORM] Form 클래스 : InvokeOnClick 메소드를 사용해 컨트롤 클릭하기 (0) | 2018.01.20 |
[C#/WINFORM] SendMessage API를 사용해 컨트롤 클릭하기 (0) | 2018.01.20 |
[C#/WINFORM] 특수 키 상태 조사하기 (0) | 2018.01.17 |
[C#/WINFORM] 로또 컨트롤 사용하기 (0) | 2017.12.18 |
[C#/WINFORM] 바이트 배열에서 폰트 만들기 (0) | 2017.12.16 |
[C#/WINFORM] 폰트 설치 여부 구하기 (0) | 2017.11.25 |
[C#/WINFORM] 폰트 설치하기 (0) | 2017.11.23 |
댓글을 달아 주세요