76

Re: AHK: Работа с потоками autohotkey.dll

Если компилировать с паролем - CONTINUABLE EXCEPTION_ACCESS_VIOLATION.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

77

Re: AHK: Работа с потоками autohotkey.dll

Так с AutoHotkey.dll не нужно под AHK_H компилировать.

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

78

Re: AHK: Работа с потоками autohotkey.dll

А тут мы что обсуждали? http://forum.script-coding.com/viewtopi … 73#p126673

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

79

Re: AHK: Работа с потоками autohotkey.dll

Я под AHK_L компилировал. Для AutoHotkey.dll без разницы, какой язык у вызывающего скрипта.

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

80

Re: AHK: Работа с потоками autohotkey.dll

teadrinker пишет:

какой язык у вызывающего скрипта

Всмысле?
Вот пример из справки, зачем тогда тут путь к длл?

AhkDllPath := A_ScriptDir "\AutoHotkeyMini.dll"
hModule := DllCall("LoadLibrary","Str",AhkDllPath)
DllCall(AhkDllPath "\ahktextdll","Str","Msgbox Hello World!","Str","","Str","","Cdecl UPTR")
MsgBox, End main thread
DllCall("FreeLibrary","PTR",hModule)
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

81

Re: AHK: Работа с потоками autohotkey.dll

Как это зачем путь? А с помощью чего мы новый поток запускаем?

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

82

Re: AHK: Работа с потоками autohotkey.dll

Так если нужен путь, как из скомпилированного запустить?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

83

Re: AHK: Работа с потоками autohotkey.dll

В моём примере путь нужен только для FileInstall.

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

84 (изменено: serzh82saratov, 2018-07-11 20:45:43)

Re: AHK: Работа с потоками autohotkey.dll

teadrinker пишет:

Я под AHK_L компилировал.

Так я и говорю, что если твой пример скомпилировать под Н с паролем, то будет ошибка.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

85

Re: AHK: Работа с потоками autohotkey.dll

А зачем под H компилировать?

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

86

Re: AHK: Работа с потоками autohotkey.dll

Чтобы был один экзешник. А зачем под L компилировать?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

87

Re: AHK: Работа с потоками autohotkey.dll

И главное пароль.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

88

Re: AHK: Работа с потоками autohotkey.dll

Не понял. А если под L компилировать, не один экзешник получается?

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

89

Re: AHK: Работа с потоками autohotkey.dll

Пароль надо.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

90

Re: AHK: Работа с потоками autohotkey.dll

Ну, на самом деле, встроенный пароль бесполезен, я уже декомпилятор даже написал, для любого пароля.

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

91

Re: AHK: Работа с потоками autohotkey.dll

Прикольно, скинешь в личку?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

92

Re: AHK: Работа с потоками autohotkey.dll

Не-а, не могу.

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

93

Re: AHK: Работа с потоками autohotkey.dll

Правильно, сначало надо продать за тыщу мильёнов.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

94

Re: AHK: Работа с потоками autohotkey.dll

Зачем продавать удочку, если можно продавать рыбу?

95

Re: AHK: Работа с потоками autohotkey.dll

serzh82saratov, в этой теме teadrinker рассказал, как получить пароль:
http://forum.script-coding.com/viewtopic.php?id=13864
Пока, HotKeyIt не расскажет, как заменить генерацию пароля функцией, то в пароле нет никакого смысла.
А он что-то не спешит давать ответы на вопросы.
Даже про то, в чем нормально собрать его исходник он пока не дает никаких комментариев.

96

Re: AHK: Работа с потоками autohotkey.dll

Почему то перестало компилировать с моим паролем, только с паролем по умолчанию, у кого такое было?

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

97

Re: AHK: Работа с потоками autohotkey.dll

Malcev пишет:

Даже про то, в чем нормально собрать его исходник он пока не дает никаких комментариев.

Ну, если заглянуть в AutoHotkey.sln, то там это написано:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.40629.0

Я в ней не пробовал, правда. А размер получается меньше, видимо, потому что отсутствуют два ресурса с длинными непонятными названиями в RCDATA (видно, если сравнить результат сборки со скачанным AutoHotkey_H).

98 (изменено: serzh82saratov, 2018-07-11 23:05:22)

Re: AHK: Работа с потоками autohotkey.dll

serzh82saratov пишет:

Почему то перестало компилировать с моим паролем, только с паролем по умолчанию, у кого такое было?

---------------------

Error at line 0.

Line Text: PK
Error: This line does not contain a recognized action.

The program will exit.
---------------------------
ОК   
---------------------------

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.30.01 (Unicode 32-bit).

99

Re: AHK: Работа с потоками autohotkey.dll

Так и должно быть. Изучай тему.

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

100 (изменено: teadrinker, 2018-07-13 21:27:20)

Re: AHK: Работа с потоками autohotkey.dll

Под любую версию, AHK_L или AHK_H со стандартным паролем:

