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이 사용될 만큼 좋은 기능은 많이 갖추고 있다. 유저 포럼도 상당수 존재 하여 원하는 함수사용에 크게 어려움이 없다.

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/

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[11= "이름";
    Sheet.Cells[12= "전화번호";
    Sheet.Cells[13= "주소"
    
    //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