일부 대상 응용 프로그램의 창을 표시하거나 숨기는 프로그램을 작성하고 있습니다. 나는 그것을 일찍 테스트하고 이상한 것을 알아 차렸다. 대상 응용 프로그램을 관리자 (마우스 오른쪽 버튼 클릭 -> 속성, "호환성"탭, "관리자 권한으로이 프로그램 실행")로 실행하면 작동하지 않습니다. 나는 "targetApplication 요소"라는 간단한 GUI 응용 프로그램을 작성하고 설명하기 위해대상 응용 프로그램이 관리자 권한으로 실행되면 ShowWindow 함수가 작동하지 않습니다.
는 내가 표시/숨기기이 응용 프로그램을 테스트하려면 다음 코드를 작성 :
class Program
{
static void Main(string[] args)
{
IntPtr windowPtr = FindWindow(null, "TargetApplication");
ShowWindow(windowPtr, 0); // 0 = Hide
Console.WriteLine("The window is now hidden. Press Enter to restore");
Console.ReadLine();
ShowWindow(windowPtr, 9); // 9 = Restore
Console.WriteLine("The window is now restored. Press Enter to exit.");
Console.ReadLine();
}
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}
나는 '아무튼 관리자 권한없이 윈도우 응용 프로그램을 시작하는 경우 일하지 마라.
아무도 나에게 이것을 테스트해도 되겠습니까? 여기 두 응용 프로그램의 .EXE 년대를 업로드 한 :
당신이 그들을 다운로드 한 다음 TestShowWindow.exe을 실행 TestApplication.exe을 실행하기 만하면됩니다. 관리자로 실행되도록 TestApplication.exe를 변경하면 ShowWindow가 더 이상 작동하지 않습니다.
물론 내 물건을 다운로드하는 것을 신뢰하지 않는다면 Windows의 모든 대상 응용 프로그램에서 항상 내 코드를 컴파일하고 테스트하여 호환성 모드를 변경할 수 있습니다.
P. 차이가 있는지는 잘 모르지만 Windows 8 Pro를 실행 중입니다. 64 비트.
와우 아주 좋은 정보입니다. 내가 이해하지 못하는 한가지는 내가 쓰지 않은 다른 프로그램을 가지고 똑같은 일을한다는 것입니다. 이 해결 방법이 필요하지 않은 창을 표시하거나 숨길 때 사용할 수있는 다른 방법이 있습니까? –