вызов из контектсного меню

Discussion in 'WASM.BEGINNERS' started by _faq_, Feb 12, 2011.

  1. _faq_

    _faq_ New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2008
    Messages:
    46
    Здравствуйте!
    При нажатии правой кнопкой мышки по файлу/папке появляется системное контекстное меню. Задача программно указать нужный файл, вызвать (скрытно) данное меню и нажать на один из пунктов. Каким образом это можно сделать или хотя бы в какую сторону копать?
    Спасибо
     
  2. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    SHGetDesktopFolder(&pDesktop)
    pDesktop->ParseDisplayName(NULL, NULL, lpwszDisplayName, &cbEaten, &pidl, &dwAttribs)
    pDesktop->BindToObject(pidl, NULL, IID_IShellFolder2, (LPVOID *)&pFolder)))
    pFolder->GetUIObjectOf(hWnd, 1, (LPCITEMIDLIST *)&pidl, IID_IContextMenu, NULL, (LPVOID *)&pCtxMenu)
    pCtxMenu->InvokeCommand(&cmi);
     
  3. _faq_

    _faq_ New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2008
    Messages:
    46
    Partner
    спасибо!
    Разобрался..почти. У меня получилось вызвать один из пунктов, не выбирая его. Но для этого пришлось еще создать и заполнить меню. Есть ли возможность обойтись без этих действий?
     
  4. _faq_

    _faq_ New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2008
    Messages:
    46
    Еще нашел статью http://rsdn.ru/article/qna/winshell/filemenu.xml
    В итоге для заданного файла/каталога выводится меню, но оно не содержит некоторые пункты. Например, у меня установлен winrar, и в контекстном меню он есть, но программно (с помощью данной статьи) не получается вывести данные пункты. Как можно и их отобразить?
     
  5. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    pCtxMenu->QueryContextMenu()
     
  6. _faq_

    _faq_ New Member

    Blog Posts:
    0
    Joined:
    Mar 14, 2008
    Messages:
    46
    ага, ну, я как бы так и делал =)
    а есть мысли по второму вопросу?