GUI - Графический интерфейс и т.п.

User's plugins

GUI - Графический интерфейс и т.п.

Postby Ilya » Mon, 30 Jun 2008, 01:20

Графический интерфейс и т.п.
Last edited by Ilya on Mon, 30 Jun 2008, 01:30, edited 1 time in total.
Ilya
 
Posts: 445
Joined: Mon, 07 Aug 2006, 09:51
Location: Санкт-Петербург

Hажатие пункта меню по названию окна и тексту меню/подменю

Postby Ilya » Tue, 29 Jul 2008, 20:26

Прислал г-н AlikasS
Code: Select all
\ File: menu_click.spf
\ 21 декабря 2004 г., 20:05:06 в эхо-конференции
\ Vadim Belko писал
\ Hажатие пункта меню по названию окна и тексту меню/подменю
\ тема на форуме "Можно ли средствами nncron скрыть/показать системное меню?"
\ http://nncron.ru/forums/viewtopic.php?f=5&t=396
\ примеры
\ WIN-MENU-CLICK: "окно" "пункт меню 1" "подпункт меню 2..n" до конца стpоки
\ WIN-MENU-CLICK: "LOG.txt - Блокнот" "&Файл" "Сохранить &как..."

WINAPI: GetMenu USER32.DLL
WINAPI: GetSubMenu USER32.DLL
WINAPI: GetMenuStringA USER32.DLL
WINAPI: GetMenuItemCount USER32.DLL
WINAPI: GetMenuItemID USER32.DLL
WINAPI: GetMenuState  USER32.DLL
WINAPI: IsMenu USER32.DLL

USER-CREATE MenuStrBuf 256 USER-ALLOT
1024 CONSTANT MF_BYPOSITION
273 CONSTANT WM_COMMAND

: ?string, ( -- ?) get-string
        ?DUP IF POSTPONE XSLITERAL TRUE
        ELSE DROP FALSE THEN ;
: ?eval-string, ( -- ?) ?string, DUP IF POSTPONE EVAL-SUBST THEN ;

: n2DROP ( n -- ) ?DUP IF DUP 0> IF 0 DO 2DROP LOOP ELSE DROP ." n2DROP: Error- n<0" CR THEN THEN ;
: hmenu-click { itempos hmenu hwnd -- }
    MF_BYPOSITION itempos hmenu GetMenuState 3 ( MF_DISABLED MF_GRAYED OR) AND
0=
    IF  \ на всякий случай - не тpогать отключеннные пункты меню
      itempos hmenu GetMenuItemID
      ( id) 0 SWAP WM_COMMAND hwnd PostMessageA DROP
    THEN
;
: WalkSubMenu ( a* u* I hSubMenu cnt0 -- a** u** cnt ) { hSubMenu cnt0 \ cnt -- cnt }
\ a* u* - стpоки на стеке в количестве cnt0
\ I-номеp, hSubMenu-handle пpосматpиваемого подменю (в случае главного меню окна: -1 hmenu)
\ a** u** - оставшиеся стpоки на стеке в количестве cnt
    cnt0 TO cnt
    ( I) DUP 0< IF DROP ELSE ( I) hSubMenu GetSubMenu TO hSubMenu THEN
    hSubMenu IsMenu 0= IF ." 1WalkSubMenu: не найдено меню - '" 2DUP TYPE ." '"
CR cnt EXIT THEN
    hSubMenu GetMenuItemCount DUP 0>
    IF ( itemcount) 0
    DO            \ цикл по item-ам
        2DUP      ( a u) \ заданный текст пункта меню
        MF_BYPOSITION 254 MenuStrBuf 1+ I hSubMenu GetMenuStringA MenuStrBuf C!
        MenuStrBuf COUNT ( 2DUP TYPE CR ) \ полученный текст
        2SWAP WC-COMPARE
        IF        \ пункт найден
            cnt 1- TO cnt 2DROP
            cnt 1 <
            IF
              I hSubMenu WIN-HWND hmenu-click
            ELSE
              I hSubMenu cnt RECURSE TO cnt
            THEN
            LEAVE
        THEN
    LOOP
    ELSE DROP THEN
    cnt cnt0 = IF ." WalkSubMenu: не найден пункт меню - '" 2DUP TYPE ." '" CR
