Q&A

  • 파일을 생성했는데요...
엑셀이나 한글 같은경우 파일이 생성되면 파일의 아이콘이 해당 프로그램에서 제공되는 아이콘으로 바뀌어서 어떤 종류의 파일인지 windows탐색기등에서 알수 있는데요..

제가 만든 프로그램에서도 파일을 생성시키는데 이 파일들에 대한 고유한 아이콘을 제공하고 싶습니다.

방법을 알고 싶은데요..

단순한 생각으론 레지스트리부분에서 관리 하고 있는듯 싶은데..

정확한 대답을 듣고 싶습니다...
2  COMMENTS
  • Profile
    최용일 2002.01.11 22:17
    안녕하세요. 최용일입니다.

    레지스트리에 아래와 같은 형식으로 값들을 써주시면 됩니다.

    [HKEY_CLASSES_ROOT확장자]
    Default Value=파일형식
    예) [HKEY_CLASSES_ROOT.pas]
         Default=DelphiUnit

    [HKEY_CLASSES_ROOT파일형식]
    Default=파일종류
    AlwaysShowExt="" (= 문자열값)
    BrowserFlags=$00000008 (=8 DWORD값)
    EditFlags=$00010000 (=65536 DWORD값)
    예)[HKEY_CLASSES_ROOTDelphiUnit]
        Default=Delphi Source File
        AlwaysShowExt="" (= 문자열값)
        BrowserFlags=$00000008 (=8 DWORD값)
        EditFlags=$00010000 (=65536 DWORD값)

    Default값을 제외한 Value는 없어도 되는 값들이구요...
    AlwaysShowExt는 탐색기에서 알려진 확장자 숨기기옵션을 체크해도 항상 확장자가 보이게 할때 쓰입니다. 문자열값으로 하나 생성해서 아무런 데이터도 넣어주실 필요는 없구요...
    BrowserFlags와 EditFlags는 웹에서 링크클릭하면 바로 다운로드되어서 실행되게 할때 쓰이는 값으로 DWORD형식으로 8과 65536을 넣어주시면 됩니다.

    [HKEY_CLASSES_ROOT파일형식DefaultIcon]
    Default=아이콘파일[, 아이콘인덱스]
    예)[HKEY_CLASSES_ROOTDelphiUnitDefaultIcon]
        Default=C:BorlandDelphi5BinDelphi32.exe, 5
    이건 탐색기에서 파일이름앞에 보이는 아이콘을 설정하는 것입니다.
    .ico파일이 아니라 실행파일이나 dll같은것들 내에 있을때는 뒤에 인덱스를 붙여주시면 됩니다.

    [HKEY_CLASSES_ROOT파일형식Shell]
    Default=동사
    예)[HKEY_CLASSES_ROOTDelphiUnitShell]
        Default=Open
    여러가지 동사들중에서 디폴트를 설정하는 것입니다. 동사가 하나밖에 없으면 설정할 필요는 없습니다.
    동사란 쉽게 말해서 명령들이라고 할 수도 있는데요. 탐색기에서 파일을 오른쪽클릭하면 팝업메뉴가 뜨잖아요. 보시면 여러가지 명령들이 있죠. 열기, 잘라내기, 붙여넣기, 복사, ... 등등... 이런것들을 말합니다.
    위에서 말한 동사들이 여러개 있을때, 이것들 중에 탐색기에서 메뉴 안띄우고 바로 클릭해서 실행할 때 디폴트로 실행될 명령어를 적어주시면 됩니다.

    [HKEY_CLASSES_ROOT파일형식Shell동사]
    Default=명령어
    예) [HKEY_CLASSES_ROOTDelphiUnitShellOpen]
        Default=&Open
    이것은 탐색기 팝업메뉴에 표시될 문자열을 적어주시면 됩니다. 그냥 디폴트로 아무것도 안 적어주시면 위의 동사가 그대로 표시되구요. 단축기는 영문 문자열 앞에 &를 적어주시면 됩니다. 한글은 안됩니다. 위의 예를 한글로 표시하실려면 다음처럼 "열기(&O)" 하시면 되겠죠...

    [HKEY_CLASSES_ROOT파일형식Shell동사Command]
    Default=실행파일 패스
    예)[HKEY_CLASSES_ROOTDelphiUnitShellOpenCommand]
        Default=C:BorlandDelphi5BinDelphi32.exe %1
    이 키는 파일에 연결된 실행파일의 풀패스를 적어주시면 됩니다. 뒤에 %1을 넣어주시면 실행파일 실행될때 클릭한 파일이 파라매터로 들어가게 됩니다.

    레지스트리에는 위와 같이 넣어주시면 되는데, 탐색기를 재 실행하지 않은한 아이콘이 바뀌지는 않을겁니다.

    아래와 같이 ShellApi유닛에 있는 함수를 써서 업데이트를 시켜주세요...

    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);

    ^^ 항상 즐코하세요..

  • Profile
    전민식 2002.01.14 20:44
    최용일님 덕분에 해결 되었습니다.. 넘 감사 합니다...

    • 나옹이
    • 2002.01.11 23:02
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2002.01.12 01:03
      TWain 드라이버를 사용하셔서 이미지를 받으시면 됩니다. Twain은 스케너 , 디치털 카메라 등에서 사용합...
    • 나옹이
      2002.01.12 02:11
      Twain 드라이버는 .. 따로 설치를 해야 하는건가요? 자료실에 보면.. 정욱님께서 올려주신 MultiDe...
    • 오은경
    • 2002.01.11 22:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 블랙썬
    • 2002.01.11 22:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이희정
      2002.01.12 00:10
      mdb파일의 위치가 임의로 변할 수 있다면 문제가 되지만 프로그램 설치시나 기타 사용자가 정하는 ...
    • 장영철
    • 2002.01.11 21:13
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.01.11 22:28
      안녕하세요. 최용일입니다. 실행파일과 dll은 서로 다른 프로세스로 실행됩니다. 그러니까 이 경우는 us...
    • 장영철
      2002.01.11 22:54
      님께서 적어주신 방법대로 캡션을 변경하는 것은 문제 없이 되었으나 제가 예를 잘못 들어 제가 고민하고...
    • 최용일
      2002.01.12 02:50
      똑같은 방식으로 하면 되지 않나요? 파라매터나 필드로 Form_Main객체를 넘겨주시면 되죠... 뭐 별로 다...
    • 장영철
      2002.01.12 03:30
      답변 고맙습니다. 한번 고생좀 해 보겠습니다. 아직 델파이 문법이 약해 다양한 경우를 해보지 못하...
    • 오진욱
    • 2002.01.11 20:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 전민식
    • 2002.01.11 20:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.01.11 22:17
      안녕하세요. 최용일입니다. 레지스트리에 아래와 같은 형식으로 값들을 써주시면 됩니다. [HKEY_CLAS...
    • 전민식
      2002.01.14 20:44
      최용일님 덕분에 해결 되었습니다.. 넘 감사 합니다...
    • 아폴론
    • 2002.01.11 19:58
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 윤수아
      2002.01.11 20:46
      P_qr 가 nil일 경우를 체크 해주셔야 할 것 같네요
    • 아폴론
      2002.01.12 00:12
      A폼에서 Fm206rpt폼의 콤포넌트를 찾는건데 폼이 다르면 아래의 구문으로는 안되나요? P_qr이 nil일 경...
    • 최용일
      2002.01.12 03:01
      안녕하세요. 최용일입니다. Self는 자기 자신을 가리킵니다. 그러니까 Self.FindComponent를 하시면 ...
    • 아폴론
      2002.01.12 04:04
      with Fm206rpt do begin      for i := 48 to 59 do begin    &nb...
    • 박철식
    • 2002.01.11 17:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김선일
      2002.01.11 18:56
      ^^;; 왜 굳이 Memo Type을 String으로 바꾸시려 하시는지... Table에서는 String Type이면 255자가...
    • 김황중
    • 2002.01.11 17:25
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정해영
      2002.01.11 18:19
      프린트 포트랑 시리얼 포트 방식이 다르군요... 큰 도움이 될것 같습니다. 우선 컴포넌트를 구해야 겠네...
    • 김기수
      2002.01.11 18:21
      단축키까지는 모르겠지만 폼위의 컴포넌트들의 미세조정은 Ctrl 키와 화살표를 사용하시면 가능하구요, ...
    • 최경습
    • 2002.01.11 07:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 술친구
      2002.01.11 20:06
      비밀번호 틀렸을때 한줄이 빠진듯한데여..          &nb...
    • 최경습
      2002.01.11 23:29
      감사합니다. 이렇게 답변을 해주시니. 근데. 이렇게 했는데두. 안되는데..어찌된 일인지. 제가 잘...
    • 이정관
      2002.01.11 21:05
      com port를 사용해서 텍스트를 쓰거나 읽기 위해서는 Com Port를 핸들링할수 있는 컴포넌트가 있어야하구요...
    • 델파이탐크루즈
      2002.01.11 05:22
      이런 답변 쓰기 쑥스럽네여...  ^^; 하지만 모른다니까.. 헤헤.. 하지만 용기를 내어 .... ...
    • 손병욱
      2002.01.11 05:45
      우선 알려 줘서 고맙습니다. 한가지 묻고 싶은데요 질문에도 종류가 있나요?.. ^^: 그럼..
    • 델파이탐크루즈
      2002.01.11 19:47
      꼭 그런건 아니지만 이런질문은 책만 보면 나오는 것이거든요... 모르는건 물어보는것은 잘못된것이 아...
    • 백치미
    • 2002.01.11 04:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경열
      2002.01.11 08:31
      with Query do begin    close;    sql.Clear;    sql.Add('select 코...
    • sonny
    • 2002.01.11 04:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이정관
      2002.01.11 04:09
      특정필드값에 NULL를 삽입시에는  update table_t set t_date = null하셔야 하구요 strtodat(ed...
    • 이경열
      2002.01.11 08:39
      edit1.text := ''; 꼭 날짜 형식으로 저장 하셔야 하나염? 음..그게 아니라면...그냥... 에디트가 널이...