코드에 줄 번호 표시
메뉴 모음에서 도구 > 옵션 을 차례로 선택합니다. 텍스트 편집기 노드를 확장한 다음, 사용 중인 언어나 모든 언어 를 선택하여 모든 언어에 줄 번호를 켭니다. (또는 검색 상자에 줄 번호 를 입력하고 결과에서 줄 번호 설정/해제 를 선택합니다.)

줄 번호 확인란을 선택합니다.

참고>
줄 번호는 코드에 추가되지 않으며 참조용으로만 사용됩니다.

 

/*
ToInt32(String) 의 예외처리

예외
FormatException
value가 선택적 부호와 숫자 시퀀스(0~9)로 구성되어 있지 않습니다.

OverflowException
value은(는) MinValue보다 작거나 MaxValue보다 큰 숫자를 나타냅니다.
*/
/*
//오버로드//오버로드//오버로드//오버로드//오버로드//오버로드//오버로드//오버로드//오버로드//오버로드
ToInt32(String)
숫자의 지정된 문자열 표현을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(UInt16)
지정된 16비트 부호 없는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(UInt32)
지정된 32비트 부호 없는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Single)
지정된 단정밀도 부동 소수점 숫자 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Object, IFormatProvider)
지정된 문화권별 서식 지정 정보를 사용하여, 지정된 개체의 값을 32비트 부호 있는 정수로 변환합니다.

ToInt32(String, IFormatProvider)
지정된 문화권별 서식 지정 정보를 사용하여, 숫자의 지정된 문자열 표현을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(String, Int32)
지정된 기수로 나타낸 숫자에 대한 문자열 표현을 32비트 부호 있는 정수로 변환합니다.

ToInt32(UInt64)
지정된 64비트 부호 없는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Object)
지정된 개체의 값을 32비트 부호 있는 정수로 변환합니다.

ToInt32(SByte)
지정된 8비트 부호 있는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Int64)
지정된 64비트 부호 있는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Int32)
지정된 32비트 부호 있는 정수를 실제 변환 작업 없이 반환합니다.

ToInt32(Int16)
지정된 16비트 부호 있는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Double)
지정된 배정밀도 부동 소수점 숫자 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Decimal)
지정된 10진수 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(DateTime)
이 메서드를 호출하면 InvalidCastException이 항상 throw됩니다.

ToInt32(Char)
지정된 유니코드 문자의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Byte)
지정된 8비트 부호 없는 정수의 값을 해당하는 32비트 부호 있는 정수로 변환합니다.

ToInt32(Boolean)
지정된 부울 값을 해당하는 32비트 부호 있는 정수로 변환합니다.
*/



string[] values = { "One", "1.34e28", "-26.87", "-18", "-6.00",
                    " 0", "137", "1601.9", Int32.MaxValue.ToString() };
int result;

foreach (string value in values)
{
   try {
      result = Convert.ToInt32(value);
      Console.WriteLine("Converted the {0} value '{1}' to the {2} value {3}.",
                        value.GetType().Name, value, result.GetType().Name, result);
   }
   catch (OverflowException) {
      Console.WriteLine("{0} is outside the range of the Int32 type.", value);
   }
   catch (FormatException) {
      Console.WriteLine("The {0} value '{1}' is not in a recognizable format.",
                        value.GetType().Name, value);
   }
}
// The example displays the following output:
//    The String value 'One' is not in a recognizable format.
//    The String value '1.34e28' is not in a recognizable format.
//    The String value '-26.87' is not in a recognizable format.
//    Converted the String value '-18' to the Int32 value -18.
//    The String value '-6.00' is not in a recognizable format.
//    Converted the String value ' 0' to the Int32 value 0.
//    Converted the String value '137' to the Int32 value 137.
//    The String value '1601.9' is not in a recognizable format.
//    Converted the String value '2147483647' to the Int32 value 2147483647.

/*특정 윈도우 Application에 Hook F5 Key 메세지 보내기*/

using NoName;
using NoName.Diagnostics;
using NoName.Text;//Encoding
using NoName.Runtime.InteropServices;

class HookingMessage
{
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr hWnd, int unMsg, IntPtr wParam, IntPtr lParam);

[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);

const UInt32 WM_KEYDOWN = 0x0100;
const int VK_F5 = 0x74;

public void running()
{
IntPtr ____handle_mmm=IntPtr.Zero;
bool ____toggle;

____handle_mmm = FindWindow(null, "CONSOLE.TRIS");
____toggle=PostMessage(____handle_mmm, WM_KEYDOWN, VK_F5, 0 );

if(____toggle==true) Console.WriteLine("PostMessage succ!!");
else Console.WriteLine("PostMessage fail!!");
}
}

