Персонализирано въвеждане на диалогов прозорец за изпълнение

Как да стартирам диалогов прозорец за изпълнение и да накарам приложението ми да въведе команда за стартиране на Steam?

Бих искал приложението ми да отвори стандартния диалогов прозорец за изпълнение на Windows, предварително попълнен с въведени данни.

Това е, което опитах:

HINSTANCE result;
result = ShellExecute(NULL, "open", "rundll32.exe", "steam://connect/192.69.96.168:27023", NULL, SW_SHOWDEFAULT);

Наистина не разбирам параметрите за ShellExecute и бих искал малко пояснение.

АКТУАЛИЗАЦИЯ

Мисля, че го накарах да работи:

HINSTANCE result;
result = ShellExecute(                            // WinExec is obsolete.
    0,                                        // hwnd
    "open",                                   // operation/verb.
    "steam://connect/192.69.96.168:27023",    // executable.
        "",                                        // parameters.
    NULL,                                     // directory
    SW_SHOW);                                 // how to be displayed 

person Quaxton Hale    schedule 26.11.2013    source източник
comment
Моля, изяснете: искате ли да стартирате нещо (тогава нямате нужда от диалоговия прозорец за изпълнение) или да отворите стандартния диалогов прозорец за изпълнение на Windows, предварително попълнен с вашите данни?   -  person Antoine    schedule 26.11.2013
comment

Работя върху подобряването на отчитането на грешки в задачата ми за компилатор. Обработвам незавършени коментари във Flex, като използвам следния код:

<INITIAL>"/*"       {BEGIN(COMMENT);}
<COMMENT>"*/"       {BEGIN(INITIAL);}
<COMMENT>([^*]|\n)+   {}
<COMMENT><<EOF>>    {yyerror("UNTERMINATED COMMENT"); BEGIN(INITIAL);}

Проблемът е, че анализаторът също отпечатва своето съобщение за грешка:

 $ ./comp tests/comments.cf 
 ERROR: UNTERMINATED COMMENT: 27
 ERROR: syntax error: 27

Как мога да инструктирам анализатора да не продължава работата си? Добавянето на exit след BEGIN(INITIAL) ми дава това, което искам, но изглежда не е начинът да се справя с него.

  -  person Quaxton Hale    schedule 26.11.2013


Отговори (1)


Разгледайте тук , взето от този свързан въпрос. Това ще отвори диалоговия прозорец за изпълнение.

След това, ако вашият процес има администраторски права, може да можете да извикате SetWindowText в манипулатора на полето за въвеждане на диалоговия прозорец, което ще намерите с FindWindowEx или подобно.

Наистина мисля, че е по-лесно да създадете свой собствен диалог за изпълнение, който изглежда като този на Windows и извиква ShellExecute, когато се щракне върху "ok".

person Antoine    schedule 26.11.2013