관리 메뉴

제목없음

C# DllImport 사용 시 GetWindowText와 같은 함수 다루기 본문

프로그램 작성/기타

C# DllImport 사용 시 GetWindowText와 같은 함수 다루기

다람군 2013.03.04 19:39

저는 원래 아래와 같은 GetWindowText 원형을 사용하려고 했습니다. Api Viewer 2004라고 하는 프로그램에서 만들어주는 것과 별반 다르지 않은 원형이죠.

[DllImport ( "user32.dll", CharSet = CharSet.Unicode )]
private static extern int GetWindowTextW ( IntPtr hWnd, string lpString, int nMaxCount );

 

문제는 이 원형을 넘겨주면 lpString에 값이 들어오지 않는다는 점입니다. string 앞에 out을 붙이면 당연히 오류가 나게 되고요. char[]을 넘겨줄까도 했지만 이런 저런 문제가 있어 어떻게 할까 고민하던 중 검색해봤습니다. 금방 나오더군요. string을 StringBuilder로 변경해주면 해결됩니다.

[DllImport ( "user32.dll", CharSet = CharSet.Unicode )]
private static extern int GetWindowTextW ( IntPtr hWnd, StringBuilder lpString, int nMaxCount );

 

참고: http://www.pinvoke.net/default.aspx/user32.getwindowtext

0 Comments
댓글쓰기 폼