아디봉의.net
C# dll import 사용하기 본문
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices; //<-- 선언꼭해줘야함
namespace ConsoleApplication2
{
class Program
{
[DllImport("user32.dll")]
public static extern int FindWindow(string ipClassName, string IpWindowName);
//1. 찾고자하는 클래스이름, 2.캡션값
[DllImport("user32.dll")]
public static extern int FindWindowEx(int hWnd1, int hWnd2, string Ipsz1, string Ipsz2);
//1.바로위의 부모값을 주고 2. 0이나 null 3,4.클래스명과 캡션명을
[DllImport("user32.dll")]
public static extern int SendMessage(int hwnd, int wMsg, int wParam, int IParam);
//1. 이벤트를 보낼 핸들 값을 넣어줌 2.이벤트 메세지에 해당 3.4. 그에따른 부수적인 메세지를 전달
[DllImport("user32.dll")]
public static extern IntPtr GetWindow(IntPtr hWnd, int uCmd);
//대상이되는 핸들값 //대상 핸들의자식
//부모핸들..이런 식으로0~5까지 값으로 구별하여 접근할수가 있는것이다.
//const int GW_HWNDFIRST = 0;
//const int GW_HWNDLAST = 1;
//const int GW_HWNDNEXT = 2;
//const int GW_HWNDPREV = 3;
//const int GW_OWNER = 4;
//const int GW_CHILD = 5;
[DllImport("user32.dll")]//핸들값을 넘겨주면 캡션값을 반환해줌
private static extern int GetWindowText(int hWnd, StringBuilder title, int size);
//1. 알아내고자하는 핸듶대상 2. 그 윈도우의 캡션값을 두번째 인자값으로 반환해줌 3.받을 텍스트값의 최대크기
[DllImport("user32.dll")] //윈도우 창의상태를 변경
private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
//1.변화시키고가자하는 핸들값 2.인자값을 어떻게 넘겨주느냐에 따라서 상태가 변하고
//상태에 대한 값은 아래 값들을 참고하길..
//private const int SW_HIDE = 0;
//private const int SW_SHOWNORMAL = 1;
//private const int SW_SHOWMINIMIZED = 2;
//private const int SW_SHOWMAXIMIZED = 3;
//private const int SW_SHOWNOACTIVATE = 4;
//private const int SW_RESTORE = 9;
//private const int SW_SHOWDEFAULT = 10;
//마우스 이벤트 mouse_event
[DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
//마우스커서이벤트 SetCursorPos
[DllImport("user32.dll")]
public static extern int SetCursorPos(int x, int y);
public const int WM_LBUTTONDOWN = 0x0202;
public const int WM_LBUTTONUP = 0x0201;
//키보드 이벤트
[DllImport("user32.dll")]
public static extern void keybd_event(
byte bVk, //virtual-key code
byte bScan, //hardware scan code
int dwFlags, //function options
ref int dwExtraInfo //additional keystroke data
);
[STAThread]
static void Main(string[] args)
{
/*
Console.WriteLine("C2soft messenger 값은?");
Console.WriteLine("캡션값만 입력한 핸들값 : " + FindWindow(null, "c2SOFT Messenger"));
Console.WriteLine("클래스명만 입력한 핸들값:" + FindWindow("NeoBizBox_Base", null).ToString());
int hw1 = FindWindow(null, "c2SOFT Messenger");
Console.WriteLine("핸들값1"+hw1.ToString());
int hw2 = FindWindowEx(hw1, 0, "사용자/부서 검색", "Edit");
Console.WriteLine("핸들값2" + hw2.ToString());
int hw3 = FindWindowEx(hw2, 0, "nbbSCWnd", null);
Console.WriteLine("핸들값3" + hw3.ToString());
int hw4 = FindWindowEx(hw3, 0, "nbbButton", "▲");
// Console.WriteLine("핸들값4" + hw3.ToString());
// int hw5 = FindWindowEx(hw4, 0, "Button", "my_cyworld");
// Console.WriteLine("핸들값5" + hw3.ToString());
//int hw6 = FindWindowEx(hw5, 0, "ENLeftPaneView", null);
//Console.WriteLine("핸들값3" + hw3.ToString());
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
const int BM_CLICK = 0x00F5;
SendMessage(hw1, BM_CLICK, 0, 1);
SendMessage(hw1, WM_LBUTTONDOWN, 0, 1);
SendMessage(hw1, WM_LBUTTONUP, 0, 1);
SendMessage(hw2, BM_CLICK, 0, 1);
SendMessage(hw2, WM_LBUTTONDOWN, 0, 1);
SendMessage(hw2, WM_LBUTTONUP, 0, 1);
SendMessage(hw3, BM_CLICK, 0, 1);
SendMessage(hw3, WM_LBUTTONDOWN, 0, 1);
SendMessage(hw3, WM_LBUTTONUP, 0, 1);
// 마우스 예제
Console.WriteLine("마우스를 움직 입니다.(Enter)");
Console.ReadLine();
for (int i = 0; i < 1000; i++)
{
Random y = new Random();
SetCursorPos(y.Next(800), y.Next(600));
}
Console.WriteLine("마우스를 다운 합니다. 콘솔창안에 마우스를 위치 시키세요.(Enter)");
Console.ReadLine();
mouse_event(WM_LBUTTONDOWN, 0, 0, 0, 0);
Console.WriteLine("이제마우스를 움직여보세요");
Console.ReadLine();
* */
//키보드 예제
const byte AltKey = 18;
const byte TabKey = 9;
const int KEYUP = 0x0002;
int Info=0;
for (int i = 0; i < 10; i++)
{
keybd_event(AltKey, 0, 0, ref Info); // ALT key 다운
keybd_event(TabKey, 0, 0, ref Info); // TAB key 다운
keybd_event(TabKey, 0, KEYUP, ref Info); // TAB key 업
keybd_event(AltKey, 0, KEYUP, ref Info); // ALT key 업
}
//keybd_event(AltKey, 0, 0, ref Info);
//1. 일종의 hex코드 ascii코드값을 써도 무방 2. 0으로 설정,쓸모없는 인자값
//3.어떤이벤트를 작동시킬것인지 셋팅 0=keydown
//4. keyup
}
}
}
'C#' 카테고리의 다른 글
C# value 타입과 reference 타입 (0) | 2012.09.14 |
---|---|
C# is와 as 차이점 사용법 (0) | 2012.09.14 |
C# 1.1 Delegate (0) | 2012.09.02 |
C# 속성 1.1부터 4.0까지 소스로 구분해보쟈~!! (0) | 2012.08.30 |
C# 트래잭션및 com+트랜잰셕정리 (0) | 2012.08.22 |