1 (изменено: SeaVodikendu, 2016-04-21 17:54:01)

Тема: AHK: Работа с меню BitTorrent [PostMessage]

Здравствуйте.
Пытаюсь управлять BitTorrent.
При помощи Winspector, выясняю значения Msg, wParam, lParam у кнопки в меню треи "Включить планировщик".
Выводится три messages:
"- WM_APP + 4 (0x00008004)" у всех трех одинаковые lParam - 0, а вот wParam разные - 0х12а, 0х140, 0х106
Перепробовал каждое значение - не работает.


DetectHiddenWindows, on
SetTitleMatchMode, 2
PostMessage, 0x8004, ?,,, BitTorrent

Помогите разобраться.

2

Re: AHK: Работа с меню BitTorrent [PostMessage]

Ждите, кто пользуется BitTorrent, я не знаю, как там что, у меня другой клиент.

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

3

Re: AHK: Работа с меню BitTorrent [PostMessage]

teadrinker
Приведите пример со своим клиентом.
Я не могу понять от чего зависит кол-во запятых и тд. Возможно у меня из-за этого не получается.


SendMessage, 0x112, 0xF140, 0,, ; 1 пример
SendMessage, 0x44, 0x405, 0, , ; 2 пример
PostMessage, 0x111, 639,,, Безымянный - Paint 3 пример

4

Re: AHK: Работа с меню BitTorrent [PostMessage]

Так я не совсем понимаю, чего вы от него хотите добиться, объясните подробнее. Запустить какой-то пункт меню из иконки приложения в трее?

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

5 (изменено: serzh82saratov, 2016-04-22 16:48:37)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Если да, то например как вызвать аналогичный пункт μTorrent в его трэй меню, без показа этого меню? Ты писал что не знаешь как получить хэндл трэй меню. В Remarks к GetMenu я так и не понял, это про меню панели задач или трэя?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6

Re: AHK: Работа с меню BitTorrent [PostMessage]

Хотя ведь MenuGetHandle получает указатель для своего трэй меню.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

7 (изменено: SeaVodikendu, 2016-04-22 18:49:51)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Да, именно в треи.
Конкретно мне нужно две кнопки в "Ограничение приема":
1. "Неограниченно"
2. "150 кб\с"

Post's attachments

2.png
2.png 15.02 kb, 2 downloads since 2016-04-22 

You don't have the permssions to download the attachments of this post.

8

Re: AHK: Работа с меню BitTorrent [PostMessage]

serzh82saratov пишет:

Если да, то например как вызвать аналогичный пункт μTorrent в его трэй меню, без показа этого меню?

Нужно отследить с помощью какого-либо инструмента сообщения WM_COMMAND (0x111), которые посылаются главному окну при нажатии на определённый пункт меню. Потом послать аналогичные. Сам не пробовал, мой WinSpector не хочет работать на Windows x64.

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

9

Re: AHK: Работа с меню BitTorrent [PostMessage]

Нужно отследить с помощью какого-либо инструмента

http://mdb-blog.blogspot.com/2010/11/mi … nload.html

10

Re: AHK: Работа с меню BitTorrent [PostMessage]

У меня WinspectorU глюковато, но работает. Window Detective работает хорошо - http://windowdetective.sourceforge.net/. Но ни той ни другой нет WM_COMMAND. Похожим на правду увидел только WM_MENUSELECT с неизменными для каждого пункта item index, и всегда разными handle to the menu.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11

Re: AHK: Работа с меню BitTorrent [PostMessage]

У меня ничего из предложенного не работает.

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

12

Re: AHK: Работа с меню BitTorrent [PostMessage]

То есть выбираешь окно - на нём правой кнопкой - messages. Может там кнопку старт, или фильтр посмотреть, у нас же одинаковые вроде ОС.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

13

Re: AHK: Работа с меню BitTorrent [PostMessage]

Он у меня даже окно выбрать не может, пикером рабочий стол только выделяет, а при запуске ошибку какую-то выдаёт, какую-то иконку найти не может.

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

14

Re: AHK: Работа с меню BitTorrent [PostMessage]

А можно ли подобно получению тултипа программы, свернутой в трей, отправить ПКМ с целью вызова контекстного меню программы в трее? Например, было бы удобно назначить горячую клавишу на смену статуса в клиенте Skype, т.к. в настройках клиента такой опции не обнаружил.

15

Re: AHK: Работа с меню BitTorrent [PostMessage]

