1 (изменено: serzh82saratov, 2012-09-12 04:34:50)

Тема: AHK: Идентификация процесса скрипта

Суть вопроса, в том что есть два моих скрипта один компилированный без Gui, другой некомпилированный с Gui. Нужно запретить их одновременное присутствие в процессах. Компилированный хотелось бы закрывать не по названию процесса, ну а не компилированный вообще не пойму как, процессов AutoHotkey.exe может быть множество.
Может как-то можно задавать некий идентификатор скрипта при его "написании", и по нему закрывать.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2 (изменено: creature.ws, 2012-09-13 03:24:59)

Re: AHK: Идентификация процесса скрипта

OnMessage(Send_WM_HIGHLANDER(DllCall("RegisterWindowMessage", "Str", "WM_HIGHLANDER")), "Receive_WM_HIGHLANDER")

Receive_WM_HIGHLANDER(wParam, lParam)
{
    If (lParam <> A_ScriptHWND)
        ExitApp
    return true
}

Send_WM_HIGHLANDER(WM_HIGHLANDER)
{
    PostMessage, WM_HIGHLANDER, 0, A_ScriptHWND,, ahk_id 0xFFFF
    return WM_HIGHLANDER
}

Запуск нового скрипта, содержащего пример выше, вызывает закрытие ранее запущенного скрипта, содержащего идентичный код.

3

Re: AHK: Идентификация процесса скрипта

Круто.
Но ничего не понятно.

хотя бы что такое A_ScriptHWND?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Идентификация процесса скрипта

Какой замечательный вопрос.

5 (изменено: serzh82saratov, 2012-09-12 07:01:10)

Re: AHK: Идентификация процесса скрипта

Запуск нового скрипта, содержащего пример выше, вызывает закрытие ранее запущенного скрипта, содержащего идентичный код.

То есть просто поместить в секции авто выполнения, обоих скриптов Ваш код? Или в любое место?

Какой замечательный вопрос.

В русской справке нет. А это 

The unique ID (HWND/handle) of the script's hidden main window.

к сожалению не наводит ни на какие мысли.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6 (изменено: creature.ws, 2012-09-12 07:05:21)

Re: AHK: Идентификация процесса скрипта

То есть просто поместить в секции авто выполнения, обоих скриптов Ваш код? Или в любое место?

OnMessage(Send_WM(DllCall("RegisterWindowMessage", "WStr", "WM_HIGHLANDER")), "Receive_WM")

— в авто выполнение.
Пример в сообщении #2 исправлен.

7 (изменено: serzh82saratov, 2012-09-12 07:11:39)

Re: AHK: Идентификация процесса скрипта

некомпилированный скрипт почему то не запускается...

добавляется в процессы, и не закрывает другой.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Идентификация процесса скрипта

некомпилированный скрипт почему то не запускается...

добавляется в процессы, и не закрывает другой.

Так не запускается или добавляется?

Пример работает, проверен.

9

Re: AHK: Идентификация процесса скрипта

добавляется в процессы, но непоявляется Gui.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10 (изменено: creature.ws, 2012-09-12 07:29:34)

Re: AHK: Идентификация процесса скрипта

Пример проверен, работает. Попробуйте переустановить hands.sys драйвер.

Может return вы тоже скопировали и вставили? Где return там секции автовыполнения и конец.
В примере он для того и присутствует, чтоб вопросов не возникало, что куда копировать.

11

Re: AHK: Идентификация процесса скрипта

Просто вставляю сверху каждого скрипта этот код.
hands.sys драйвер переустановил несколько раз

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Идентификация процесса скрипта

creature.ws, замечательный пример. На мой взгляд, он должен быть в Коллекции.

Только, чтоб избежать путаницы с использованием, как у нашего великомудрого ТС, во 2ой строке return нужно убрать,
а сам скрипт сохранить на диск под именем OneInstance.ahk (к примеру) и прописывать в начале нужных скриптов:

