2013-03-24 1 views
0

Я хочу создать сценарий «Kingsoft Writer». Ниже приведен сценарий.Я хочу создать сценарий «Kingsoft Writer»

IfWinActive, ahk_class QWidget 
{ 
sleep 2000 
Click 486, 15 
Click 570, 93 
Send (various keystrokes) 
Return 
} 

Цель сценария заключается в следующем:

Я хочу использовать программу под названием "Kingsoft Writer".

Kingsoft Writer - бесплатная программа, в которой обладает всеми функциональными возможностями Microsoft Word. Но Kingsoft Writer загружается быстро и не является раздутым с медленной загрузкой колоколов и свистов , которые редко используются. Кроме того, интерфейс много более удобный.

Я хочу запрограммировать «Kingsoft Writer», чтобы открыть все текстовые файлы по умолчанию.

Я хочу отправить щелчки мыши и нажатия клавиш в этом недавно открывшемся окне «Kingsoft Writer» так, что я могу сделать интерфейс действительно хороший красивый и простой интерфейс. Он будет иметь цвет фона по моему выбору. Он отобразит только 1 панель инструментов вместо 5 или 6 , как в Microsoft Word. Другими словами, интерфейс будет основным улучшением над интерфейсом Microsoft Word .

Важнейшим усовершенствованием функции будет , насколько быстро Kingsoft Writer загружается по сравнению с Microsoft Word. Разница огромная.

Но все же он все еще будет иметь всю функциональность Microsoft Word. И это бесплатная загрузка!

Так что мне нужно создать сценарий, который, вероятно, не имеет горячей клавиши.

Мне нужно создать сценарий, который запускается всякий раз, когда появится окно «Kingsoft Writer». .

Я просмотрел все соответствующие слова в течение 2 часов. Но мне все еще не хватает идеи о том, как создать .

Пожалуйста, дайте мне несколько идей, чтобы помочь мне .

+0

Я думаю, ваш вопрос: «Как мне запускать скрипт каждый раз, когда я запускаю определенную программу?» Простым решением является переход от запуска программы к запуску скрипта и запуск сценария программы. (Если это действительно ваш вопрос, то, пожалуйста, удалите все посторонние обсуждения из вашего вопроса.) –

+0

Возможно, вы правы Раймондом. Может быть, вопрос должен быть «Как запустить скрипт каждый раз, когда я запускаю определенную программу?» Но я немного смущен. Я просто не уверен на 100%, если это вопрос, который я действительно пытаюсь спросить. кто-нибудь предлагает какие-либо мысли об этом? –

+0

Рад видеть, что вы не сдались, после того, как ваш предыдущий вопрос был закрыт, прежде чем я смог ответить. –

ответ

0

К сожалению, вы не можете использовать IfWinActive для запуска сценария так, как вы этого хотите. Есть решения, хотя.

Один из способов - запустить небольшой тестовый скрипт каждые 100-500 мс, чтобы узнать, активен ли KingSoft. Кроме того, вы можете использовать некоторые системные вызовы для запуска тестового скрипта каждый раз, когда фокус на любое окно изменяется. Вот пример!

Вариант 1 с ShellMessage

#SingleInstance 
#installKeybdHook 
#Persistent 
Global SwitchCounter 

Gui +LastFound 
hWnd := WinExist() 
DllCall("RegisterShellHookWindow", UInt,Hwnd) 
MsgNum := DllCall("RegisterWindowMessage", Str,"SHELLHOOK") 
OnMessage(MsgNum, "ShellMessage") 
Return 

ShellMessage(wParam) 
{ 
    If (wParam = 4) 
    { 
     IfWinActive, ahk_class QWidget 
     { 
      Sleep 2000 
      Click 486, 15 
      Click 570, 93 
      ;Send (various keystrokes) 
      Return 
     } 
    } 
} 
Return 

Вариант 2 Проверка с фиксированного интервала времени

#SingleInstance 
#installKeybdHook 
#Persistent 
SetTimer, CheckWin, 1000 ; This is executed on startup of AutoHotKey 
Return ; Anything below this point is not executed on startup 

CheckWin: 
WinGetTitle, CurrName, A 
If (CurrName = "KingSoft") 
{ 
    if (CurrName = PrevName) 
     Return ; Only continue if an other application was activated 
    PrevName = %CurrName% ; When new app, then sync CurrName and PrevName 
    SoundBeep, 500, 200 
    TrayTip, KingSoft, Activated, 2 
} 
Return 

Я только генерировать soundbeep и показать сообщение в системном трее. Интервал времени устанавливается равным 1000 мс, так как только звуковой канал принимает 200 мс. Решение таймера будет постоянно звучать, поэтому я проверяю изменение имени приложения. Сообщение ShellMessage будет выдавать только звуковой сигнал, когда вы по умолчанию ставите KingSoft.

Этот сценарий пришел из move GUI and daughter together, где вызвать действие, когда калькулятор и другие приложения должны вести себя так же (как свести к минимуму или восстановления в то же время)

Если это просто об обнаружении, если приложение работа, то использование настройки и делать ifWinExist каждые 200 мс может быть проще (хотя ShellMessage лучше).

+0

Oh btw Я понимаю, что вы хотите сделать своеобразное «плавающее» меню. Если это так, вы можете проверить [это] (http://stackoverflow.com/questions/15128707/autohotkey-trigger-script-when-a-certain-button-was-clicked-in-a-window/15135710#15135710) out! –

+0

Спасибо, Роберт, я изучаю лет ур. Я просто надеюсь, что это не над моей головой. Я новичок. –

+0

Я изучаю ваше «плавающее» решение меню. –