becauseim пишет:

с целью вызова контекстного меню

#NoTrayIcon
PostMessage2TrayIconProcName("skype.exe", WM_RBUTTONDOWN := 0x204, WM_RBUTTONUP := 0x205)
Return

PostMessage2TrayIconProcName(ProcessName, messages*)
{
/*
Структура TRAYDATA
typedef TRAYDATA
{
IntPtr hwnd;
uint uID;
uint uCallbackMessage;
uint Reserved;
uint Reserved2;
IntPtr hIcon;
}
*/
   static WM_USER := 0x400, TB_BUTTONCOUNT := WM_USER + 24, TB_GETBUTTON := WM_USER + 23
      , PtrSize := A_Is64bitOS ? 8 : 4, SizeOfTBBUTTON := 8 + PtrSize*3, SizeOfTRAYDATA := 16 + PtrSize*2
	oWMI := ComObjGet("winmgmts:")
   DHW_Prev := A_DetectHiddenWindows
   DetectHiddenWindows, On
	
	Loop 2
	{
		ControlGet, hWnd, hwnd,, ToolbarWindow321, % "ahk_class " . (A_Index = 1 ? "Shell_TrayWnd" : "NotifyIconOverflowWindow")
		WinExist("ahk_id" hWnd)
		WinGet, PID, PID

		if (A_Index = 1 && !IsObject(RemoteBuff := New RemoteBuffer(PID, SizeOfTRAYDATA))) {
			DetectHiddenWindows, %DHW_Prev%
			Return, 0, DllCall("MessageBox", Ptr, 0, Str, "Не удалось создать удалённый буфер`nОшибка " A_LastError, Str, "", UInt, 0)
		}
		
		SendMessage, TB_BUTTONCOUNT
		Loop % ErrorLevel
		{
			SendMessage, TB_GETBUTTON, A_Index - 1, RemoteBuff.ptr
			if ! ( pTBBUTTON := RemoteBuff.Read(SizeOfTBBUTTON) )
				|| !pTRAYDATA := RemoteBuff.Read(SizeOfTRAYDATA, NumGet(pTBBUTTON + 8 + PtrSize) - RemoteBuff.ptr) {
				DetectHiddenWindows, %DHW_Prev%
				Return
			}

			WinGet, PID, PID, % "ahk_id" hWnd := NumGet(pTRAYDATA+0)
			CurrentProcessName := oWMI.Get("Win32_Process.Handle=" PID).Name
			if (CurrentProcessName = "AutoHotkey.exe")
			{
				WinGetTitle, Title, % "ahk_id" hWnd
				CurrentProcessName := RegExReplace(Title, "i).*\\(.*) - autohotkey v[\.\d]+", "$1")
			}
			if (CurrentProcessName = ProcessName)
			{
				uID := NumGet(pTRAYDATA + PtrSize, "UInt")
				uCallbackMessage := NumGet(pTRAYDATA + PtrSize + 4, "UInt")

				for i, message in messages
					PostMessage, uCallbackMessage, uID, message,, % "ahk_id" hWnd
				DetectHiddenWindows, %DHW_Prev%
				Return
			}
		}
	}
   DetectHiddenWindows, %DHW_Prev%
	MsgBox, % "Иконка процесса " . ProcessName . " не найдена"
}