#include OneInstance.ahk

13

Re: AHK: Идентификация процесса скрипта

return я не приметил, всё работает!

А могут ли скрипты AutoHotkey назначать некую "совсем" глобальную переменную, для всей системы?

А посчёт этого, никто знаниями не поделится?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Идентификация процесса скрипта

return я не приметил, всё работает!

Может return вы тоже скопировали и вставили? Где return там секции автовыполнения и конец.
В примере он для того и присутствует, чтоб вопросов не возникало, что куда копировать.

Без комментариев

Irbis, согласен, исправил сообщение #2,  добавлю сразу как придумаю однозначное название темы.
По аналогии, можно реализовать иное поведение скриптов:

OnMessage(Send_WM_KINGOFTHEHILL(DllCall("RegisterWindowMessage", "Str", "WM_KINGOFTHEHILL")), "Receive_WM_KINGOFTHEHILL")

Receive_WM_KINGOFTHEHILL(wParam, lParam)
{
    If (lParam <> A_ScriptHWND) {
        priorDetectHiddenWindows := A_DetectHiddenWindows
        DetectHiddenWindows, On
        WinKill, ahk_id %lParam%
        DetectHiddenWindows, % priorDetectHiddenWindows? "On":"Off"
    }
    return true
}

Send_WM_KINGOFTHEHILL(WM_KINGOFTHEHILL)
{
    PostMessage, WM_KINGOFTHEHILL, 0, A_ScriptHWND,, ahk_id 0xFFFF
    return WM_KINGOFTHEHILL
}

Естественно, оба примера уместно было бы свести в один, но тогда не будет работать концепция «включение опции использованием #Include».

15

Re: AHK: Идентификация процесса скрипта

Господа подскажите способ как один скрипт может запускать метки, и вызывать функции в другом заранее определённом скрипте.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Идентификация процесса скрипта

serzh82saratov, если бы ты разобрался, как работает вышеприведённый скрипт, у тебя бы этого вопроса не возникло, который, кстати, не по теме.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Идентификация процесса скрипта

teadrinker пишет:

serzh82saratov, если бы ты разобрался, как работает вышеприведённый скрипт, у тебя бы этого вопроса не возникло, который, кстати, не по теме.

Если бы я смог понять как работает вышеприведённый скрипт, я бы таких вопросов не задавал.
Думал что по теме, предлагаете создать тему?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

Re: AHK: Идентификация процесса скрипта

Возможно, стоит попросить creature.ws прокомментировать свой код (чего он почему-то не очень любит делать), тогда все вопросы должны отпасть сами собой. Ну, а вообще — MSDN тебе в помошь, если хочешь разобраться в функциях, вызываемых через DllCall.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

19

Re: AHK: Идентификация процесса скрипта

teadrinker пишет:

Ну, а вообще — MSDN тебе в помошь, если хочешь разобраться в функциях, вызываемых через DllCall.

Я там ничего не пойму...
Просто хочется узнать

как один скрипт может запускать метки, и вызывать функции в другом заранее определённом скрипте.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: Идентификация процесса скрипта

serzh82saratov пишет:

Я там ничего не пойму...
Просто хочется узнать

Ну, здесь второе противоречит первому.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

21 (изменено: serzh82saratov, 2012-09-24 03:10:48)

Re: AHK: Идентификация процесса скрипта

teadrinker пишет:
serzh82saratov пишет:

Я там ничего не пойму...
Просто хочется узнать

Ну, здесь второе противоречит первому.

узнать - посмотреть на примере

как один скрипт может запускать метки, и вызывать функции в другом заранее определённом скрипте.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: Идентификация процесса скрипта

Посмотреть и узнать — не одно и то же. А пример был несколькими постами выше. Один скрипт может посылать другому сообщения, второй — их принимать, и в зависимости от номера принятого сообщения выполнять предустановленные действия. Но чтобы понять, как это работает, нужно разобраться в примере, и тут мы приходим начальной точке.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder