Сообщение Re[6]: Узнать путь к приложению из диалога "Открыть с помощь от 09.09.2021 11:37
Изменено 09.09.2021 11:40 Carc
Re[6]: Узнать путь к приложению из диалога "Открыть с помощью"
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, Carc, Вы писали:
ЕМ>>>Откуда этот код будет вызываться, в какое время, в каких условиях?
C>>User mode, по команде пользователя (кнопка, команда меню).
C>>дождаться в фоновом потоке завершения выбранного пользователем приложения
ЕМ>Все равно непонятно. Это Ваш код будет вызывать SHOpenWithDialog? Или Ваш код будет просто работать в совершенно левом процессе, и как-то мониторить такие события?
Нет. Тут всё предельно четко: мой код будет вызываться из меого же процесса (моим же кодом).
ЕМ>В любом случае, без хаков/хуков тут не обойтись, и это нормально. Система возвращает информацию о приложении, когда Вы запускаете его непосредственно, через CreateProcess или ShellExecute.
Именно это меня и интересует. ShellExecute(EX) может мне вернуть HANDLE процесса, который она запустит. Но только без окна выбора OpenWith. А именно оно мне и нужно.
ЕМ> А SHOpenWithDialog — это просто способ дернуть стандартную функцию из своего кода, она вообще может выполняться в контексте Explorer'а, и не предполагает подробного отчета о результате.
А нахрена она тогда она — функция SHOpenWithDialog — нужна?
Если убрать флаг OAIF_EXEC, то SHOpenWithDialog ничего не запустит, даже в случае выбора приложения пользователем + кнопка ОК. Но и путь к выбранному приложению, тоже не вернет. На кой тогда оно надо?
ЕМ>Здравствуйте, Carc, Вы писали:
ЕМ>>>Откуда этот код будет вызываться, в какое время, в каких условиях?
C>>User mode, по команде пользователя (кнопка, команда меню).
C>>дождаться в фоновом потоке завершения выбранного пользователем приложения
ЕМ>Все равно непонятно. Это Ваш код будет вызывать SHOpenWithDialog? Или Ваш код будет просто работать в совершенно левом процессе, и как-то мониторить такие события?
Нет. Тут всё предельно четко: мой код будет вызываться из меого же процесса (моим же кодом).
ЕМ>В любом случае, без хаков/хуков тут не обойтись, и это нормально. Система возвращает информацию о приложении, когда Вы запускаете его непосредственно, через CreateProcess или ShellExecute.
Именно это меня и интересует. ShellExecute(EX) может мне вернуть HANDLE процесса, который она запустит. Но только без окна выбора OpenWith. А именно оно мне и нужно.
ЕМ> А SHOpenWithDialog — это просто способ дернуть стандартную функцию из своего кода, она вообще может выполняться в контексте Explorer'а, и не предполагает подробного отчета о результате.
А нахрена она тогда она — функция SHOpenWithDialog — нужна?
Если убрать флаг OAIF_EXEC, то SHOpenWithDialog ничего не запустит, даже в случае выбора приложения пользователем + кнопка ОК. Но и путь к выбранному приложению, тоже не вернет. На кой тогда оно надо?
Re[6]: Узнать путь к приложению из диалога "Открыть с помощь
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, Carc, Вы писали:
ЕМ>>>Откуда этот код будет вызываться, в какое время, в каких условиях?
C>>User mode, по команде пользователя (кнопка, команда меню).
C>>дождаться в фоновом потоке завершения выбранного пользователем приложения
ЕМ>Все равно непонятно. Это Ваш код будет вызывать SHOpenWithDialog? Или Ваш код будет просто работать в совершенно левом процессе, и как-то мониторить такие события?
Нет. Тут всё предельно четко: мой код будет вызываться из моего же процесса (моим же кодом).
ЕМ>В любом случае, без хаков/хуков тут не обойтись, и это нормально. Система возвращает информацию о приложении, когда Вы запускаете его непосредственно, через CreateProcess или ShellExecute.
Именно это меня и интересует. ShellExecute(EX) может мне вернуть HANDLE процесса, который она запустит. Но только без окна выбора OpenWith. А именно оно мне и нужно.
ЕМ> А SHOpenWithDialog — это просто способ дернуть стандартную функцию из своего кода, она вообще может выполняться в контексте Explorer'а, и не предполагает подробного отчета о результате.
А нахрена тогда она — функция SHOpenWithDialog — нужна?
Если убрать флаг OAIF_EXEC, то SHOpenWithDialog ничего не запустит, даже в случае выбора приложения пользователем + кнопка ОК. Но и путь к выбранному приложению, тоже не вернет. На кой тогда оно надо?
ЕМ>Здравствуйте, Carc, Вы писали:
ЕМ>>>Откуда этот код будет вызываться, в какое время, в каких условиях?
C>>User mode, по команде пользователя (кнопка, команда меню).
C>>дождаться в фоновом потоке завершения выбранного пользователем приложения
ЕМ>Все равно непонятно. Это Ваш код будет вызывать SHOpenWithDialog? Или Ваш код будет просто работать в совершенно левом процессе, и как-то мониторить такие события?
Нет. Тут всё предельно четко: мой код будет вызываться из моего же процесса (моим же кодом).
ЕМ>В любом случае, без хаков/хуков тут не обойтись, и это нормально. Система возвращает информацию о приложении, когда Вы запускаете его непосредственно, через CreateProcess или ShellExecute.
Именно это меня и интересует. ShellExecute(EX) может мне вернуть HANDLE процесса, который она запустит. Но только без окна выбора OpenWith. А именно оно мне и нужно.
ЕМ> А SHOpenWithDialog — это просто способ дернуть стандартную функцию из своего кода, она вообще может выполняться в контексте Explorer'а, и не предполагает подробного отчета о результате.
А нахрена тогда она — функция SHOpenWithDialog — нужна?
Если убрать флаг OAIF_EXEC, то SHOpenWithDialog ничего не запустит, даже в случае выбора приложения пользователем + кнопка ОК. Но и путь к выбранному приложению, тоже не вернет. На кой тогда оно надо?