Class RemoteBuffer
{
   __New(PID, size)
   {
      static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20, PROCESS_VM_READ := 0x10
         , MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x4
         
      if !(this.hProc := DllCall("OpenProcess", UInt, PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr))
         Return
      
      if !(this.ptr := DllCall("VirtualAllocEx", UInt, this.hProc, UInt, 0, UInt, size, UInt, MEM_COMMIT, UInt, PAGE_READWRITE, Ptr))
         Return, "", DllCall("CloseHandle", Ptr, this.hProc)
   }
   
   __Delete()
   {
      DllCall("VirtualFreeEx", Ptr, this.hProc, Ptr, this.ptr, UInt, 0, UInt, MEM_RELEASE := 0x8000)
      DllCall("CloseHandle", Ptr, this.hProc)
   }
   
   Read(size, offset = 0)
   {
      static LocalBuff
      VarSetCapacity(LocalBuff, size, 0)
      if !DllCall("ReadProcessMemory", Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, &LocalBuff, UInt, size, UInt, 0)
         Return, 0, DllCall("MessageBox", Ptr, 0, Str, "Не удалось прочитать данные`nОшибка " A_LastError, Str, "", UInt, 0)
      
      VarSetCapacity(LocalBuff, -1)
      Return &LocalBuff
   }
   
   Write(pLocalBuff, size, offset = 0)
   {
      res := DllCall("WriteProcessMemory", Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, pLocalBuff, UInt, size, UInt, 0)
      Return res ? res : 0, (!res) ? DllCall("MessageBox", Ptr, 0, Str, "Не удалось записать данные`nОшибка " A_LastError, Str, "", UInt, 0)
   }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Работа с меню BitTorrent [PostMessage]

Для работы с иконкой торрент-клиента заменить название процесса на соответствующее.

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

17

Re: AHK: Работа с меню BitTorrent [PostMessage]

teadrinker, При запуске скрипта выходит ошибка: "Не удалось прочитать данные". Skype запущен. Система Win10x64.

18

Re: AHK: Работа с меню BitTorrent [PostMessage]

На 10 не могу проверить, на 7 работает. Надо YMP'а ждать.

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

19

Re: AHK: Работа с меню BitTorrent [PostMessage]

becauseim, там ещё номер ошибки должен сообщаться.

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

20

Re: AHK: Работа с меню BitTorrent [PostMessage]

teadrinker, Ошибка 299.

21

Re: AHK: Работа с меню BitTorrent [PostMessage]

А разрядность AHK у вас какая?

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

22

Re: AHK: Работа с меню BitTorrent [PostMessage]

teadrinker, не знаю, но в диспетчере задач запущенный AHK-скрипт значится как 64 bit.

23

Re: AHK: Работа с меню BitTorrent [PostMessage]

Тогда не знаю, в чём проблема. Разрядность можно узнать, если навести указатель на файл AutoHotkey.exe, или из свойств файла.

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

24

Re: AHK: Работа с меню BitTorrent [PostMessage]

А как в итоге выбрать пункт в меню если есть его индекс, хэндл меню и окна? Не посылая конечно нажатия кнопок и клики.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

25 (изменено: serzh82saratov, 2016-04-24 03:40:22)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Вообщем пока только кликами мыши.

SeaVodikendu пишет:

Конкретно мне нужно две кнопки в "Ограничение приема":
1. "Неограниченно"
2. "150 кб\с"

Клавиша "1".

becauseim пишет:

было бы удобно назначить горячую клавишу на смену статуса в клиенте Skype

Клавиша "2".

Указатели в массиве Path кроме последнего должны быть подменю, последний пунктом. Последний может являтся массивом из 2 пунктов. Если первый пункт отмечен или выключен, то будет выбран второй. Таким образом одним хоткеем можно сделать переключатель. Пункты можно указать как порядковые номера (разделитель тоже считается) с амперсандом в конце, например в скайпе так и пришлось указать, по неизвестной мне причине в подменю текст пунктов не читается. Если в имени пункта есть амперсанд, он должен быть удалён из указателя.


#SingleInstance Force
#NoEnv
#NoTrayIcon

1::
	; Path := ["Ограничение приёма", "150 КБ/с"] 
	; Path := ["Ограничение приёма", "Неограниченно"]
	Path := ["Ограничение приёма", ["Неограниченно", "150 КБ/с"]]
	Title = ahk_class µTorrent4823DF041B09 ahk_exe uTorrent.exe
	MenuSelect(Path, Title)
	Return
2::
	Path := ["Сетевой статус", ["1&", "3&"]]
	Title = ahk_class tSkMainForm ahk_exe Skype.exe
	MenuSelect(Path, Title)
	Return

Esc:: ExitApp

MenuSelect(Path, Title) {
	WinGet, PID, PID, % "ahk_id" hWnd := WinExist(Title)
	PostMessage2TrayIconProcID(PID, WM_RBUTTONDOWN := 0x204, WM_RBUTTONUP := 0x205)
	WinWait, % "ahk_class #32768 ahk_pid" PID, , 0.5
	If ErrorLevel
		Return
	SendMessage, 0x1E1    ;  MN_GETHMENU
	If !(hMenu := ErrorLevel)
		Return
	DllCall("GetCursorPos", "int64P", pt)
	X := pt << 32 >> 32
	Y := pt >> 32
	MenuSelectPath(hMenu, hWnd, Path)
	DllCall("SetCursorPos", "Uint", X, "Uint", Y)
}

MenuSelectPath(hMenu, hWnd, Path, Key = 1) {
	Static MF_BYPOSITION := 0x400, MF_CHECKED := 0x00000008, MF_DISABLED := 0x00000002, MF_GRAYED := 0x00000001
		, MF_MENUBARBREAK := 0x00000020, MF_MENUBREAK := 0x00000040, MF_SEPARATOR := 0x00000800
	Item := Path[Key]
	If IsObject(Item)
		Item := Path[Key][1]
	If (Item ~= "^\d+&$")
		ItemNum := SubStr(Item, 1, -1) - 1
	Loop, % DllCall("GetMenuItemCount", "Ptr", hMenu)
	{
		idx := A_Index - 1
		If (Item ~= "^\d+&$")
		{
			If (ItemNum != idx)
				Continue
			If (Key < Path.MaxIndex())
			{
				MenuSetCursor(hMenu, hWnd, idx)
				Return MenuSelectPath(DllCall("GetSubMenu", "Ptr", hMenu, "Uint", idx), hWnd, Path, Key + 1)
			}
			Find := 1
			Break
		}
		Else
		{
			idn := DllCall("GetMenuItemID", "Ptr", hMenu, "int", idx)
			nSize++ := DllCall("GetMenuString", "Ptr", hMenu, "Uint", idx, "Uint", 0, "Uint", 0, "Uint", MF_BYPOSITION)
			nSize := (nSize * (A_IsUnicode ? 2 : 1))
			VarSetCapacity(sString, nSize)
			DllCall("GetMenuString", "Ptr", hMenu, "Uint", idx, "Str", sString, "Uint", nSize, "Uint", MF_BYPOSITION)   ; MF_BYPOSITION
			StringReplace, String, sString, &, , 1
			If (Item != String)
				Continue
			If (Key < Path.MaxIndex())
			{
				MenuSetCursor(hMenu, hWnd, idx)
				Return MenuSelectPath(DllCall("GetSubMenu", "Ptr", hMenu, "Uint", idx), hWnd, Path, Key + 1)
			}
			Find := 1
			Break
		}
	}
	If !Find
		Return 0
	If IsObject(Path[Key])
	{
		State := DllCall("GetMenuState", "Ptr", hMenu, "UInt", idx, "UInt", MF_BYPOSITION)
		If (State & MF_CHECKED || State & MF_DISABLED || State & MF_GRAYED || State & MF_MENUBARBREAK || State & MF_MENUBREAK || State & MF_SEPARATOR)
			Return MenuSelectPath(hMenu, hWnd, [Path[Key][2]], 1)
	}
	MenuSetCursor(hMenu, hWnd, idx)
	Return 1
}

MenuSetCursor(hMenu, hWnd, idx) {
	VarSetCapacity(pt, 16, 0)
	DllCall("GetMenuItemRect"
			 , "Ptr", hWnd
			 , "Ptr", hMenu
			 , "UInt", idx
			 , "UInt", &pt)
	x := NumGet(pt, 0), y := NumGet(pt, 4)
	w := NumGet(pt, 8) - x, h := NumGet(pt, 12) - y
	DllCall("SetCursorPos", "Uint", x + w // 2, "Uint", y + h // 2)
	Click
	Sleep 100
}
Return



PostMessage2TrayIconProcID(ProcessPID, messages*)
{
/*
Структура TRAYDATA
typedef TRAYDATA
{
IntPtr hwnd;
uint uID;
uint uCallbackMessage;
uint Reserved;
uint Reserved2;
IntPtr hIcon;
}
*/
	Static WM_USER := 0x400, TB_BUTTONCOUNT := WM_USER + 24, TB_GETBUTTON := WM_USER + 23
		, PtrSize := A_Is64bitOS ? 8 : 4, SizeOfTBBUTTON := 8 + PtrSize*3, SizeOfTRAYDATA := 16 + PtrSize*2
	DHW_Prev := A_DetectHiddenWindows
	DetectHiddenWindows, On

	Loop 2
	{
		ControlGet, hWnd, hwnd,, ToolbarWindow321, % "ahk_class " . (A_Index = 1 ? "Shell_TrayWnd" : "NotifyIconOverflowWindow")
		WinExist("ahk_id" hWnd)
		WinGet, PID, PID

		if (A_Index = 1 && !IsObject(RemoteBuff := New RemoteBuffer(PID, SizeOfTRAYDATA))) {
			DetectHiddenWindows, %DHW_Prev%
			Return, 0, DllCall("MessageBox", Ptr, 0, Str, "Не удалось создать удалённый буфер`nОшибка " A_LastError, Str, "", UInt, 0)
		}

		SendMessage, TB_BUTTONCOUNT
		Loop % ErrorLevel
		{
			SendMessage, TB_GETBUTTON, A_Index - 1, RemoteBuff.ptr
			if ! ( pTBBUTTON := RemoteBuff.Read(SizeOfTBBUTTON) )
				|| !pTRAYDATA := RemoteBuff.Read(SizeOfTRAYDATA, NumGet(pTBBUTTON + 8 + PtrSize) - RemoteBuff.ptr) {
				DetectHiddenWindows, %DHW_Prev%
				Return
			}

			WinGet, PID, PID, % "ahk_id" hWnd := NumGet(pTRAYDATA+0)
			if (PID = ProcessPID)
			{
				uID := NumGet(pTRAYDATA + PtrSize, "UInt")
				uCallbackMessage := NumGet(pTRAYDATA + PtrSize + 4, "UInt")
				; FocusTrayIcon(hWnd, uID)
				for i, message in messages
					PostMessage, uCallbackMessage, uID, message,, % "ahk_id" hWnd
				DetectHiddenWindows, %DHW_Prev%
				Return
			}
		}
	}
	DetectHiddenWindows, %DHW_Prev%
	MsgBox, % "Иконка процесса " . ProcessPID . " не найдена"
}

FocusTrayIcon(hWnd, uID)
{
	VarSetCapacity(NOTIFYICONDATA, size := A_PtrSize = 8 ? 848 : A_IsUnicode? 828 : 444, 0)
	NumPut(size, NOTIFYICONDATA, "UInt")
	NumPut(hWnd, NOTIFYICONDATA, A_PtrSize)
	NumPut(uID, NOTIFYICONDATA, 2*A_PtrSize)
	DllCall("shell32\Shell_NotifyIcon", "UInt", NIM_SETFOCUS := 0x00000003, Ptr, &NOTIFYICONDATA)
	Return
}

Class RemoteBuffer
{
	__New(PID, size)
	{
		static PROCESS_VM_OPERATION := 0x8, PROCESS_VM_WRITE := 0x20, PROCESS_VM_READ := 0x10
			, MEM_COMMIT := 0x1000, PAGE_READWRITE := 0x4

		if !(this.hProc := DllCall("OpenProcess", UInt, PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, Int, 0, UInt, PID, Ptr))
			Return

		if !(this.ptr := DllCall("VirtualAllocEx", UInt, this.hProc, UInt, 0, UInt, size, UInt, MEM_COMMIT, UInt, PAGE_READWRITE, Ptr))
			Return, "", DllCall("CloseHandle", Ptr, this.hProc)
	}

	__Delete()
	{
		DllCall("VirtualFreeEx", Ptr, this.hProc, Ptr, this.ptr, UInt, 0, UInt, MEM_RELEASE := 0x8000)
		DllCall("CloseHandle", Ptr, this.hProc)
	}

	Read(size, offset = 0)
	{
		static LocalBuff
		VarSetCapacity(LocalBuff, size, 0)
		if !DllCall("ReadProcessMemory", Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, &LocalBuff, UInt, size, UInt, 0)
			Return, 0, DllCall("MessageBox", Ptr, 0, Str, "Не удалось прочитать данные`nОшибка " A_LastError, Str, "", UInt, 0)

		VarSetCapacity(LocalBuff, -1)
		Return &LocalBuff
	}

	Write(pLocalBuff, size, offset = 0)
	{
		res := DllCall("WriteProcessMemory", Ptr, this.hProc, Ptr, this.ptr + offset, Ptr, pLocalBuff, UInt, size, UInt, 0)
		Return res ? res : 0, (!res) ? DllCall("MessageBox", Ptr, 0, Str, "Не удалось записать данные`nОшибка " A_LastError, Str, "", UInt, 0)
	}
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

26 (изменено: Malcev, 2016-04-24 06:29:33)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Через Web API проще.
https://forum.utorrent.com/topic/21814-web-ui-api/

ip := "192.168.0.150"
port := "8080"
user := "user"
pass := "pass"
DownloadMax := 50

url := "http://" ip ":" port "/gui/"
tokenUrl := url "token.html"
action := "?action=setsetting&s=max_dl_rate&v=" DownloadMax
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
HTTP.Open("GET", tokenUrl, false)
HTTP.SetCredentials(user, pass, 0)
HTTP.Send()
token := "&token=" RegExReplace(HTTP.ResponseText, "<.+?>")
HTTP.Open("GET", url action token, false)
HTTP.SetCredentials(user, pass, 0)
HTTP.Send()

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

; 1 = В сети
; 2 = Нет на месте
oSkype := ComObjCreate("Skype4COM.Skype")
oSkype.ChangeUserStatus(2)

27

Re: AHK: Работа с меню BitTorrent [PostMessage]

Malcev, при запуске выходит ошибка:

http://puu.sh/otHYk/12ddef4b2d.png

При продолжении скрипт закрывается.

Win 10 x64
Skype v.7.22.0.109

28

Re: AHK: Работа с меню BitTorrent [PostMessage]

AutoHotkey должен быть 32 бит. http://forum.script-coding.com/viewtopi … 728#p96728.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

29

Re: AHK: Работа с меню BitTorrent [PostMessage]

serzh82saratov пишет:

Вообщем пока только кликами мыши.

Заменяю для BitTorrent все на:

Title = ahk_class BT4823DF041B09 ahk_exe BitTorrent.exe

По нажатию хоткея выдает: "Иконка процесса не найдена"

30 (изменено: serzh82saratov, 2016-04-24 19:00:58)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Там класс непостоянный, напишите:

Title = ahk_exe BitTorrent.exe 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

31

Re: AHK: Работа с меню BitTorrent [PostMessage]

И AutoHotkey должен быть 32 бит. Пока не пойму в чём дело.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

32

Re: AHK: Работа с меню BitTorrent [PostMessage]

serzh82saratov
Класс вроде не меняется. По разному пробовал - не выходит

33 (изменено: serzh82saratov, 2016-04-24 20:15:45)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Path := ["Ограничение приёма", "Неограниченно"]

Строки на индексы меняли?

Path := ["6&", "1&"]
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

34 (изменено: SeaVodikendu, 2016-04-25 07:33:10)

Re: AHK: Работа с меню BitTorrent [PostMessage]

Поменял. Также...

35

Re: AHK: Работа с меню BitTorrent [PostMessage]

SeaVodikendu, чем не устраивает сделать это через апи?

36

Re: AHK: Работа с меню BitTorrent [PostMessage]

SeaVodikendu, верните точки в свои посты. Я вам, вроде, уже делал замечание?

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

37

Re: AHK: Работа с меню BitTorrent [PostMessage]

Malcev
Объясните если не трудно, как это использовать?

38 (изменено: serzh82saratov, 2016-04-25 11:22:09)

Re: AHK: Работа с меню BitTorrent [PostMessage]

SeaVodikendu
http://wd-x.ru/programma-utorrent-veb-interfejs/
У меня так работает, порт 8080 чаще уже занят другим, ip 127.0.0.1 для доступа с локального компьютера.

ip := "127.0.0.1"
port := "8082"
user := "admin"
pass := "admin"

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v20H2, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

39

Re: AHK: Работа с меню BitTorrent [PostMessage]

Спасибо. Помогли разобраться.

40

Re: AHK: Работа с меню BitTorrent [PostMessage]

Malcev пишет:
; 1 = В сети
; 2 = Нет на месте
oSkype := ComObjCreate("Skype4COM.Skype")
oSkype.ChangeUserStatus(2)

Установил AHK 32bit, при вызове скрипта ничего не происходит. Или это не полноценный сценарий, а только отдельная функция?

41

Re: AHK: Работа с меню BitTorrent [PostMessage]

; 1 = В сети
; 2 = Нет на месте
oSkype := ComObjCreate("Skype4COM.Skype")

f1::
oSkype.ChangeUserStatus(1)
return

f2::
oSkype.ChangeUserStatus(2)
return

42

Re: AHK: Работа с меню BitTorrent [PostMessage]

Не пойму, какое это отношение имеет к теме топика?

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

43

Re: AHK: Работа с меню BitTorrent [PostMessage]

В 14 сообщении был вопрос:

А можно ли подобно получению тултипа программы, свернутой в трей, отправить ПКМ с целью вызова контекстного меню программы в трее? Например, было бы удобно назначить горячую клавишу на смену статуса в клиенте Skype, т.к. в настройках клиента такой опции не обнаружил.

Я и ответил, что у скайпа есть апи и можно через него.

44

Re: AHK: Работа с меню BitTorrent [PostMessage]

Давайте всё-таки по скайп в отдельной теме.

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