2011-04-30 8 views
0

?숨기기/쇼 프로그램 창

감사합니다.

+0

이것은 생각보다 어렵습니다. VB.NET을 배우려고하는 프로그래머라면 시작해야 할 마지막 일입니다. P/Invoke를 사용하여 관리 코드에서 비 관리 코드를 호출하여 Windows API에서 함수를 호출해야합니다. 가능하지만 추천 할 필요는 없습니다. 어떤 문제를 해결하려고합니까? 응용 프로그램이 메모장 같은 다른 응용 프로그램을 제어해야하는 이유는 무엇입니까? 프로그램은 다른 프로그램과 독립적으로 실행되어야합니다. 텍스트를 편집해야하는 경우 도구 상자에서 'TextBox'컨트롤을 사용하십시오. 그것은 어쨌든 메모장과 거의 동일합니다. –

답변

5

P/Invoke signature은 다음과 같습니다

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
Private Shared Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Boolean 
End Function 

ShowWindow() 항목에서는 SW_* 플래그에 대한 숫자 값을 보여줍니다. 주석으로 ShowWindowAsync()보다는 ShowWindow()의 사용을 제안하기위한 @ 알렉스 K에


감사합니다. 문서에서

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ 
Private Shared Function ShowWindowAsync(ByVal hwnd As IntPtr, ByVal nCmdShow As Integer) As Boolean 
End Function 

:

이 기능 게시물 쇼 - 창 주어진 윈도우의 메시지 큐에 이벤트입니다. 응용 프로그램은 이 함수를 사용하여 응답하지 않을 경우 응답하지 않는 응용 프로그램이 표시 창 이벤트 처리를 완료 할 때까지 기다릴 수 있습니다.

+2

diff 쓰레드가 소유 한 윈도우에 맞춰'ShowWindowAsync'를 사용하는 것이 더 낫습니다. 타겟이 멈추거나 응답하지 않으면 차단되지 않습니다. (동일한 프로토 타입) –

+0

@Alex 감사합니다. –

+0

업데이트되었습니다. 작동하려면 nCmdShow 유형을 정수로 변경해야합니다. 작동하지만, 좋지는 않지만 창을 숨긴다. 그런 다음 SW_SHOW 값은 5이고 ShowWindowAsync (hwnd, 5) 시도하고 아무 일도 ... 무엇이 잘못 되었나요? – John