#Persistent
#Include <_MemoryLibrary>
SetBatchLines, -1

FileInstall, D:\OneDrive\Scripts\AHK_H\AHK_Hv1\v1.1.29.01\ahkdll-v1-release-master\x64w\AutoHotkeyMini.dll, % ""

ahkDll32 := "D:\OneDrive\Scripts\AHK_H\AHK_Hv1\v1.1.29.01\ahkdll-v1-release-master\Win32w\AutoHotkeyMini.dll"
ahkDll64 := "D:\OneDrive\Scripts\AHK_H\AHK_Hv1\v1.1.29.01\ahkdll-v1-release-master\x64w\AutoHotkeyMini.dll"

Loop 5
   RunNewThreadWithAutoHotkeyDll("MsgBox, Thread " . A_Index, A_IsCompiled ? "" : A_PtrSize = 8 ? ahkDll64 : ahkDll32)

Return

RunNewThreadWithAutoHotkeyDll(script, AutoHotkeyDllPath := "")  {
   static data, pData, threads := []
        , _ := OnExit(Func("RunNewThreadWithAutoHotkeyDll").Bind("", ""))
        , timer := Func("RunNewThreadWithAutoHotkeyDll").Bind("watchThreads")
        
   if (script = "")  {                                 ; OnExit
      for k, v in threads
         TerminateThread(v)
      Return
   }
   
   if (script = "watchThreads")  {                     ; watchThreads timer
      Critical
      newThreads := []
      for k, v in threads
         DllCall(v.GetProcAddress("ahkReady")) ? newThreads.Push(v) : v.Free()
      
      threads := newThreads
      if !ObjMaxIndex(threads)
         SetTimer,, Off
      Critical Off
      Return
   }
      
   if !pData  {
      if FileExist(AutoHotkeyDllPath)  {
         FileRead, data, *c %AutoHotkeyDllPath%
         pData := &data
         SplitPath, AutoHotkeyDllPath, dllName
      }
      else if A_IsCompiled  {
         hModule := DllCall("GetModuleHandle", Ptr, 0, Ptr)
         resNames := EnumResourceNames(hModule)
         for k, v in resNames
            if RegExMatch(v, "i)AutoHotkey(Mini)?\.dll", dllName)
               break
         if dllName  {
            pData := LoadScriptResource(hModule, v, size)
            try Func("UnZipRawMemory").Call(pData, size, data, "AutoHotkey")
            ( data && pData := &data )
         }
      }
      if !dllName  {
         MsgBox, AutoHotkey.dll is not found!
         ExitApp
      }
      CheckForDllBitness(pData, dllName)
   }
   MemLib := new _MemoryLibrary(pData)
   DllCall(MemLib.GetProcAddress("ahktextdll"), Str, script, Str, "", Str, "")
   threads.Push(MemLib)
   if ObjMaxIndex(threads) = 1
      SetTimer, % timer, 500
}

CheckForDllBitness(pData, dllName)  {
   static x64 := 0x8664, x86 := 0x14C
   PEoffset := NumGet(pData + 0x3C, "UInt")
   PE := NumGet(pData + PEoffset + 4, "UShort")
   if !(PE = x64 || PE = x86)  {
      MsgBox, 16, Not valid dll, % dllName . " is not valid dll!"
      ExitApp
   }
   if ( (A_PtrSize = 8) ^ (PE = x64) )  {
      MsgBox, 16, Wrong %dllName% bitness, % "Your script bitness is " . (A_PtrSize = 8 ? "x64" : "x86") . "`n"
                                            . dllName . " bitness is " . (PE = x64 ? "x64" : "x86")      . "`n"
                                            . dllName . " bitness must correspond to script bitness!"
      ExitApp
   }
}

TerminateThread(MemLib)  {
   if ( MemLib.MM.init = 1 && DllCall(MemLib.GetProcAddress("ahkReady")) )
      DllCall(MemLib.GetProcAddress("ahkterminate")), MemLib.Free()
}

LoadScriptResource(lib, Name, ByRef DataSize = 0, Type = 10)  {
   res := DllCall("FindResource", Ptr, lib, Str, Name, Ptr, Type, Ptr)
   DataSize := DllCall("SizeofResource", Ptr, lib, Ptr, res, UInt)
   hresdata := DllCall("LoadResource", Ptr, lib, Ptr, res, Ptr)
   return DllCall("LockResource", Ptr, hresdata, Ptr)
}

EnumResourceNames(hModule)  {
   arrNames := []
   DllCall( "EnumResourceNames", Ptr, hModule, UInt, RT_RCDATA := 10
                               , Ptr, RegisterCallback("EnumResNameProc", "Fast", 4)
                               , Ptr, pNames := Object(arrNames) )
   ObjRelease(pNames)
   Return arrNames
}

EnumResNameProc(hModule, Type, Name, lp)  {
   obj := Object(lp)
   obj.Push( StrGet(Name) )
   Return 1
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg