안녕하세요 성태님
성태님 덕분에 Clickonce에 대해 많이 알게 되었습니다.
그런데, 아직 진행 중에 안되는 것이 있어서 질문 드립니다.
WindowsFormApplication1 에서 Button을 통해 process URL을 지정하여
WindowsFormApplication2를 배포하였습니다.
그 때 WindowsFormApplication1에서 Button을 눌렀을 시
WindowsFormApplication1은 보이지 않는 상태가 되고,
WindowsFormApplication2가 보이게 되며
또 다시 WindowsFormApplication2를 종료 시
WindowsFormApplication1이 다시 보이게끔 하고 싶은데
WindowsFormApplication1에서
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myProcess As Process
myProcess = System.Diagnostics.Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " +
http://xxx.xxx.xx.xx:xxx/WindowsFormApplication2.application)
Me.Visible = False
myProcess.WaitForExit()
Me.Visible = True
End Sub
이렇게 줬는데 WaitForExit() 명령어가 아예 WindowsFormApplication2 란 것을 인지 못하는 것 같습니다.
어떻게 해야할까요?
디버깅결과 Me.Visible이 False 변했다가 바로 True 로 바뀝니다.
WaitForExit()는 로컬컴퓨터에서만 실행시킨 파일을 종료되었는지만 확인 할 수 있더군요.
배포는 로컬컴퓨터에 했지만 실행은 서버에 있는 application을 실행했기 때문인가봅니다.
서버에서 실행시킨 파일도 WaitForExit() 할 수 있을까요?
WaitForExit() 대신 hasExited도 사용해봤습니다.
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myProcess As Process
myProcess = System.Diagnostics.Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " +
http://xxx.xxx.xx.xx:xxx/WindowsFormApplication2.application)
Me.Visible = False
If myProcess.hasExited = True then
Me.Visible = True
end if
End Sub
역시 안되더군요.
hasExited도 로컬컴퓨터내에서만 사용가능하더군요.
그래서 방법을 다르게 생각해봤습니다.
어짜피 Clickonce로 배포는 이미 했고, C:/Users/xxxx/AppData/Local/Apps/2.0/ 여기에 배포가 되니
내가 실행시킨 WindowsFormApplication2.exe 가 종료 되었을 때 Visible = True 로 변경하면 되겠구나.
근데 생각한대로 코딩이 안떠오르네요.
실행한 프로젝트 이름을 찾는 명령어도 그렇고
그 실행프로젝트가 종료 되었을 때 하는 명령어도 모르겠네요.
단지, 서버에서 실행시킨 파일이 종료되었을때 Me.Visible을 True로 바꾸고싶어서
구글링을 해봐도 제가 원하는 답은 나오질 않네요ㅠ
=================================================================================================
Msgbox(myprocess.ProcessName) 해봤을때
실행 프로그램이 WindowsApplication2.exe 가 아닌 Rundll32로 표시가 되네요
이러니 Rundll32.exe 는 WindowsApplication2.exe 를 키고나서 바로 종료되니
myProcess.WaitForExit()가 바로 되는걸까요?
[최초 등록일: ]
[최종 수정일: 7/31/2017]