Меню пуск

Тема в разделе "WASM.BEGINNERS", создана пользователем kas, 2 апр 2006.

  1. kas

    kas New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2006
    Сообщения:
    12
    Вообщем надо открыть пуск и выбрать в меню "выполнить"

    Но дело в том что после открытия.. меню не реагирует не на какие WM_ACTIVE..

    Можкт кто подскажет как это выполнить или есть другой способ открыть в меню "выполнить"
     
  2. Vasil

    Vasil Василь

    Публикаций:
    0
    Регистрация:
    7 янв 2006
    Сообщения:
    228
    Адрес:
    Ижевск
    Если знать класс и текст заголовка окна, то можно так:



    invoke FindWindow, addr szClassName, addr szWindowName

    .IF eax != NULL

    invoke ShowWindow, eax, SW_SHOWNORMAL

    .ENDIF
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    shell32.dll экспортирует (по ординалу) функцию для открытия окна "Запуск программы".
     
  4. kas

    kas New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2006
    Сообщения:
    12
    rmn

    и как функц. называется?
     
  5. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Код (Text):
    1.  
    2. push    offset aShell32_dll ; "SHELL32.DLL"
    3. push        3Dh
    4. push        eax
    5. call        GetProcAddress
    6. push        NULL
    7. push        NULL
    8. push        NULL
    9. push        NULL
    10. push        NULL
    11. push        NULL
    12. call        eax
    13.  


    Пришлось выдрать это из LiteStep :) В отладчике эта функция обзываетя Ordinal61. По Ordinal 61 в shell32.dll находится функция PickIconDlg, которой естессно в shell32.inc нет. Вот только несоответствие получается: в msdn написано, что у этой функции (PickIconDlg) 4 параметра, а не 6, да и вообще эта функция показывает окно с предложением выбрать иконку из файлов, так что лучше используй, как я написал.
     
  6. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    mix_mix

    3Dh != 61 ? :)
     
  7. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    rmn

    Представь себе :) Если не веришь, то открой калькулятор

    мелкомягкий в инженерном режиме, введи число 61, а затем перелючись на с Dec на Hex.
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    #62 (SHChangeIconDialogA)

    #61 (SHRunDialogA)

    #60 (SHShutDownDialog)



    Гугл рулит.
     
  9. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    IceStudent

    Это у тебя под какую систему??? У меня ни в одной библиотеке функции SHRunDialogA нету, включая shell32.dll. Сомневаюсь, что в 2003 Server'e ее убрали.
     
  10. kas

    kas New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2006
    Сообщения:
    12
    ну так что... не кто не знает как открыть в Пуске "выполнить"?
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    kas

    Вроде ж показали:
    Код (Text):
    1.                 invoke  GetModuleHandle, SADD("Shell32.dll")
    2.                 invoke  GetProcAddress, eax, 61
    3.                 push    NULL
    4.                 push    NULL
    5.                 push    NULL
    6.                 push    NULL
    7.                 push    NULL
    8.                 push    NULL
    9.                 call    eax




    mix_mix

    Отнеси свой калькулятор в ремонт :)
     
  12. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    cresta

    Ты думаешь я не проверял? У меня все прекрасно работает с 3D, все открывается.

    Насчет калькулятора:

    3D<sub>16</sub>=13*16<sup>0</sup>+3*16<sup>1</sup>=13*1+3*16=13+48=61<sub>10</sub>

    Учи математику :) (без обид)
     
  13. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Лучше учи логику, т.к у меня с математикой нормально, и без калькулятора знаю, что 3D == 61 :)



    rmn





    mix_mix





    Вчера ты считал, что 3Dh != 61, а сегодня что

    3Dh == 61



    Хе-хе ...
     
  14. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    cresta

    Ты меня не првильно понял, я с самого момента считал, что 3Dh == 61, и думал, что ты думаешь наоборот :)
     
  15. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    mix_mix

    Я привёл ординалы, если сомневаешься, проверь, что у тебя за функции под ними. У меня верно.
     
  16. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    IceStudent

    #3Eh (GetFileNameFromBrowse )

    #3Dh (PickIconDlg)

    #3Ch вообще такого ординала нету :)

    Посмотрите сами скриншот (черно-белый; 35,3Кб).

    З.Ы. Упорядочено по ординалам, то есть их нет где-то там, внизу :)



    [​IMG] _74558888__screen.png
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ну не знаю, у меня PickIconDlg под #62 :)

    Вот пример в аттаче, правда, PickIconDlg не работает, но что это он - видно под отладчиком.

    [​IMG] 81997841__neg.zip