2010-03-21 9 views
0

내 프로그램에서 다른 응용 프로그램을 실행하고 양식을 숨겨야합니다. Windows XP에서 그것은 쉬웠다 :Delphi : SW_HIDE가 더 이상 작동하지 않습니까?

ShellExecute(Handle, 'open', 'foo.exe', nil, nil,SW_HIDE); 

그러나 Vista와 win7에서는 더 이상 작동하지 않는 것으로 보인다.

+1

"작동하지 않음"이란 무엇을 의미합니까? 전혀 실행되지 않거나 실행되지만 숨겨지지는 않습니까? –

답변

5

음,

ShellExecute(Handle, nil, 'C:\WINDOWS\notepad.exe', nil, nil, SW_SHOWMINIMIZED); 

적어도

하나가 예상대로 작동 나타납니다. Windows XP 컴퓨터를 사용할 수 없지만 XP에서 정확히 무슨 일이 있었습니까? Windows 7에서

ShellExecute(Handle, nil, 'C:\WINDOWS\notepad.exe', nil, nil, SW_HIDE); 

을 실행하면 notepad.exe 프로세스가 생성되지만 창이 표시되지 않습니다. 나는 창문이 만들어졌지만 이제는 실제로 무엇을 기대할 수 있는지를 보여줍니다. 나중에 FindWindow 및 ShowWindow 함수를 사용하여 창을 표시 할 수 있습니다.

업데이트 : 난 그냥 내 가설을 확인

:

var 
    h: hWnd; 

    ShellExecute(Handle, nil, 'C:\WINDOWS\notepad.exe', nil, nil, SW_HIDE); 
    sleep(100); 
    h := FindWindow(nil, 'Namnlös - Anteckningar'); 
    if IsWindow(h) then 
    ShowWindow(h, SW_SHOW) 

표시 새로 만든 창 (제목 "Namnlös - Anteckningar", 즉 "새 파일 - 메모장"스웨덴어을).

업데이트 2 :

공지 사항 나는 동사 대신 전무로 '개방'사용할 수도

  • 있다.
  • notepad.exe의 전체 경로를 'notepad.exe'로 바꿀 경우 내 코드가 작동하지 않습니다.
+0

예 Windows 7에서 작동 중임 이 작업도 마찬가지입니다. ShellExecute (핸들, 'open', 'foo.exe', nil, nil, SW_HIDE); –

1

모든 응용 프로그램이 시작 정보에서 SW _... 플래그를 올바르게 준수하는 것은 아닙니다.

관련 문제