Блогът на GunSmoker (преводи)

. когато промяната на нечий ум става толкова лесна, колкото програмирането на компютър, какво означава да си човек.

Прости неща, които можете да правите с ShellExecuteEx

Ето една малка програма.

Тази малка програма взема два параметъра, като първият е действието (глагол), а вторият е името на файла, върху който се извършва действието. Имайте предвид, че тъй като излизаме незабавно, трябва да зададем знамето SEE_MASK_FLAG_DDEWAIT: при нормални обстоятелства функцията ShellExecuteEx приема, че след като излезе, ще имате пусната помпа за съобщения. Това ще му позволи да се изключи бързо и всички необходими DDE съобщения ще бъдат обработени по-късно, когато пристигнат от DDE сървъра. Но ако нишката излезе веднага или изобщо не е GUI нишка (и двете са верни в нашата програма), тогава ще искате да потиснете това поведение, тъй като нямате цикъл за извличане на съобщения, за да прекратите DDE комуникацията. Задаването на флага SEE_MASK_FLAG_DDEWAIT показва, че функцията ShellExecuteEx трябва да завърши цялата необходима DDE работа, преди да върне контрола.

Както и да е, написах тази малка програма, за да илюстрирам два канонични глагола, които можете да използвате. Изглежда хората не осъзнават, че ShellExecuteEx може да се използва за това, защото често питат как да го направят.
Отваря прозорец за търсене с посочената папка в полето „Търсене в“.
Показва диалоговия прозорец Отваряне с файл.

MSDN казва, че вместо SEE_MASK_FLAG_DDEWAIT трябва да се използва SEE_MASK_NOASYNC.

И двата флага са числено равни. Току-що въведох псевдоним за по-ясна семантика. Флагът SEE_MASK_NOASYNC не е съществувал по времето, когато е била написана тази бележка.

Може би някой знае. От коя версия на Delphi се появи константата SEE_MASK_NOASYNC?

В RAD Studio 2010 модулът ShellAPI.

конст
SEE_MASK_NOASYNC = $ 00000100;
SEE_MASK_FLAG_DDEWAIT = SEE_MASK_NOASYNC;

Могат да се използват някои HTML тагове, например:

Моля, ако е възможно използвайте „Име/URL“ вместо „Anonymous“. Можете просто да пропуснете URL адреса.

Вашето съобщение може да бъде маркирано като спам от филтъра за нежелана поща - не се притеснявайте, то ще се появи след проверка от администратора.