상세 컨텐츠

본문 제목

브라우저에서 바로 프로그램 실행 관련 (플래시, Custom URL schemes 등등)

WEB/html5

by AlrepondTech 2018. 12. 6. 16:03

본문

반응형

 

 

=================================

=================================

=================================

 

 

 

출처: http://developerking.tistory.com/71

 

 

윈도우에서 브라우저와 로컬 응용프로그램과 통신하기 위해서는 대다수들이 액티브엑스 방식으로 통신하여 로컬 응용프로그램에 접근할 수 있도록 개발합니다.

 

웹 브라우저 -> 액티브엑스 -> 개인 PC에 설치된 응용프로그램

이런 방식으로 웹 브라우저에서 할 수 없는 기능들을 각 클라이언트 로컬에 응용프로그램을 설치하도록 유도하고 실행되도록 하는 것이 액티브엑스의 기능입니다.

하지만 액티브엑스에 대한 유저들의 사용에 대한 번거로움과 보안에 대한 문제점이 점차 커지고 있습니다.

이에 따라 이번에 제가 소개하려는 것이 바로 Custom URL schemes입니다.

개인적으로는 액티브엑스에 대한 대안으로 Custom URL schemes 을 선택하여 실제 업무에서 기존 액티브엑스를 제거하고 이 방법을 채택하고 라이브 하였습니다.

일단 Custom URL schemes 장점은 브라우저별 특성을 타지 않고 로컬에 있는 응용프로그램을 호출할 수 있다고 할 수 있습니다.

게다가 개발자 입장에서 구현하는 데에 크게 어려운 부분이 없습니다.

일단 웹브라우저에서 Custom URL schemes을 호출하기 위해서는 로컬 레지스터에 등록해줘야 합니다. 인스톨할 때에 레지스터에 등록해주면 좋겠죠.

 

 

일단은 [Windows]키 + R 을 클릭한 후 그림과 같이 레지스트리 편집기를 엽니다.

 

 

 

 

 

레지스트리 편집기에서 [HKEY_CLASSES_ROOT] 에 키를 생성합니다.

 

 

 

 

이때 주의할 점은 고유의 키값을 만들어야 합니다. 쉽게 말씀드리면 다른 응용프로그램과 이름이 겹치면 안된다는 것입니다. 저는 임시로 test로 생성하였습니다.

 

 

 

 

그리고 test키 값안에 문자열을 추가합니다.

문자열 값은 "URL protocol" 로 입력해줘야 합니다.

 

 

 

 

 

그리고 test 키값을 생성하는 방법과 같이 하위에 shell -> open -> command를 아래의 그림과 같이 생성해 줍니다.

 

 

 

 

그리고 마지막 command 키 값 안에 문자열을 편집하여 

"응용프로그램 실행될 경로" "%1" 을 입력해줍니다.

"%1"은 인자값을 받기 위함이고 인자값을 받아야 하는 부분이 있다면 추가 해주셔야합니다. 

 

 

 

이렇게하면 레지스트리에 등록이 완료 됩니다.

이제 웹 브라우저에서 "test://인자값" 을 호출하면 레지스트리에 지정한 응용프로그램을 실행할 수 있습니다.

 

 

 

 

"appname://인자값" 형태로 호출하게 되면 실행될 응용프로그램에서 인자값을 전달 받을 수 있습니다.

밑에는 크롬에서 호출되는 팝업창이 뜹니다. 

간혹 외부 프로토콜 요청 팝업이 뜨지 않으신 분들은 크롬 설정 부분에 마그넷 설정에서 차단으로 설정되있을 수 있습니다.

 

 

 

 

이렇게해서 계산기가 실행된 것을 확인하실수 있습니다.

 

 

 

위와 같이 윈도우에서 Custom URL schemes 방식으로 호출하는 방법을 소개하였습니다. 윈도우에서 실제 이 방식으로 쓰는 프로그램도 있지만 대다수가 모바일 환경에서 이 방식을 사용합니다. 

 

https://msdn.microsoft.com/ko-kr/ko/library/aa767914(v=vs.85).aspx

 

해당 URL에서 더 구체적으로 Custom URL schemes 방법을 소개하고 있으니 참고하시면 될 것같습니다.

 

Custom URL schemes 를 통한 응용프로그램 호출에도 몇가지 단점이 있습니다.

