Что нового

Определение Handle по клику левой кнопкой мыши в окнах

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Всем Здравствуйте! Возникла такая проблема, не могу определить надл окна на которое нажимаю, нужно для того, чтобы при нажатии в любом месте кроме окна "меню" закрывалось "меню"-(отдельное окно с кнопками). Я сделал вывод хандл через "вывод в консоль"
Как правильно это реализовать?
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ListBoxConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#include <GuiButton.au3>
#include <WinAPI.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <SendMessage.au3>
#include <String.au3>
#include <File.au3>
#include <Date.au3>
#include <GuiListBox.au3>

#include <Icons.au3>
#include <GuiImageList.au3>
#include <GuiButton.au3>

Opt("GUIOnEventMode", 1)

Global $okno_1 = GUICreate("", 600, 300, 100, 100)
GUISetState()
Global $start = GUICtrlCreateButton("Нажми начало", 0, 0, 100, 100)
GUICtrlSetOnEvent($start, "ab")
Global $okno_2 = GUICreate("", 500, 200, 100, 100, $WS_POPUP, $WS_EX_MDICHILD + $WS_EX_COMPOSITED, $okno_1)
Global $new_okno = GUICtrlCreateButton("Потом новое окно", 0, 0, 100, 100)
GUICtrlSetOnEvent($new_okno, "bb")
GUISetBkColor(0xFFFFFF)
Global $fff
AdlibRegister("a", 50)
GUISetState()
GUISwitch($okno_1)
GUISetState()

While 1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;######################################
    Sleep(1000) ; Цикл ожидания     ;######################################
WEnd

Func ab()
    $fff = 1
EndFunc   ;==>ab
Func bb()
    Global $okno_3 = GUICreate("", 300, 300, 300, 0, $WS_POPUP, $WS_EX_MDICHILD + $WS_EX_COMPOSITED, $okno_1)
    GUISetBkColor(0xE0FFFF)
    Global $prosto_knopka = GUICtrlCreateButton("меню", 0, 0, 50, 50)
    AdlibRegister("y", 50)
    GUISetState()
    GUISwitch($okno_3)
EndFunc   ;==>bb
Func y()
    If _IsPressed("01") And @GUI_WinHandle <> $okno_2 Then
        GUIDelete($okno_3)
    EndIf
EndFunc   ;==>y
Func a()
    If $fff = 1 Then
        Global $ssss
        $ssss = $ssss + 1
        ConsoleWrite(@GUI_WinHandle & "  " & $ssss & @CRLF)
    EndIf
EndFunc   ;==>a
 
Автор
M

mmsgeorge

Новичок
Сообщения
96
Репутация
0
Хоть я и нажимаю в разных окнах и у них разные хандл, но окно "меню не закрывается" Но и хандл в консоли тоже один и тот же. Помогите пожалуйста.


Добавлено:
Сообщение автоматически объединено:

Отступление.
Нашел решение! Знаете чем хорош этот форум, тем что тут много уже чего есть и скорее всего уже есть ответ на ваш вопрос.. Но найти это, надо еще постараться, так как поиск - работает отвратно.. (я раз 16 пробовал хоть что то найти, но каждый раз ему нужна более конкретный запрос. Да лучше бы он вывел хоть что то, хоть миллион сообщений, но хоть что-то, чем вообще ничего. Хорошо, что есть Гугл. Советую искать по сайту через гугл, упростит задачу в разы) А теперь по делу..

Решение.
Получилось получить хандл через это -
Код:
WinGetHandle("[ACTIVE]", "")
, раньше искал так -
Код:
@GUI_WinHandle.

Отступление.
В следующий раз и примера делать не буду.. Так как все равно никто не ответит. Админов и профессионалов уже наверно достали одни и те же вопросы.. Люди они очень отзывчивые, но только если получится их завлечь. Я их понимаю, очень высокий уровень знания, а тут какой то человечишка, такой глупый вопрос задает, пфф. (Но для этого человечишхи, этот вопрос очень важен и пока потолок его знаний) Да и заняты очень они еще.. Если честно, за все прибывание на форуме, мне лишь в 2 темах написали быстрее чем я сам нашел решение и этим людям я безмерно благодарен. Остальные же кто заходят посмотреть, сами ничего не знают!) В общем, поиск Гугл вам в помощь! Вообще я давно писал, что отлично было бы, если было бы , что то типа Чата, где люди кто сейчас на сайте, сидя в разных комнатах, могли другу другу помогать, где сидели бы новички и профи и задавали бы вопросы, получали ссылки на темы форума или напрямую ответ.. На многие вопросы смогли бы помочь и любители. А так, делаешь проект, ждешь ответа сутки, а через сутки ответа и нет, очень неудобно.. Не ругайте сильно, накипело да и не без причин! Всех Благ!
 

StarEdik

Новичок
Сообщения
365
Репутация
4
Вот что советуют
https://autoit-script.ru/index.php?topic=21781.msg127863#msg127863
И попробуйте так
Код:
If _IsPressed("01") And WinGetTitle("[ACTIVE]")<>'#160' Then GUIDelete($okno_3)
 

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
mmsgeorge [?]
поиск - работает отвратно
как искать

Тупо введи поисковой запрос "autoit как получить хэндл окна" и в первой ссылке получаешь ответ. Странно что это является проблемой.
 
Верх