2015년 7월 28일 화요일
2015년 5월 12일 화요일
C# Mouse handle(C# 으로 마우스 핸들링 하기)
DllImport 를 이용하여 user32.dll에 존재 하는 API 를 사용하면 된다.
private const uint LBUTTONDOWN = 0x00000002;
private const uint LBUTTONUP = 0x00000004;
[DllImport("user32.dll")] // DllImport .
static extern void mouse_event( uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo );
[DllImport("user32.dll")] // DllImport
static extern int SetCursorPos(int x,int y);
1. 마우스 움직이기
Point pt = PointToScreen( Location ); // 마우스 좌표를 가져올 수 도 있음. Point로 좌표를 사용해도 됨.
SetCursorPos( pt.X, pt.Y ); // 마우스가 Pt 좌표에 위치하게끔 하는 함수.
2. 마우스 클릭.
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 ); // 다운
mouse_event( LBUTTONUP, 0, 0, 0, 0 ); // 업
3. 드래그
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 ); // 시작
mouse_event( LBUTTONUP, 0, 0, 0, 0 ); // 끝
개인적으로 마우스와 키보드 핸들은 AutoIt를 사용하는 것이 조금 더 편하다. 물론 C#에서도 AutoIt COM library 를 reference에 추가 하여 사용하는 것도 가능하다. 현재 대부분의 게임의 메크로에 AutoIt이 사용될 만큼 좋은 기능은 많이 갖추고 있다. 유저 포럼도 상당수 존재 하여 원하는 함수사용에 크게 어려움이 없다.
private const uint LBUTTONDOWN = 0x00000002;
private const uint LBUTTONUP = 0x00000004;
[DllImport("user32.dll")] // DllImport .
static extern void mouse_event( uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo );
[DllImport("user32.dll")] // DllImport
static extern int SetCursorPos(int x,int y);
1. 마우스 움직이기
Point pt = PointToScreen( Location ); // 마우스 좌표를 가져올 수 도 있음. Point로 좌표를 사용해도 됨.
SetCursorPos( pt.X, pt.Y ); // 마우스가 Pt 좌표에 위치하게끔 하는 함수.
2. 마우스 클릭.
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 ); // 다운
mouse_event( LBUTTONUP, 0, 0, 0, 0 ); // 업
3. 드래그
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 ); // 시작
mouse_event( LBUTTONUP, 0, 0, 0, 0 ); // 끝
개인적으로 마우스와 키보드 핸들은 AutoIt를 사용하는 것이 조금 더 편하다. 물론 C#에서도 AutoIt COM library 를 reference에 추가 하여 사용하는 것도 가능하다. 현재 대부분의 게임의 메크로에 AutoIt이 사용될 만큼 좋은 기능은 많이 갖추고 있다. 유저 포럼도 상당수 존재 하여 원하는 함수사용에 크게 어려움이 없다.
C# Run another process(application) C#으로 Process interface를 이용한 다른 어플리케이션 실행하기.
다른 프로세스(어플리케이션)을 실행하기 위하여 간단하게 using System.Diagnostics 를 추가 하고, Process 클래스를 사용하면된다.
using System;
using System.Diagnostics;
public class Run_exe
{
public void Main()
{
Process compiler = new Process();
compiler.StartInfo.FileName = "c:\\autoexec.bat";
compiler.StartInfo.UseShellExecute = true;
compiler.Start();
}
}
| cs |
2015년 5월 11일 월요일
Multi-Body Dynamics for ANSYS (MBD for ANSYS)
Multi-Body Dynamics for ANSYS (MBD for ANSYS) 은 ANSYS Workbench 환경하에 Multi-Body Dynamics 해석할 수 있는 Extension 이다. Contact Model 에 대한 성능이 뛰어나고, LoadTransfer 라는 기능을 통하여 Static 의 하중에 사용하는 것이 가능하다.
아래 동영상은 MBD for ANSYS 해석한 후 MBD Viewer 를 통하여 애니메이션과 Plot 보는 방법을 보여 준다.
http://mbd4a.functionbay.com/
아래 동영상은 MBD for ANSYS 해석한 후 MBD Viewer 를 통하여 애니메이션과 Plot 보는 방법을 보여 준다.
C# Excel Read and Write(C#에서 엑셀 읽고 쓰기)
public void WriteExcel()
{
// 참조에 Micocoft.Office.Interop.Excel 추가 -> Excel 2003임.
// 네임스페이스에 다음 추가 "using Excel = Microsoft.Office.Interop.Excel;"
// 자주 사용하는 Type.Missing 미리 정의 해놓음.
object TypMissing = Type.Missing;
// Excel Application 정의
Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook _workbook = null;
// 파일이 존재 하면 열고, 없으면 새로 만듬.
if (File.Exists(@"c:\Test.xls"))
{
_workbook = ExcelApp.Workbooks.Open(@"c:\Test.xls", TypMissing, TypMissing, TypMissing, TypMissing,
TypMissing, TypMissing,
TypMissing, TypMissing, TypMissing, TypMissing, TypMissing, TypMissing, TypMissing, TypMissing);
}
else
{
// Add Work Book
_workbook = ExcelApp.Workbooks.Add(Type.Missing);
// Save Excel File
_workbook.SaveAs(@"c:\Test.xls", Excel.XlFileFormat.xlWorkbookNormal, TypMissing, TypMissing,
TypMissing, TypMissing, Excel.XlSaveAsAccessMode.xlNoChange,
TypMissing, TypMissing, TypMissing, TypMissing, TypMissing);
}
// 읽어들인 Excel에서Sheet1을 가져옴. item 이름이 정확 해야함.
Excel.Worksheet Sheet = (Excel.Worksheet)_workbook.Worksheets.get_Item("Sheet1");
Excel.Range Range_ = Sheet.get_Range("A1", Type.Missing);
Sheet.Cells[1, 1] = "이름";
Sheet.Cells[1, 2] = "전화번호";
Sheet.Cells[1, 3] = "주소";
//Sheet.Rows.AutoFit();
Sheet.Columns.AutoFit(); // 글자 크기에 맞게 셀 크기를 자동으로 조절.
//Range_.Rows.AutoFit();
//Range_.Columns.AutoFit();
_workbook.Save();
ExcelApp.Workbooks.Close(); // 별효과 없음.
ExcelApp.Quit(); // 별효과 없음.
// 강제로 Excel Porcess종료하기.
Process[] ExCel = Process.GetProcessesByName("EXCEL");
if (ExCel.Count() != 0)
{
MessageBox.Show("Detect EXCEL");
ExCel[0].Kill();
}
}
|
2015년 5월 10일 일요일
Enumator 의 종류를 string 변수로 가져오기.
Enumator 의 종류가 어떤것이 존재 하는지 문자열로 가져오면 유용하게 사용할 수 있는 경우가 많다.
Type enumType = typeof(enum);
Array ArryenumList = Enum.GetValues(enumType);
string[] strenumList = new string[ArryenumList.Length];
for (int i = 0; i < ArryenumList.Length; i++)
{
object obs = ArryenumList.GetValue(i);
strenumList[i] = obs.ToString();
}
| cs |
피드 구독하기:
글 (Atom)