class Program
{
public static void Main()
{
HookingMessage nm = new HookingMessage();
nm.running();
}
}



/*
namespace:System
Int To Double -> Convert.ToDouble(int or double)
Double to Int -> Convert.ToInt32(double)
*/

class TrisWidthHeight : Form
{
int titledepth, widthdepth, heightdepth;
public TrisWidthHeight()
{
titledepth = this.Height - this.ClientRectangle.Height;
titlewidth = Convert.ToInt32(Convert.ToDouble(titledepth / 10.0)) * 7
titleheight = Convert.ToInt32(Convert.ToDouble(titledepth / 10.0)) * 4
this.Width = titlewidth;
this.Height = titleheight;
}

 

Other Application기동을 클라이언트에서 하도록 수정(Other Application프로그램이 뛰워져 있지 않을경우에)
Other Application기동을 클라이언트에서 하도록 수정(Other Application프로그램이 뛰워져 있지 않을경우에)

____handle_mmm = FindWindow(null, "CONSOLE.TRIS");
if(____handle_mmm==IntPtr.Zero)
{
Console.WriteLine("Time:[" + DateTime.Now.ToString() + "]::" + "FindWindow(CONSOLE.TRIS) FAIL!!, Try Execute CONSOLE.TRIS Application!!");

Process process = Process.Start("____rcv.exe");

DateTime endTime = DateTime.Now.AddMinutes(1);

/*
System.Threading.Thread.Sleep(1000);
____handle_mmm = FindWindow(null, "CONSOLE.TRIS");
if(____handle_mmm==IntPtr.Zero) 
{
Console.WriteLine("Time:[" + DateTime.Now.ToString() + "]::" + "FindWindow(CONSOLE.TRIS) FAIL!!, Try Execute CONSOLE.TRIS Application!!");
}
*/

while(true)
{
if((____handle_mmm = FindWindow(null, "CONSOLE.TRIS"))==IntPtr.Zero)
{
System.Threading.Thread.Sleep(10);
}
else break;

if(endTime<DateTime.Now)
{
index=100;
break;
}
}
if(index==100) return;
}

 

 

____snd.cs
0.00MB





using NoName;
using NoName.Timers;

class Program
{
public static void Main()
{
ExampleManageCls nm = new ExampleManageCls();
nm.running();
}
}

class ExampleManageCls
{
Timer tm = new Timer();
DateTime endTime;

public void running()
{
tm.Elapsed += new ElapsedEventHandler(____time_tick);
tm.Interval = 1000;
tm.Start();

endTime = DateTime.Now.AddMinutes(1);

while(true)
{
if(endTime<DateTime.Now)
{
break;
}
}
}

void ____time_tick(object sender, ElapsedEventArgs e)
{
Console.WriteLine(DateTime.Now.ToString() + "/" + endTime.ToString());
}
}

/*RESULT-------------------------------------------------------
2022-03-28 오전 9:56:47/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:48/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:49/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:50/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:51/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:52/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:53/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:54/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:55/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:56/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:57/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:58/2022-03-28 오전 9:57:13
2022-03-28 오전 9:56:59/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:00/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:01/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:02/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:03/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:04/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:05/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:06/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:07/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:08/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:09/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:10/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:11/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:12/2022-03-28 오전 9:57:13
2022-03-28 오전 9:57:13/2022-03-28 오전 9:57:13

D:\tmp\console>
-------------------------------------------------------*/

/*2개의 Application이 동작한다. 2개의 Application이 Data를 Communication할때에 사용하는 방식이다.
1. Console에서 Key를 동작하여, 다른 Application으로 SendMessage(Text)한다. 일명 조정
2. 다른 Application에서는 WndProc(override frm)에서 WM_COPYDATA를 통해서 데이타를 받은다음에 
Key에 따라서 동작한다.
3. 억지로 말을 붙이자면, 한쪽방향으로의 클라이언트,서버의 관계이다.*/

>주의할점은 Tris Server Frm(No Key) 의 Application의 Handle이 반드시 일단 존재해야 한다.

____snd.cs
0.00MB

 

____rcv.cs
0.01MB

 

/*Data communication between Proesses!!*/

Windows OS
프로세스간 Window Handle 공유를 통한 SendMessage & WndProc(WM_COPYDATA)

참조)
SendMessage/FindWindow/Snd/Rcv Str :: 석수코딩교육 (tistory.com)

Linux & Unix OS
1) 프로세스간 Message Queue 공유를 통한 Message Send & Recv
2) 프로세스간 Semaphor & Shared Meory 공유를 통한 Message Send & Recv(비추)

+ Recent posts