Author Topic: как проверить открыт ли блокнот?  (Read 2724 times)

0 Members and 2 Guests are viewing this topic.

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
как проверить открыт ли блокнот?
« on: November 05, 2014, 08:54:22 PM »
надо проверить, открыт ли блокнот, и если нет, то открыть, если да, то не открывать второй.
в кликермане смотрю - блокнота нет, но по скрипту
Code: (clickermann) [Select]
$hwnd_bloknot = wndfind("Блокнот")
print("$hwnd_bloknot=", $hwnd_bloknot)
показывает, что есть, попробовал сделать так ($hwnd - основная программа, с которой буду работать):
Code: (clickermann) [Select]
$hwnd_bloknot = wndfind("Блокнот")
print("$hwnd_bloknot=", $hwnd_bloknot)
IF ($hwnd_bloknot = 0)
    execute("notepad.exe")
    $hwnd_bloknot = wndfind("Блокнот")
        Wait(4)
    WNDBUMP($hwnd) // помещает окно на передний план
Wait(4) 
  ELSE
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
WNDPOS ($hwnd_bloknot, 50, 50) 
    WNDSIZE( wndfind("Блокнот"), 300, 300)
    $hwnd_bloknot_test = HGET(60, 60)
    IF($hwnd_bloknot = $hwnd_bloknot_test)
                            // очищаю содержимое блокнота
    KEYDOWN(#CTRL)
        waitms(13)
    KEYPRESS(#A)
        waitms(13)
    KEYUP(#CTRL)
        waitms(13)
    KEYPRESS(#DELETE)
        waitms(23)
    WNDBUMP($hwnd) // помещает окно на передний план
    ELSE_IF
    execute("notepad.exe")
            Wait(4)
$hwnd_bloknot = wndfind("Блокнот")
WNDBUMP($hwnd) // помещает окно на передний план
    Wait(4) 
    END_IF
END_IF
в итоге если блокнота нет, он открывается, если есть, то запускается второй блокнот

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: как проверить открыт ли блокнот?
« Reply #1 on: November 05, 2014, 09:07:04 PM »
В блокноте два окна
   IF($hwnd_bloknot = $hwnd_bloknot_test)
внутреннее окно имеет другой HWND поэтому запустится еще один блокнот

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: как проверить открыт ли блокнот?
« Reply #2 on: November 05, 2014, 09:12:06 PM »
я сначала получаю $hwnd_bloknot. Как я думал, если это = 0, то запускаю блокнот, $hwnd_bloknot имеет конкретное значение, хотя блокнот нигде не открыт, я пытался его активировать - облом. В итоге мне нужно переключаться с блокнота на другую программу и наоборот...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: как проверить открыт ли блокнот?
« Reply #3 on: November 05, 2014, 09:13:46 PM »
Так ты любое окно в заголовке которого написано блокнот захватишь, например эту страницу.

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
Re: как проверить открыт ли блокнот?
« Reply #4 on: November 05, 2014, 10:06:10 PM »
спасибо, вопрос решился так:
Code: (clickermann) [Select]
$hwnd_bloknot = wndfind("__NotDelete.txt")
print("$hwnd_bloknot=", $hwnd_bloknot)

IF ($hwnd_bloknot = 0)
    execute("__NotDelete.txt")
    $hwnd_bloknot = wndfind("__NotDelete.txt")
        Wait(2)
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
  ELSE
    WNDBUMP($hwnd_bloknot) // помещает окно на передний план
WNDPOS ($hwnd_bloknot, 50, 50) 
    WNDSIZE($hwnd_bloknot, 500, 300)
    KEYDOWN(#CTRL)
        waitms(13)
    KEYPRESS(#A)
        waitms(13)
    KEYUP(#CTRL)
        waitms(13)
    KEYPRESS(#DELETE)
        waitms(23)
END_IF

  WNDBUMP($hwnd) // помещает основное окно на передний план
    wait(2)