Q&A

  • ShellContextMenu 문제
제가 shellcontextmenu를 프로그램에 사용하고 있는데 contextmenu를 보여줘야 하는 코드입니다.(contextmenu에 메뉴를 추가하는 것이 아니라)
얼마전 까지는 한 폴더의 파일들을 대상으로만 메뉴를 보여주면 되었는데, 지금은 여러폴더의 파일들을 대상으로 메뉴를 보여줘야 합니다.

탐색기의 [검색] 기능으로 검색을 하면 하드디스크의 여러 폴더에 있는 파일들이 검색되잖아요. 그 검색된 파일들을 선택하고 팝업메뉴를 띄우는 것과 같이 해야 하거든요.

특정 폴더의 파일들을 대상으로할 때는 shellfolder 를 쓰면되는데 여러 폴더의 파일이 섞여 있을 때는 어찌해야 하는지... 아무리 뒤져봐도 답을 찾을 수가 없네요.


Contextmenu 보여주는 코드 부분--------------------------------------

<!--CodeS-->
ShellFolder.GetUIObjectOf(Handle, PIDLCount, PIDL, IID_IContextMenu, nil, ContextMenu); // 이 부분에서 shellfolder를 어떻게 처리해야 할지요? 위에서 말씀드렸다시피 폴더가 여러개인데... 음냐. 제발 답변 좀 주세요. 미치겠습니다.


if ContextMenu = nil then Exit;        

PopupMenu := CreatePopupMenu;

ContextMenu.QueryInterface(IID_IContextMenu2, ContextMenu2);

