통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이 
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 남정현 주민 12182 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리
 일정관리

 질문&답변
 리소스안에 실행파일 실행시키기  | WinForm Program 2007-05-18 오전 3:56:54
소은희 (cbell87)  소은희님께 메시지 보내기소은희님을 내 주소록에 추가합니다.소은희님의 개인게시판 가기 번호: 76332  / 읽음:204

안녕하세요

 

프로그램 짜다가 궁금한게 있어서요

 

제가 지금 만드는 프로그램에 예전에 만들어 두었던 프로그램을 호출할 일이 생겼는데요

 

단일실행 프로그램이라 리소스로  a.exe 라는놈은 리소스 파일 추가 하였습니다.

 

리소스에 추가된 이미지는 Properties.Resources.이미지

 

이런식으로 접근하였는데 실행시킬파일은 어떻게 접근 해야되는가요

 

ProcessStartInfo a = new ProcessStartInfo("a.exe");

Process.Start(a);

 

단순히 이렇게 해서는 접근이 안되는것같아요 리소스에 포함된파일이라

 

경로지정말고 이것을 실행시키는 방법좀 부탁드리겠습니다.

 

좋은하루되세용

이 글에 답변 등록하기
 [답변]GetManifestResourceNames로... 2007-05-18 오후 1:26:53
이정석 (neo6001)  이정석님께 메시지 보내기이정석님을 내 주소록에 추가합니다.이정석님의 개인게시판 가기 번호: 76357  

안녕하세요. 소은희님.

 

리소스안에 있는 파일을 실행시키는것은 어렵지는 않지만 리소스에 추가한 a.exe라는

파일을 아는것도 중요하지요. 실행하고자 하는 대상이 있어야 하니까요.

 

GetManifestResourceNames라는 메소드인데 2.0에 새로추가된것입니다. 모든 리소스의 string배열을

리턴합니다.

이 메소드를 이용하시면 a.exe 실행파일을 접급할 수 있지만 직접 실행을 시키지 못하므로 로컬에 a.exe

파일을 만들어서 실행할 수 있는 예제를 첨부하니 참고하시기 바랍니다.

 

// 예제  - 리소스이 notepad.exe라는것을 추가하여 리소스에 있는 notepad.exe를  로컬에

// 저장하는것입니다.

// 로컬에 저장된 notepad.exe는 ProcessStartInfo 를 사용하여 실행하시면 됩니다.

 

          Assembly asm = Assembly.GetExecutingAssembly();

 

            string fullName = null;

            foreach (string str in asm.GetManifestResourceNames())

            {

                if (str.EndsWith("notepad.exe"))

                {

                    fullName = str;

                    break;

                }

            }

 

            Stream file = asm.GetManifestResourceStream(fullName);

            FileStream outFile = new FileStream("notepad.exe", FileMode.Create);

            int bufferLen = 1024;

            byte[] buffer = new byte[bufferLen];

            int bytesRead;

            do

            {

                bytesRead = file.Read(buffer, 0, bufferLen);

                outFile.Write(buffer, 0, bytesRead);

            } while (bytesRead != 0);

            outFile.Close();

EndFragment- 

리소스에 있는 파일을 위의 예제와 같이 접근하시면 되므로 도움이 되시기 바랍니다.

감사합니다.

EndFragment- 
이 글에 답변 등록하기
         [답변]답변 감사합니다. 2007-05-18 오후 6:03:41
소은희 (cbell87)  소은희님께 메시지 보내기소은희님을 내 주소록에 추가합니다.소은희님의 개인게시판 가기 번호: 76383  

 저번에두 제 글에 답변 달아주신분? 같은데 ^^;

 

아무튼 넘넘 감사하구요 답변 잘받아보았습니다.

 

소스대로 실행해보니 역시 잘되었구요. 오늘도 좋은거 하나 배웁니다.

 

감사감사.

 

p.s 로컬에 올린다는 말은 정확히 어느곳에다가 올라가는지 궁금하네용

     어딘가 파일이 만들어질껀데~ ^^

이 글에 답변 등록하기
                 [답변]^^ 2007-05-18 오후 8:06:38
이정석 (neo6001)  이정석님께 메시지 보내기이정석님을 내 주소록에 추가합니다.이정석님의 개인게시판 가기 번호: 76394  

소은희님 도움이 되셨다니 제가 감사합니다.

제가 도움이 된다는것이 저로서는 기쁩니다.

 

로컬에 올린다는 말(?) 아마 로컬경로를 말씀하시는거 같습니다.

FileStream outFile = new FileStream("notepad.exe", FileMode.Create);

 

이렇게 Files을 생성하는 위치가 현재 어플리케이션의 실행이 되는 위치 즉 bin\Debug가 되겠죠,.

일반적으로 디버깅을 한다면 그 경로에 notepad.exe가 만들어질겁니다.

특정한 경로가 주어지지 않는다면 어플리케이션의 실행하는 위치와 동일한 위치에 만들어지죠.

확인해보세요 ^^

 

감사합니다.

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2010-서울강남-00026호
서울시 강남구 논현동 87-2 미래빌딩 5층 / TEL. 02_6719_6200 / FAX. 02-6499-1910 / 대표: 홍영준
Copyright ⓒ (주) 데브피아. All rights reserved.