(특히 Visual Studio 디버거를 실행할 때) C#에서 콘솔 응용 프로그램 윈도우를 앞에 가져올 수 있습니까?콘솔 윈도우를 앞쪽으로 가져 오기 #
답변
그것은 끔찍한, 해키,하지만 나를 위해 작동 (감사, pinvoke.net!) :
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
public class Test
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);
public static void Main()
{
string originalTitle = Console.Title;
string uniqueTitle = Guid.NewGuid().ToString();
Console.Title = uniqueTitle;
Thread.Sleep(50);
IntPtr handle = FindWindowByCaption(IntPtr.Zero, uniqueTitle);
if (handle == IntPtr.Zero)
{
Console.WriteLine("Oops, cant find main window.");
return;
}
Console.Title = originalTitle;
while (true)
{
Thread.Sleep(3000);
Console.WriteLine(SetForegroundWindow(handle));
}
}
}
디버깅 할 때 맨 위에 표시되도록 코드에 추가하지 마십시오. – tvanfosson
@tv - 어쩌면 당신은 절대적인 진술에 대해 설명 할 수 있습니다. 개인적으로 이것이 합법적이고 권장되는 창 관리 기능의 사용이라고 생각합니다. 가장 좋은 DRY 접근 방식은 아니지만 약간의 리팩토링을 통해 Win32 응용 프로그램 개발에있어 일반적인 관행입니다. 해키가 아니라 데스크톱 주위로 창을 이동하는 방법입니다. –
Visual Studio 디버거에서만이 코드를 실행하려면 다음을 사용할 수 있습니다. if (Debugger.IsAttached == true) {...} –
는 두 개의 모니터를 가져옵니다 (적어도)와 보조 모니터에서 열려으로 VisualStudio. VisualStudio에서 앱을 실행하면 기본 모니터에서 기본적으로 시작됩니다. 마지막으로 열리는 앱이기 때문에 처음부터 시작하고 VisualStudio로 변경해도 영향을주지 않습니다. 어쨌든 나를 위해 일합니다.
두 번째 모니터 인 IMHO가없는 경우 사용자가해야합니다.
이것이 내가하는 일입니다.
[DllImport("kernel32.dll", ExactSpelling = true)]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
public void BringConsoleToFront()
{
SetForegroundWindow(GetConsoleWindow());
}
아주 늦은 대답,하지만 난 주위에 다음과 같은 작업 사용 :이, 당신이 윈도우 폼과 콘솔 응용 프로그램을 실행하고 양식의 전면에 콘솔을 가지고 싶다면
을 우리가 위에서 보았 듯이 이것을하기에는 제정신이 아닙니다. 그러나 Windows Forms에서이 작업을 수행하는 방법이 있습니다. BringToFront()
및 SendToBack()
을 사용하여 프로그램의 창 레이어를 변경할 수 있습니다. 프로그램에는 양식과 콘솔이 있었고 콘솔이 앞에 있어야하므로 양식을 뒤쪽으로 보냈습니다.
사용자가 멀티 태스킹을하고 콘솔을 모든 것 앞에두고 싶다면 콘솔이 작동하지 않습니다. 그러나 프로그램의 창에 영향을 주려는 경우 적절한 해결 방법입니다.
- 1. JTabbedPane에서 탭을 앞쪽으로 가져 오기
- 2. 코코아로 앞쪽으로 자식 창 가져 오기
- 3. 툴바에서 IE 윈도우를 포함하는 HWND 가져 오기
- 4. 윈도우를 인스턴스화하지 않고 Tk winfo_rgb() 가져 오기
- 5. WPF 탭 컨트롤 끌어서 놓기 : 탭을 앞쪽으로 가져 오기
- 6. RubyCocoa에서 활성화 (앞쪽으로 가져 오기)하는 방법은 무엇입니까?
- 7. 콘솔 앱에서 참조하는 webservice에서 콘솔 앱의 app.config 키 가져 오기
- 8. 콘솔 응용 프로그램에서 연결 문자열 가져 오기
- 9. 좌표로 창 가져 오기
- 10. NSView를 모든 NSView의 앞쪽으로 이동시키는 방법
- 11. 가져 오기 배열 가져 오기
- 12. Tkinter 창이 앞쪽으로 점프하는 방법?
- 13. Python - 콘솔 클래스 네임 스페이스로 패키지 클래스 가져 오기
- 14. 콘솔 앱에서 참조되는 프로젝트의 모든 네임 스페이스 가져 오기
- 15. XCode 코코아 콘솔 응용 프로그램 가져 오기 오류
- 16. 콘솔 응용 프로그램에서 활성 양식의 이름 가져 오기 C#
- 17. Cocotron 앱에서 콘솔 또는 오류 로그 가져 오기
- 18. 플러그인 가져 오기 UTI 유형 가져 오기
- 19. Xlib 자식 창 이벤트 가져 오기
- 20. z 쉘에서 단어를 앞쪽으로 옮기기
- 21. WPF UI 스레드 가져 오기 또는 비 UI 스레드에서 윈도우를 표시하는 방법
- 22. MDI children 폼을 클릭해도 앞쪽으로 이동하지 않습니다
- 23. 파이썬 scapy 가져 오기 오류
- 24. 파일 가져 오기/불러 오기
- 25. Spring 객체 정의 가져 오기
- 26. DDE 이벤트 후 내 윈도우를 앞으로 가져 오려면 어떻게합니까?
- 27. tcp 포트 웹 사이트 가져 오기
- 28. 현재 사용자 (C#)의 NetworkCredential 가져 오기
- 29. 기존 윈도우를 기반으로 새 C# 윈도우를 만들려면 어떻게해야합니까?
- 30. 메인 윈도우를 최소화 한 후 자동으로 팝업 윈도우를 최소화하는 방법
어떤 상황에서 그리고 왜 이것을하고 싶습니까? 합법적 인 경우가 있지만 대개 이런 종류의 문제는 가치가있는 것보다 더 큰 문제입니다. – ICR