if ContextMenu2 <> nil then begin
ContextMenu2.QueryContextMenu(PopupMenu, 0, 1, $7FFF, CMF_EXPLORE);
<!--CodeE-->
2  COMMENTS
  • Profile
    최용일 2005.07.13 22:34
    안녕하세요. 최용일입니다.

    제가 이쪽을 한지 오래되서 틀릴지도 모르겠는데...

    ShellFolder.GetUIObjectOf에서 두번째 파라매터 PIDLCount에 폴더/파일 갯수가 들어가고 그만큼 세번째 파라매터 PIDL에 폴더/파일의 PIDL들이 들어가면 그 상황에 맞는 메뉴가 떴던걸로 기억하는데...

    PIDLCount, PIDL을 먼저 한번 확인해보세요..

    ^^ 항상 즐코하세요...

  • Profile
    이길용 2005.07.15 11:48
    먼저 답변 주셔서 감사하구요.
    그런데 한폴더 내에 있는 파일들은 물론 그렇게 하면 메뉴가 나오는 건 알겠는데요.
    질문 내용 처럼 탐색기에서 검색기능으로 검색을 했을 경우에는 여러 폴더의 파일들이 검색되잖아요.
    이 때에는 ShellFolder.GetUIObjectOf 메서드의 ShellFolder를 어떻게 처리해야하는지...
    ShellFolder에 특정 폴더를 바운드 시키니 ContextMenu로 넘어가는 파일이름의 경로가  모두 그 폴더경로로 되더군요.
    아무래도 ShellFolder.GetUIObjectOf 메서드로는 안될 것 같고 다른 방법이 있을 것 같은데, 아무리 찾아봐도 그러한 예는 없네요. 거의 자포자기 상태입니다.



    • 허버벅
    • 2005.07.11 18:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정찬희
      2005.07.13 01:10
      Char * 은 PChar로 WORD는 똑같습니다...
    • 이길용
    • 2005.07.10 22:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.07.13 22:34
      안녕하세요. 최용일입니다. 제가 이쪽을 한지 오래되서 틀릴지도 모르겠는데... ShellFolder.GetUIOb...
    • 이길용
      2005.07.15 11:48
      먼저 답변 주셔서 감사하구요. 그런데 한폴더 내에 있는 파일들은 물론 그렇게 하면 메뉴가 나오는 건 알...
    • kivalan
    • 2005.07.09 19:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최순경
    • 2005.07.09 10:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권태훈
      2005.07.09 19:29
      float 연산에서 값이 정확하게 들어갈것이라고 생각했다간 큰코다침... 48.0 들어갈 자리에 47.99999696...
    • Galaxy
    • 2005.07.09 01:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 모영철
      2005.07.09 03:48
      먼저  if (Panel5.Controls[i] is TEdit) then 이문장이 True인데. (Panel5.Controls[i] as ...
    • Galaxy
      2005.07.12 20:35
      안녕하세요 수고 많습니다. DevLabelp[Ei4] .Top:=(Panel5.Controls[i] as TEdit).Top;   ...
    • 정대상
    • 2005.07.09 00:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2005.07.09 02:40
      자료실에 찾아보시면 LoadFromFile, SaveToFile이 지원되는 그리드가 있을겁니다. AdvStringGrid 머 그...
    • 장봉태
    • 2005.07.08 23:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2005.07.09 02:41
      Try    db.Connected := True; Except    Application.Terminate; end; ...
    • 장봉태
      2005.07.09 22:15
      그렇게하면 바로 Except 처리가 되면 좋은데 ODBC설정을 바꾸지 않으면 위의 메세지 CWBSY0002 가 나와...
    • 최동열
    • 2005.07.08 19:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2005.07.09 00:45
      안녕하세요. 최용일입니다. 어떤 폰트를 말씀하시는 건지... IDE의 Editor에서 사용하는 폰트는 Tool...
    • 이송미
    • 2005.07.08 07:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2005.07.15 23:32
      ^^; 물어보신건 아무 델파이 책에나 다 나오는 부분인데요... ^^; 글구 Insert, Update, Delete 등...
    • 배정은
    • 2005.07.08 05:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.07.08 07:13
      테스트는 해보셨나요? SELECT * FROM table1 WHERE field4 like '*html*'; 액세스에서 직접 테스트...
    • 조혜진
    • 2005.07.08 03:46
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 민스맘
      2005.07.09 02:43
      그게 일반 쿼리로는 안되구 다른 컴포넌트를 사용해야 하는 걸로 알고 있어요 StoredProc 이거던...
    • 조혜진
      2005.07.11 18:34
      음.... MS SQL 의 경우 QUERY 콤포넌트에서 SP_TEST 를 아래의 코딩처럼 CALL 해서 사용할 수 있습니다. ...
    • 최용일
      2005.07.08 02:19
      안녕하세요. 최용일입니다. 1비트 비트맵이라면 한 픽셀씩 읽음 당연히 0아니면 1로만 표시됩니다. ...
    • 아러브델파이
      2005.07.08 06:34
      안녕하세요. 답변 감사 드립니다 . 궁금한게 있어서 다시 질문드립니다. - Image[i,j]:=PixelData^; ...
    • 최용일
      2005.07.08 11:06
      안녕하세요. 최용일입니다. for문은 바뀌어야 되는게 맞지만.... 적으신 for문은 8의 배수로 나누어 떨...
    • 아러브델파이
      2005.07.08 18:02
    • 최용일
      2005.07.07 22:17
      안녕하세요. 최용일입니다. 리치에디트에서 LoadFromFile로 파일열때 fmOpenRead or fmShareDenyWrite로...
    • 온스
      2005.07.07 22:34
      감사합니다.
    • 모영철
      2005.07.07 20:29
      FieldByName이 문제 아닐까요.. Output 파라미터도 파라미터니깐 parambyname으로 하시면 되지 않을까.....
    • 조혜진
      2005.07.07 20:57
      음.... ALTER PROCEDURE SP_TEST (     PC_SEQ_NO CHAR(6)) RETURNS (  &...
    • 물총새
    • 2005.07.07 03:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.07.07 08:14
      현재 시스템이 키보드 입력이나 마우스 조작이 없으면 특정프로그램을 대기상태로 전환하거나 종료시키기위...
    • 물총새
      2005.07.07 20:07
      ================================================================== 우선 답변 고맙습니다. 말씀하...
    • nilriri™
      2005.07.08 07:01
      소스 내용을 보시면.. 마우스 이벤트를 훅킹하는 함수부분이 있습니다.. 여기에서 GRest; 이라는...
    • 메니아
    • 2005.07.06 23:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 조혜진
    • 2005.07.06 17:50
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2005.07.15 23:39
      스토어드 프로시져를 사용하는 이유는요. 별거 없습니다. 연산을 위해 많은 데이터를 클라이언트로 ...
    • 권태훈
      2005.07.07 01:12
      간단하게 생각하시면 됩니다. 두가지 기준으로 스토어드 프로시져를 사용합니다. 1.같은 sql 문장이 ...
    • 모영철
      2005.07.06 17:57
      그렇죠. 서버가 좀 무거워 지겠죠.. 하지만 미리 컴파일을 해놨기때문에 속도는 훨씬 빠릅니다. 스토...
    • 조혜진
      2005.07.06 18:22
      sql상의 컴파일된 프로시저와 stored proc 콤포넌트에 올려서 사용하는 경우의 차이점이 어케 되는지요 ? ...
    • 다트25
      2005.07.06 19:04
      sql에서 storedprocedure 는 compile 이라기보다 parcing 이 아닌가요? 죄송합니다. 질문인지 답변인지 ...
    • 물총새
    • 2005.07.06 03:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2005.07.06 03:53
      안녕하세요 하얀까마귀 입니다. 정확히 뭐가 문제가 되는지 잘 모르겟군요.. 아래와 같이 검색해서 ...
    • 물총새
      2005.07.07 20:14
           For K := MDIChildCount - 1 DownTo 0 Do Begin      ...