2013-04-18 2 views
0

왜 작동하지 않는지 알 수 없습니까?SetForegroundWindow가 내 창을 활성화하지 않습니다.

static void ActivateApp(string processName) 
{ 
    Process[] p = Process.GetProcessesByName(processName); 

    // Activate the first application we find with this name 
    if (p.Any()) SetForegroundWindow(p[0].MainWindowHandle); 
    else 
    { 
     Console.WriteLine("Something wrong"); 
    } 
} 


    [STAThread] 
    static void Main(string[] args) 
    { 
     ActivateApp("Acrobat.exe"); 
    } 

출력 :

뭔가

잘못하지만 Acrobat.exe이 존재한다는 것을 확신합니다.

+2

'Acrobat.exe'을'Acrobat'으로 변경하십시오. –

+0

작동하지 않는다고해서 무엇을 의미합니까? 예외? 콘솔에 "잘못된 것"이 있습니까? 제발 좀 더 자세히 설명해주세요. – jordanhill123

+0

@ByteBlast, jordanhill123 고맙습니다. "잘못된 것"이었습니다. 이제 사라졌지 만, 내 창이 여전히 표시되지 않습니다. 어쩌면 틀렸을 수도 있습니다. 그러나이 방법은 선택한 프로세스의 'Windows를 다른 모든 Windows의 상단, 맞죠? – Ydhem

답변

2

SetForegroundWindow()이 실제로 작동하는지 여부에 대한 이상한 규칙이 있습니다. 다음 조건을 충족해야합니다의

적어도 하나

  • 과정은 전경 과정이다.
  • 프로세스는 포 그라운드 프로세스로 시작되었습니다.
  • 프로세스가 마지막 입력 이벤트를 수신했습니다.
  • 포 그라운드 프로세스가 없습니다.
  • 포 그라운드 프로세스가 디버깅 중입니다.
  • 전경이 잠겨 있지 않습니다.
  • 전경 잠금 시간 제한이 만료되었습니다 (SystemParametersInfo의 SPI_GETFOREGROUNDLOCKTIMEOUT 참조).
  • 메뉴가 활성화되어 있지 않습니다.

이 경우입니까?

자세한 내용은 the MSDN documentation을 참조하십시오.