Win.ShellExecute 0, "open", "C:\dir\program.exe", "arguments", vbNullString, SW_SHOWNORMAL
Win.ShellExecute 0, "open", "http://www.google.com", vbNullString, vbNullString, SW_SHOWNORMAL
program.exe의 실행 여부에 관계없이 google.com을 열도록합니다. 이 문제를 어떻게 해결할 수 있습니까? 차라리 "시작"이라고 부르는 것을 피할 것입니다.windows가 shellexecute 요청을 큐에 저장하지 못하도록 함
이 두 호출은 거의 즉시 발생하며 VB 프로그램은 계속 실행됩니다. 그러나 Vista와 XP 모두에서 google.com은 program.exe가 닫힐 때까지 열리지 않습니다. program.exe가 닫히기 전에 shellexecute
을 호출 한 응용 프로그램이 닫히면 program.exe가 닫히면 google.com이 열립니다.
참고 :
내가 지금은 Program.exe 전화 doevents 100ms마다 또는 필요하면 문제를 해결하지만, 분명히이 다소 해킹의 것으로 나타났습니다.
참고 2 : 다음은 program.exe의 구현 예입니다. 예, program.exe를 변경하면이 문제가 해결됩니다 (즉 doevents
통화 추가).
Option Explicit
Public Sub Main()
Do Until False
Sleep 100
Loop
End Sub
첫 번째 매개 변수로 유효한 HWND를 전달하면 어떤 차이가 있습니까? – tyranid
@tyranid : 테스트 애플리케이션은 폼을 사용하지 않습니다. – Brian
그런 다음 아마 문제의 일부일 수 있습니다. program.exe가 사용자 인터페이스를 표시하지 않는다고 가정합니다. – tyranid