위에 설명했듯이 레지스트리에 호출되는 네임이 고유의 값이여야 한다는 것입니다. 만약 다른 응용프로그램과 호출 네임이 같다면 둘 중에 어느것이 호출될지 모릅니다.

또한 브라우저에서 호출시 클라이언트 팝업창에서도 확인 할 수 있듯이 호출 내용을 확인할 수 있습니다. 이런 점은 공격 당하기 쉬운 부분이 될 수 있죠.

 

추가적으로 nsis 인스톨러를 사용하시는 분들은 인스톨시에 아래와 방법을 참고하시어 레지스트리에 등록하시면 도움이 될 것같습니다.

 

  WriteRegStr HKCR "${Appname}" "URL protocol" ""

  WriteRegStr HKCR "${Appname}\shell" "" "open"

  WriteRegStr HKCR "${Appname}\shell\open" "" "command"

 

  WriteRegStr HKCR "${Appname}\shell\open\command" "" '"설치경로\Appname.exe" "%1"'

 

출처: http://taehyun71.tistory.com/1

 

 

 

 

반응형

 

 

728x90

 

 

 

=================================

=================================

=================================

 

 

출처: http://drake.kr/402

 

 

fscommand("exec","파일명.exe") 

* 디렉토리 경로는 자동으로 "fscommand/파일명.exe"으로 지정됨


fscommand폴더 안에 있는 실행파일(exe)만 실행됨.
fscommand폴더 바로 상위에 플래시 파일에 해당 명령어를 적용한다.

ex 01 버튼에 적용


on (release) {
 fscommand("exec", "index.exe"); 

//fscommand 디렉토리의 index.exe를 실행

 fscommand("quit") ; 

//현 플래시 플래이어를 종료

}

ex 02 프래임에 적용



onEnterFrame = function () {
 fscommand("exec", "index.exe");
 fscommand("quit")
};

!! 포함된 디렉토리 내에 한글 파일명이 존재 할 경우 플래시 실행파일은 로드무비가 실행되지 못함.





파일이나 폴더를 플래시로 컨트롤


Note:
 

exec 

is not capable of opening a specific file with an application, just the application itself. One way to open files is to use

 exec

to launch a Windows batch (BAT) file or Macintosh AppleScript file that then opens files in the desired application. A third-party tool that can open specific files on Windows without using batch files is available from Flashjester.한마디로 BAT 즉 배치파일을 만들어서 그걸 이용해서 플래시 버튼에 적용시키거나,
아니면 Flashjester라는 프로그램을 이용...??



quit
 

| 무비를 종료 할 때 사용
Fscommand("quit")

fullscreen

 | true,false | 무비를 전체면으로 볼때 true, 아닐 경우 false.
Fscommand("fullscreen"," true")

allowscale 
| 사용자가 임의로 사이즈를 조절하게 할 때 true, 조정하지 못하게 할 때 false
Fscommand("allowscale"," true")

showmenu

 | 마우스를 오른쪽 버튼을 클릭했을 경우 메뉴 true, 보이지 않게 할 때 false
Fscommand("showmenu "," true")

exe 

| 실행하고자 하는 실행 파일의 경로를 지정한다.
Fscommand("exe "," true")

 

풀 스크린
fscommand("fullscreen", "true");

창 크기 변형없게
fscommand("showmenu", "false");



| FSCommand 명령의 종류

FullScreen(true) : 실행 스크린의 크기를 크게 만든다. 

FullScreen(false) : 커진 스크린을 원래의 크기로 만든다. 

AllowScale(true) : 마우스 커서로 스크린 및 심벌의 크기도 함께 조절한다. 

AllowScale(false) : 심벌의 크기는 조절이 안되고 스크린 범위만 조절된다.
 
ShowMenu(true) : 위쪽 메뉴, 마우스 오른쪽 버튼의 풀다운 메뉴를 보인다. 

ShowMenu(false) : 위쪽 메뉴, 마우스 오른쪽 버튼의 풀다운 메뉴를 감춘다. 

Trapallkeys(true) : 키보드의 키를 사용할 수 없게 된다. 

Trapallkeys(false) : 키보드의 키를 사용할 수 있다. 

Exec : exe 파일 등 실행 파일을 실행시킨다. 

Quit : 실행 스크린을 닫는다. 



출처: http://drake.kr/402 [DRAKE]

 

 

=================================

=================================

=================================

 

 

 

반응형


관련글 더보기

댓글 영역