|
김상열 님이 쓰신 글 :
: 익스플로어의 URL기입 콤보 박스를 보면 전에 친 URL의 일부를 넣으면
: 그것과 동일한 URL 리스트가 나오잖아요?
:
: 그건 어떻게 구현한 거죠..??
:
: 너무 초보적인 질문인가??
:
: 설명 좀 부탁드립니다. 혹 소스라도 있으시면 이해가 더 빠를 것 같은데...^^(무지의 욕심)
:
: 그럼 즐프하세요...^^
안냐세영...
상열님이 말씀하시게.. 정확한 용어는 모르겠습니다만
"콤보박스 근접검색" 이라고 이야기들 하더군여..
답변이 달려 있던데 더 정확한 답변을 해 드릴려구 이렇게 올렸슴돠.
그 URL은 파일에 저장하는것이 아니구여..레지스트리에 저장합니다.
레지스트리의 정확한 경로는
HKEY_CURRENT_USER -> Software -> Microsoft -> Internet Explorer -> TypedURLs
에 저장되어 있구여..
익스플로러가 최초에 깔릴때는 비어있습니다.
사용자가 URL을 쳐서 사이트를 이동할때마다 여기에 저장이 되구여..
상열님께서 이야기하는 "콤보박스 근접검색" 도 여기 URL을 참조해서 불러온답니다.
소스도 아울러 올릴께여..쩝
급하게 만들어서 오류가 있겠지만 약간 수정해서 쓰세여..-_-;;;
참고로 콤보박스를 Cbo_Browser로 Name을 줬구여 콤보박스 옆에 있는 이동 버튼을 Btn_Go로
명명했습니다..
(레지스트리에서 불러오는 루틴까지 포함하면 소스가 길어지므로 여기선 생략하구여
필요하시면 메일 주세여. 그러면 불러오는 루틴까지 작성해 드리져..)
void __fastcall TFrm_Main::Cbo_BrowserChange(TObject *Sender)
{
AnsiString Addr=Cbo_Browser->Text, bro;
int i, xlen;
if (Cbo_Browser->Text.Trim() != ""){
Btn_Go->Enabled=true;
if (delmode==true) return; //삭제중일때는 작동안함...
if (Addr.Length() < 2) return;
for (i=0; i<=Cbo_Browser->Items->Count-1; i++){
bro=Cbo_Browser->Items->Strings[i];
if ( bro.SubString(1, Addr.Length())==Addr){
xlen=Addr.Length();
Cbo_Browser->Text=Cbo_Browser->Items->Strings[i];
Cbo_Browser->SelStart=xlen;
Cbo_Browser->SelLength=Cbo_Browser->Text.Length();
return;
}
}
}
else{
Btn_Go->Enabled=false;
}
}
void __fastcall TFrm_Main::Cbo_BrowserClick(TObject *Sender)
{
if (Cbo_Browser->DroppedDown==false){
if (Btn_Go->Enabled==true){
Bro_Main->Navigate(Variant(Cbo_Browser->Text));
}
}
}
void __fastcall TFrm_Main::Cbo_BrowserKeyPress(TObject *Sender, char &Key)
{
if (Key=='\b'){
delmode=true;
}
else{
delmode=false;
}
if (Key==13){
Navi();
}
}
void __fastcall TFrm_Main::Navi()
{
int cnt = Cbo_Browser->Items->Count;
AnsiString addr=Cbo_Browser->Text, url[40];
for (int i=0; i<=39; i++){
url[i]="";
}
bool ok=false;
for (int i=0; i<=cnt-1; i++){
if (Cbo_Browser->Items->Strings[i]==addr){
Cbo_Browser->Items->Move(i, 0);
ok=true;
break;
}
}
if (ok==false){
Cbo_Browser->Items->Insert(0,addr);
}
else{
for (int i=0 ; i<=cnt-1; i++){
url[i]=Cbo_Browser->Items->Strings[i];
}
Cbo_Browser->Items->Clear();
for (int i=0; i<=cnt-1 ; i++){
Cbo_Browser->Items->Add(url[i]);
}
}
Bro_Main->Navigate(Variant(addr));
}
헤더파일의 Private 에
void __fastcall TFrm_Main::Navi();
bool delmode;
위 두줄 넣어 주시면 되구여...
위에서 말씀 드렸다 시피...지금 이 소스는 레지스트리에서 불러와서 근접검색 하는 방식이 아니구
단순히 콤보박스에 Add 한다음 거기에 있는 URL을 근접검색 하는 방식입니다.
실제로 코딩 하실때는 레지스트리에서 읽어오고..저장하고 이런 루틴이 있어야 할것입니다.
참고로.. 익스플로러의 시작페이지가 저장된 레지스트리 경로는..
HKEY_CURRENT_USER -> Software -> Microsoft -> Internet Explorer -> Main
에 보시면 Start Page 라고 있습니다. 거기에 저장되어 있죠..
그럼 즐프하세요..
|