Sabzil2 History

Programming/Macro 2022. 8. 16. 06:02

2022-09-14

1. PK 판정 업데이트

 

2022-08-30

1. PK시 SMS발송기능 추가

 

2022-08-21

1. Party 개별 힐 설정치 적용

 

2022-08-17

1. Party 개별 힐 / 버프 사용여부 추가

 

2022-08-16

1. Nox의 경우 Main Handle 은 Caption창 까지 포함하기 때문에 Click 시 잘못된 위치 지시 하는 경우 발생

     → 애뮬레이터의 종류가 Nox일 경우 Caption Height 만큼 보정 추가

 

2022-08-09

1. Party 인식 기능 추가

2. Party 힐 & 버프 기능 추가

 

 

2022-07-01

1. Sabzil2 개발 시작

 

사용 : O

'Programming > Macro' 카테고리의 다른 글

레이븐 매크로 #2  (9) 2015.06.01
레이븐 매크로 #1  (0) 2015.05.27
Posted by 푸르른노을
,
출처 : http://blog.danggun.net/2040

WCF가 예전에 사용하던 방식과 달라 이것저것 테스트 하다가 간만에 뜬 에러

 

크로스 스레드 작업이 잘못되었습니다.

아....

 

예전에 WPF에서 한번 소개 하긴 했었습니다만 윈폼에서는 약간다르죠.

(참고 : [WPF] 다른 쓰레드에서 UI쓰레드 접근하기 - Dispatcher.Invoke)

 

1. 일반적인 방법

일반적으로 인보크(Invoke)를 사용하려면 델리게이트(Delegate)를 만들어야 합니다.

(참고 : MSDN - Control.Invoke 메서드)

 

일반적인 방법에서는 다음과 같은 순서로 인보크를 사용합니다.

1) 델리게이트 선언

2) 델리게이트에 연결할 함수 생성

3) 델리게이트와 생성한 함수 연결

4) 인보크로 델리게이트 호출

 

 

//1) 델리게이트 선언 /// <summary> /// 델리게이트 선언(연결 할 함수와 같은 모양이 되도록 만든다.) /// </summary> /// <param name="sData"></param> private delegate void DataDelegate(string sData);  //2) 델리게이트에 연결할 함수 생성 /// <summary> /// 실제 동작하는 함수(연결 할 함수) /// </summary> private void DelegteFuntion(string sData) { 	label2.Text = sData; }  //3) 델리게이트와 생성한 함수 연결 //4) 인보크로 델리게이트 호출 //사용할때 this.Invoke(new DataDelegate(DelegteFuntion), "Test!"); 

 

 

이 방법의 가장큰 문제는 원하는 동작만큼 델리게이트를 선언해야 한다는 것입니다-_-;;;;;

그래서 간소화 방법을 사용하죠.

 

 

2. 간소화 방법

간소화 방법은 일반적인 방법과는 달리 한줄로  델리게이트를 선언하는 방법 입니다.

메소드인보커 대리자(MethodInvoker Delegate)를 이용하는 방법이죠.

(참고 : MSDN - MethodInvoker 대리자)

 

this.Invoke(new Action( 	delegate() 	{ 		label2.Text = "Test"; 	}));  //혹은  this.Invoke(new MethodInvoker( 	delegate() 	{ 		label2.Text = "Test"; 	})); 

 

 

깔끔하게 됐죠?

 

메소드인보커를 이용하면 델리게이트를 전역으로 선언하지 않고 사용할수 있습니다.

단 해당 데리자를 따로 저장하지 않으면 1회만 사용할 수 있습니다.

 

3. 자신의 쓰래드인지 확인하기

하지만 자신의 쓰래드에서 인보크를 시도하면 에러가 납니다.

이걸 해결하려면 'InvokeRequired'속성을 써야 합니다.

'InvokeRequired'속성은 'System.Windows.Forms'에 속해있는 속성으로 호출된 메소드가 같은 쓰래드인지 아닌지 확인해 줍니다.

if( true == InvokeRequired) { 	//다른 쓰래드다. } else { 	//같은 쓰래드다. } 

 

 

다른 쓰래드일때는 인보크를 해야하고 같은 쓰래드일때는 필요없습니다. ㅇㅇㅇㅇㅇㅇ

 

 

마무리

검색하다가 안 사실이지만 의외로 델리게이트를 간략화 해서 쓰는걸 모르시는 분들이 많으시군요 ㅡ.ㅡ;;;

제 기억으론 책에서도 나왔던거 같은데;;;(아닌가?)

이럴줄 알았으면 빨리 포스팅을 하는 거였는데 ㅡ,.ㅡ;;;

Posted by 푸르른노을
,

크롬 사용시 여러가지 다른 환경을 설정해야 할 경우

 

사용자 데이터 경로 변경으로 간단하게 다중 환경에서 크롬을 사용할수 있습니다.

 

위와 같이 크롬 단축 아이콘 속성창으로 들어가서

 

대상 제일 뒷편에  --user-data-dir="새로운 유저데이터폴더" 를 입력해 주시면 해당 단축아이콘으로 크롬 실행시

 

새로운 환경의 크롬이 실행되게 됩니다.

Posted by 푸르른노을
,