반응형
클릭원스 쿼리스트링 값을 받기 위한 설정
- 솔루션 탐색기에서 프로젝트 우클릭 - 속성
- 게시 - 옵션
- 매니페스트 - 애플리케이션으로 URL 매개 변수가 전달되도록 허용
쿼리스트링의 데이터를 받기 위한 코드 설계
Program.cs
- 솔루션 탐색기에서 Program.cs 파일 열기
- 아래의 코드를 Program 클래스 안에 붙여넣기
private static Dictionary<string, string> GetQueryStringParameters()
{
Dictionary<string, string> contentsData = new Dictionary<string, string>();
try
{
if (ApplicationDeployment.IsNetworkDeployed)
{
string url = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
if (string.Empty == queryString) return (contentsData);
int nIndex = queryString.IndexOf("?");
if (nIndex > -1) queryString = queryString.Remove(nIndex, 1);
queryString = Uri.UnescapeDataString(queryString);
string[] dataPairs = queryString.Split('&');
if (dataPairs != null && dataPairs.Length > 0)
{
foreach (string pair in dataPairs)
{
string[] vars = pair.Split('=');
if (!contentsData.ContainsKey(vars[0]))
{
contentsData.Add(vars[0], vars[1]);
}
}
}
}
}
catch (Exception)
{
}
return (contentsData);
}
(Program.cs 전체 소스 코드)
더보기
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Deployment.Application;
using System.Windows.Forms;
namespace hwp
{
static class Program
{
/// <summary>
/// 해당 애플리케이션의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public static Dictionary<string, string> GetQueryStringParameters()
{
Dictionary<string, string> contentsData = new Dictionary<string, string>();
try
{
if (ApplicationDeployment.IsNetworkDeployed)
{
string url = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];
string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
if (string.Empty == queryString) return (contentsData);
int nIndex = queryString.IndexOf("?");
if (nIndex > -1) queryString = queryString.Remove(nIndex, 1);
queryString = Uri.UnescapeDataString(queryString);
string[] dataPairs = queryString.Split('&');
if (dataPairs != null && dataPairs.Length > 0)
{
foreach (string pair in dataPairs)
{
string[] vars = pair.Split('=');
if (!contentsData.ContainsKey(vars[0]))
{
contentsData.Add(vars[0], vars[1]);
}
}
}
}
}
catch (Exception)
{
}
return (contentsData);
}
}
}
Form1.cs : C# 애플리케이션에서 데이터 호출
- Form1.cs 파일 열기
- 매개변수의 값을 전달 받을 변수 선언 (dicParams)
- 쿼리스트링의 키 확인 (ContainsKey)
- 키가 있으면 해당 키의 값 호출
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 클릭원스 파라미터 데이터 확인
Dictionary<string, string> dicParams = Program.GetQueryStringParameters();
// 쿼리스트링으로 전달한 키 입력
if (dicParams.ContainsKey("data"))
MessageBox.Show(string.Format("data is {0}", dicParams["data"]));
}
}
쿼리스트링으로 데이터 넘겨주기 (JavaScript)
- 버튼을 누르면 클릭원스 프로그램이 실행되고 파라미터를 넘겨주기 위한 html 문서 작성
<script>
function getParameter(data) {
const baseUrl = '클릭원스 배포 url';
const appName = '애플리케이션 이름.application';
// 쿼리 스트링
const queryString = '?data=' + data;
// 형식 : www~/app1.application?query=value
const link = baseUrl + appName + queryString;
// 클릭시 클릭원스에 파라미터와 함께 앱 실행
window.open(link, '_blank');
}
</script>
<input type="button" onclick="getParameter('HelloWorld')" value="파라미터 값 전달하기">
- 버튼 클릭
- 클릭시 'HelloWorld' 문자열 데이터 윈폼 앱으로 전달
- 클릭원스 업데이트 확인
- 쿼리 스트링(URL 파라미터) 값 전달 확인
참고
반응형