반응형
시간이 좀 지체되었지만, 요걸 하고 있는 과정 중에도 여러 가지 문제가 생겼다.
뜻밖의 얘기들을 납품 직전에 거래처에서 듣게 되었는데...
사용할 브라우저가 IE 가 아니라 Chrome이라고 한다..
어처구니없지만
또 해야하는게 우리 엔지니어의 숙명인지라 하는 수없이 또 고민을 하였기에 남겨본다.
레지스트리 너란녀석....
우선 크롬으로 테스트할 html 페이지를 하나 만들어본다.
<!DOCTYPE html>
<html>
<head>
<title>SampleSystem</title>
<meta http-equiv="content-type" charset="shift-jis">
</head>
<style type="text/css"></style>
<script>
function execute(){
var target1 = document.getElementsByName("param1")[0].value;
var target2 = document.getElementsByName("param2")[0].value;
var target3 = document.getElementsByName("param3")[0].value;
var target4 = document.getElementsByName("param4")[0].value;
var target5 = document.getElementsByName("param5")[0].value;
var check1 = "0";
var check2 = "";
var check3 = "0";
var check4 = "";
var check5 = "";
for (var i = 0; i < document.Disconnection.DisconnectionFlag.length; i++) {
if(i==0){
if (document.Disconnection.DisconnectionFlag[i].checked) {
check2 = "1";
} else {
check2 = "0";
}
}
if(i==1){
if (document.Disconnection.DisconnectionFlag[i].checked) {
check5 = "1";
} else {
check5 = "0";
}
}
if(i==2){
if (document.Disconnection.DisconnectionFlag[i].checked) {
check4 = "1";
} else {
check4 = "0";
}
}
}
var target6 = check1 + check2 + check3 + check4 + check5;
location.href = "SampleSystem:" + "/" + target1 + "/" + target2 + "/" + target3 + "/" + target4 + "/" + target5 + "/" + target6;
}
</script>
<br>
SAMPLE
<form name="Disconnection" style="padding-left:20px">
test input1 : <input type="text" name="param1" value="test"><p>
test input2 : <input type="text" name="param2" value="sample"><p>
test input3 : <input type="text" name="param3" value="092-1111-1111"><input type="checkbox" class="bigCheck" name="DisconnectionFlag" style="position:relative; top:5px;"><p>
test input4 : <input type="text" name="param4" value="080-2222-2222"><input type="checkbox" class="bigCheck" name="DisconnectionFlag" style="position:relative; top:5px;"><p>
test input5 : <input type="text" name="param5" value="050-3333-3333"><input type="checkbox" class="bigCheck" name="DisconnectionFlag" style="position:relative; top:5px;"><br>
</form>
<input type="button" name="summit" style="position:relative; left:20px; top:0px; height:50px; width:200px;" value="SampleSystemAction" onclick="execute()">
※필자는 이미 SampleSystem이라는 호출되는 대상의 프로그램이 존재하고 있습니다.
호출될 대상의 프로그램은 초기에 실행될때에 args를 요구하고 있으며, "/"를 split 해서 사용할 예정입니다.
페이지를 작성하였으면 일단 그대로 한번 불러봅니다.
그러면 경고창이 나오면서 바로 실행은 되지 않는것을 볼 수 있을 것입니다.
이때에 필요한 것이 아래의 레지스트 제어입니다.
크롬을 제어하는경우
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001
인터넷 익스플로러를 제어하는 경우
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ProtocolExecute\samplesystem]
"WarnOnOpen"=dword:00000000
그리고 마지막으로 내 프로그램을 실행할때에 필요한 레지스트리 제어를 해주도록 한다.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SampleSystem]
@="URL:SampleSystem Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\SampleSystem\DefaultIcon]
[HKEY_CLASSES_ROOT\SampleSystem\shell]
[HKEY_CLASSES_ROOT\SampleSystem\shell\Open]
[HKEY_CLASSES_ROOT\SampleSystem\shell\Open\command]
@="\"C:\\Contact\\SampleSystem\\SampleSystem.exe\" \"%1\""
여기까지 하였다면 이제
처음에 만들었던 html 파일을 크롬 혹은 IE에서 실행해보자
그리고 페이지 표시가 되었다면 버튼을 한번 눌러봅시다.
오오... 아무런 경고창없이 그대로 내 컴퓨터에 설치되어 있는, 프로그램이 실행되었습니다~
레지스트리 제어파일의 배포는 인스톨러 작성시에 추가하실수 있으니 참고하세요.
반응형
'C#' 카테고리의 다른 글
C#으로 JIRA API REST 제어/연동하기 #2 검색 (0) | 2021.02.15 |
---|---|
C#으로 JIRA API REST 제어/연동하기 #1 (0) | 2021.02.15 |
WebPage에서 컴퓨터에있는 exe파일 실행하기 #1 (1) | 2020.08.05 |
WPF 성능 개선 초기 표시(렌더링) 속도개선 (0) | 2020.03.25 |
Drag and Drop 으로 파일을(PDF) 프리뷰 하기 (0) | 2020.01.06 |