액티브엑스 컨트롤을 배포하다보면 인증서를 구입해야하는데..
요넘이 가격이 장난이 아니죠.. 사내에서만 사용하는데.. 또는 일부
몇몇만 쓰는데 이렇게 비싼넘을 살필요는 없죠..
그래서 우리는 테스트 인증서를 사용하는데 요넘도..문제가 있죠..
모양이 구리다.. 또 버전업이 될때마동.. 계속보인다..
요런... 그래서 저는 아래의 코딩으로 강제 설치하는 방법을 택했습니다.
제컴에서 테스트 했는데 잘되던데...
이 코딩을 하시기전에 인증서를 사용자 모르게 다운받는 부분을 여러분이
아라서 하셔야 겠죠~~
ShellExecute(NULL,"open","c:\\SoftGate\\ROOT.CER",NULL,NULL,SW_SHOWNORMAL);
Sleep(500);
HWND ht;
int cnt;
cnt = 0; //30000이넘으면 자동으로 포기하게끔..
do{
ht = ::FindWindow("#32770", "인증서");
ht = ::FindWindowEx(ht,NULL,"#32770","일반");
ht = ::FindWindowEx(ht,NULL,"Button","인증서 설치(&I)...");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","다음(&N) >");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","마침");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "루트 인증서 저장소");
ht = ::FindWindowEx(ht,NULL,"Button","예(&Y)");
if(ht==NULL)
ht = ::FindWindow("#32770", "인증서 가져오기 마법
사");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","확인");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서");
ht = ::FindWindowEx(ht,NULL,"Button","확인");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
}
요넘이 가격이 장난이 아니죠.. 사내에서만 사용하는데.. 또는 일부
몇몇만 쓰는데 이렇게 비싼넘을 살필요는 없죠..
그래서 우리는 테스트 인증서를 사용하는데 요넘도..문제가 있죠..
모양이 구리다.. 또 버전업이 될때마동.. 계속보인다..
요런... 그래서 저는 아래의 코딩으로 강제 설치하는 방법을 택했습니다.
제컴에서 테스트 했는데 잘되던데...
이 코딩을 하시기전에 인증서를 사용자 모르게 다운받는 부분을 여러분이
아라서 하셔야 겠죠~~
ShellExecute(NULL,"open","c:\\SoftGate\\ROOT.CER",NULL,NULL,SW_SHOWNORMAL);
Sleep(500);
HWND ht;
int cnt;
cnt = 0; //30000이넘으면 자동으로 포기하게끔..
do{
ht = ::FindWindow("#32770", "인증서");
ht = ::FindWindowEx(ht,NULL,"#32770","일반");
ht = ::FindWindowEx(ht,NULL,"Button","인증서 설치(&I)...");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","다음(&N) >");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","마침");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "루트 인증서 저장소");
ht = ::FindWindowEx(ht,NULL,"Button","예(&Y)");
if(ht==NULL)
ht = ::FindWindow("#32770", "인증서 가져오기 마법
사");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서 가져오기 마법사");
ht = ::FindWindowEx(ht,NULL,"Button","확인");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
Sleep(10);
}
cnt = 0;
do{
ht = ::FindWindow("#32770", "인증서");
ht = ::FindWindowEx(ht,NULL,"Button","확인");
cnt++;
if(cnt>30000)
return;
}
while(ht==NULL);
if(!(ht==NULL))
{
::PostMessage(ht, WM_LBUTTONDOWN, NULL, NULL);
::PostMessage(ht, WM_LBUTTONUP, NULL, NULL);
}
'Programming' 카테고리의 다른 글
C++ INI 파일 관련 클래스 (0) | 2007.10.16 |
---|---|
순서도 (0) | 2007.05.21 |
USB 드라이버 관련자료 (0) | 2007.04.27 |
IWebBrowser2::Document (0) | 2007.04.27 |
IWebBrowser2 Interface (0) | 2007.04.27 |