본문 바로가기

Game Programming

C/C++ 코드를 C#으로 C/C++ 코드를 C# 에서 사용하는 가장 기본적인 방법은 Wrapper 클래스를 통한 방법이다. C++ 코드를 컴파일 하여 Static Library 파일로 만든다. 만들어진 lib 파일을 C++/CLI 을 이용하여 감싸서 dll 파일로 만든다. 이로써 C++ 로 작성된 Native Code 를 C# 에서 이용 가능한 Managed Code 로 만든 것이다. C# 에서는 C++/CLI 로 만들어진 dll 파일을 참조하여 사용하기만 하면 된다. 좀더 자세한 내용은 http://topnanis.tistory.com/97 를 확인하고 참고로는 Swig라는 것이 있다. 위에것을 한꺼번에 한다라고 표현해야하나?? 문서를 참조 하기 바람 더보기
MySql or MariaDB 사용 관련... MariaDB를 공부하면서 MySql과 내용이 거의 같다..라는 내용을 많이 보게 되었다. 많은 부분이 빠져있기 때문에 지속적인 갱신을 할 것이다... 일단 MariaDB를 https://downloads.mariadb.org/ 이곳에서 다운로드 해서 생성한다. 내용은 그냥 다음 다음...해서 설치를 완료 한 후에... C#에서 사용하기 위해서는 일단 예) mysql-connector-net-6.8.3를 다운로드 한후 설치를 한다. 설치를 한 후 Visual studio 에서 참조쪽 오른쪽 클릭 -> 참조 추가 -> Mysql.Data.Dll 을 추가 한 후 사용한다. using (MySqlConnection myConnection = new MySqlConnection(@"Data Source=[IP주.. 더보기
json과Http 사용하여 Nexmo를 통한 SMS보내기 1. 일단 Json에 맞는 Class를 생성 //해당 업체?에서 만들어진 목차? 형식에 맞추어 일단 class를 생성해준다. public class httpJson { public string api_key { get; set; } public string api_secret { get; set; } public string from { get; set; } public string to { get; set; } public string text { get; set; } } 2. 일단 class를 생성 후에 해당 클래스를 불러와 형식에 맞게 ID?를 넣어준다... public string CreateJson(string PhoneNumber) { httpJson hjson = new httpJson();.. 더보기
cUrl 사용 push wstring 의 데이터를 MultiByte형태로 바꿔 준 후 static std::string ToAnsiString(const std::wstring& src, UINT codePage) { std::string strReturn; const int nLength = ::WideCharToMultiByte(codePage, 0UL, src.c_str(), -1, nullptr, 0, nullptr, nullptr); if (nLength < 0) return strReturn; strReturn.resize(nLength); const int nResult = ::WideCharToMultiByte(codePage, 0UL, src.c_str(), -1, &strReturn[0], nLength, n.. 더보기
Port OpenCheck 해당 함수는 Local Com에서 사용자가 원하는 Port가 열려있는지 상태를 체크한다. bool cSessionEx::ServerPortOpneCheck(u_short port) { bool check = false; PMIB_TCPTABLE pTable = NULL; DWORD dwSize = 0; if (::GetTcpTable(NULL, &dwSize, TRUE) == ERROR_INSUFFICIENT_BUFFER) { if (dwSize>0) { pTable = new MIB_TCPTABLE[dwSize]; if (::GetTcpTable(pTable, &dwSize, TRUE) !=NO_ERROR) { //printf("현재 TCP Port는 Close 상태입니다.\n"); //printf(".. 더보기
Program Rerun 해당 함수는 사용자가 설정한 폴더 경로에 있는 exe프로그램...을 실행시킨다. bool cSessionEx::ProgramRerun(wchar_t Directory[], wchar_t Process_name[]) { bool bRet = false; SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_FLAG_NO_UI;// SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = NULL; ShExecInfo.lpFile = 실행파일//_T("Sentinel.exe"); ShExecInfo... 더보기
Process Search 현재 작업관리자에 있는 목록을 모두 얻어 온 후 자기가 지정(name)한 이름과 대조하여 결과값을 Return한다. 있을 경우 Return True, 없을 경우 Return False이다. #include bool cSessionEx::ProcessRunning(wchar_t name[]) { wchar_t compare[256]; bool procRunning = false; HANDLE hProcessSnap; PROCESSENTRY32 pe32; hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) { procRunning = false; } else { pe32... 더보기
Process Kill 원하는(name에 입력) process를 찾아 Kill해주는 Function이다. #include bool cSessionEx::ProcessKill(wchar_t name[]) { HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL); PROCESSENTRY32 pEntry; pEntry.dwSize = sizeof (pEntry); BOOL hRes = Process32First(hSnapShot, &pEntry); while (hRes) { if (wcscmp(pEntry.szExeFile, name) == 0) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0,(DWORD)pEntry.th.. 더보기