THEN
    cnt \ количество стpок, оставшихся на стеке
;

: WIN-MENU-CLICK ( -1 a* u* -- ) { \ cnt -- }
    \ смена поpядка стpок на стеке с подсчетом их количества
    2 TO cnt \ в цикле счетчик количества стpок - удвоенный
    BEGIN DUP -1 <> WHILE
      cnt ROLL DUP -1 <> IF cnt 1+ ROLL SWAP THEN
      cnt 2+ TO cnt
    REPEAT
    DROP cnt 2/ 1- TO cnt
    cnt 2 < IF cnt n2DROP EXIT THEN

    cnt 1- TO cnt
    WIN-EXIST? NOT IF cnt n2DROP ( ." WIN-MENU-CLICK: нет окна" CR ) EXIT THEN
    \ WIN-ACTIVATE: "%WIN-HWND%" \ для активирования окна
    -1 WIN-HWND GetMenu cnt WalkSubMenu n2DROP \ pекуpсивный пpосмотp подменю
;
: WIN-MENU-CLICK: POSTPONE -1 BEGIN ?eval-string, NOT UNTIL POSTPONE WIN-MENU-CLICK ; IMMEDIATE
Ilya
 
Posts: 445
Joined: Mon, 07 Aug 2006, 09:51
Location: Санкт-Петербург

Переключает по Win-T Radeon-ы с тв-выходом с монитора на тел

Postby Ilya » Wed, 22 Oct 2008, 00:54

Ссылка на источник
Code: Select all
\ Переключает по Win-T Radeon-ы с тв-выходом с монитора на телек и по той же комбинации обратно. Возможно придётся подправить задержки.
#( Monitor-TV-Monitor
NoLog
WatchHotKey: "$t"
Action:
ShowNormal NormalPriority
START-APP: rundll32 shell32,Control_RunDLL desk.cpl
110 PAUSE
4 0 DO SEND-KEYS: "^{TAB}" LOOP
250 PAUSE
WIN-CLICK: "Свойства: Экран" "Допо&лнительно"
5 0 DO SEND-KEYS: "^{TAB}" LOOP
3 0 DO SEND-KEYS: "{TAB}" LOOP
SEND-KEYS: " "
SEND-KEYS: "{ENTER}"
WIN-CLICK: "Свойства: Экран" "ОК"
)#
Ilya
 
Posts: 445
Joined: Mon, 07 Aug 2006, 09:51
Location: Санкт-Петербург

"Произвольный" GUI-интерфейс

Postby Ilya » Thu, 30 Apr 2009, 22:32

Поскольку пока сильная запарка (а я обещал), то пока просто тупые ссылки.
Попозже собираюсь создать небольшой мануал с примерами.
Всё (архив) нужное для подключения:forguiplugins.zip
Ilya
 
Posts: 445
Joined: Mon, 07 Aug 2006, 09:51
Location: Санкт-Петербург

Генератор меню

Postby VoidVolker » Sun, 23 Aug 2015, 20:43

Генератор меню
Обсуждение
Скачать menu.spf

Пример:
Code: Select all
<%

Menu: MyMenu

    Item: Item 1
        ." Item 1 run" CR
    ;Item

    Item: Item 2
        ." Item 2 run" CR
    ;Item

    ----

    SubMenu(

        Item: Item 3
            ." Item 3 run" CR
        ;Item

        Item: Item 4
            ." Item 4 run" CR
        ;Item

    )SubMenu: Submenu

;Menu

%>

#( Show_my_menu
\ NoActive
SingleInstance
WatchHotKey: "{F3}"
Action:
MyMenu MenuShowAtCursor
)#

#( Show_my_menu
\ NoActive
SingleInstance
WatchHotKey: "{F4}"
Action:
MyMenu MenuShow
)#

#( Show_my_menu
\ NoActive
SingleInstance
WatchHotKey: "{F5}"
Action:
100 100 MyMenu MenuXY!
MyMenu MenuShow
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56


Return to Plugins

Who is online

Users browsing this forum: No registered users and 1 guest

cron