Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.05.2008, 17:55
nik3nnn вне форума Посмотреть профиль Отправить личное сообщение для nik3nnn Найти все сообщения от nik3nnn
  № 1  
Ответить с цитированием
nik3nnn

Регистрация: May 2008
Сообщений: 5
По умолчанию Zinc mouse hook

кто знает как установить глобальный hook на события мыши ?
Приложение свёрнуто но должно отслеживать активность мыши
вернее только левый клик. Кто знает подскажите как?

Старый 07.05.2008, 18:49
GFreemen вне форума Посмотреть профиль Отправить личное сообщение для GFreemen Найти все сообщения от GFreemen
  № 2  
Ответить с цитированием
GFreemen
 
Аватар для GFreemen

Регистрация: Oct 2006
Адрес: Волгодонск
Сообщений: 182
поищи сообщения alexcon314. он в этом мастер

Старый 07.05.2008, 18:59
nik3nnn вне форума Посмотреть профиль Отправить личное сообщение для nik3nnn Найти все сообщения от nik3nnn
  № 3  
Ответить с цитированием
nik3nnn

Регистрация: May 2008
Сообщений: 5
Я прочитал все сообщения "alexcon314", попробовал хук из "слушаем систему" и второй, но они все локальные... НУЖЕН ГЛОБАЛЬНЫЙ Hook.

Старый 08.05.2008, 14:09
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 4  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Распакуйте все файлы в одну папку.
Откройте dllconnection.fla и скомпилируйте swf.
Создайте новый проект цинк, укажите на вкладке Input Devices
для средней и правой кнопок мыши опцию Ignored.
Выберите на вкладке Input File swf, созданный на предыдущем шаге, скомпилируйте ехе.
Зпустите ехе и нажмите кнопку Connect Dll для подключения модулей. Для установки глобального хука нажмите кнопку setGMHook. В окне при кликах мыши должны отображаться сообщения модулей о том, какой клик произошел, координаты курсора в момент клика.
Все три модуля и ехе должны лежать в одной папке. Это не обязательно, но при изменении путей необходимо изменить параметры вызовов некоторых функций в ехе.
...
Краткое описание модулей:

1. zwnd.dll - модуль подменяет оконную процедуру плеера в цинке и подгружает остальные два модуля.

2. as32.dll - модуль служит для обратной связи с приложением по LocalConnection.

3. glmhook.dll - модуль устанавливает глобальный хук на клики кнопок мыши и отдает результат оконной процедуре в zwnd.dll

Возможные баги: иногда в памяти остается "невостребованный" объект Mutex. Как следствие, модуль as32.dll перестает отдавать события в приложение, остальные модули при этом функционируют. Причина мной до конца не выяснена. Предположительно, "виноват" софт, установленный на моем компе, т.к на других машинах баг не наблюдался ни разу за время использования этой схемы отлова системных событий цинком.
...
Если необходимы исходники - постите, выложу. API модулей пока не публикую, ибо он не устоялся.
...
да, чуть не забыл, все работает под Zinc 2.5.0.34. под другими вряд ли.
Вложения
Тип файла: zip dllconnection.zip (47.7 Кб, 472 просмотров)
Тип файла: zip as32.zip (21.1 Кб, 466 просмотров)
Тип файла: zip glmhook.zip (144.1 Кб, 465 просмотров)
Тип файла: zip zwnd.zip (188.5 Кб, 452 просмотров)


Последний раз редактировалось alexcon314; 08.05.2008 в 16:41.
Старый 08.05.2008, 22:10
nik3nnn вне форума Посмотреть профиль Отправить личное сообщение для nik3nnn Найти все сообщения от nik3nnn
  № 5  
Ответить с цитированием
nik3nnn

Регистрация: May 2008
Сообщений: 5
Только что зашёл на форум, огромное спасибо
всё попробую и напишу
с уважением Николай nik3nnn

Старый 31.05.2008, 15:44
nik3nnn вне форума Посмотреть профиль Отправить личное сообщение для nik3nnn Найти все сообщения от nik3nnn
  № 6  
Ответить с цитированием
nik3nnn

Регистрация: May 2008
Сообщений: 5
Если можно выложите исходники. Все работает иногда зависает если работает
видещплеер почему непонятно.

Старый 01.06.2008, 03:05
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 7  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Не уверен на счет as32. По-моему, я чего-то там поменял уже. Но не сильно. ReplaceWndProc - это и есть zwnd.
Вложения
Тип файла: rar as32.rar (2.0 Кб, 631 просмотров)
Тип файла: rar MouseHook.rar (2.1 Кб, 670 просмотров)
Тип файла: rar ReplaceWndProc.rar (2.4 Кб, 645 просмотров)

Старый 01.06.2008, 16:29
nik3nnn вне форума Посмотреть профиль Отправить личное сообщение для nik3nnn Найти все сообщения от nik3nnn
  № 8  
Ответить с цитированием
nik3nnn

Регистрация: May 2008
Сообщений: 5
По умолчанию mose hook

Огромное спасибо!!!

Старый 22.05.2009, 17:19
GFreemen вне форума Посмотреть профиль Отправить личное сообщение для GFreemen Найти все сообщения от GFreemen
  № 9  
Ответить с цитированием
GFreemen
 
Аватар для GFreemen

Регистрация: Oct 2006
Адрес: Волгодонск
Сообщений: 182
2 alexcon314
День добрый.
Помогите разобраться с подключением длл для АС3.
Код AS3:
package interaktivnieOkna3{
	import flash.text.*;
	import flash.display.*;
	import flash.events.*;
	import mdm.Application;
	import mdm.Dialogs;
	import mdm.Forms;
	import mdm.Exception;
	import flash.net.*;
	import flash.system.*;
	public class MainProgramm extends Sprite{
		public var dllConnection:DllConnection;
 
		public function MainProgramm(){
			//запускаем функцию инициализации скриптов MDM
			mdm.Application.init( this, onInit );
		}
		//функция инициализации скриптов MDM
		public function onInit():void{
			mdm.Application.onAppExit = function():void{
				mdm.Exception.DebugWindow.trace("fvnsdfsdlkfsd");
				quitFromApp();
			}
			mdm.Application.onArrowKeyPress = function(myObject:*):void{
				mdm.Dialogs.prompt(myObject.status);
			}
 
			mdm.Application.maximize();
			mdm.Application.title="REDAKTOR 2";
			//для DllConnection
			dllConnection=new DllConnection();
		}
 
 
 
		public function quitFromApp():void{
			mdm.Dialogs.prompt("onAppExit");
			dllConnection.stopDllConnection();
			mdm.Application.exit();
		}
	}
}
и класс DllConnection:
Код AS3:
//класс для работы с dllconnection
package interaktivnieOkna3{
	import mdm.Application;
	import mdm.Dialogs;
	import mdm.Forms;
	import mdm.DLL;
	import mdm.Exception;
	import flash.net.*;
 
	public class DllConnection{
		var formTitle:String = "Redaktor";
		// путь к файлу DLL 
		// если файл располагается в одной папке с приложением,
		// полный путь указывать не нужно
		var dllPath:String = "zwnd.dll";
		//Параметры инициализации LocaConnection в DLL
		var connectionName:String = "hooks";
		var dlm:String = ":";
		var method:String = "wndProc";
		// Имена объектов file mapping и mutex, создаваемых плеером.
		var fileMapping:String = "MacromediaFMOmega";
		var MutexObj:String = "MacromediaMutexOmega";
		var activex :String= "FlashPlayerControl_MacromediaFlashPlayerActiveX_7309416";
		// Создаем соединение
		var listener:LocalConnection;// = new LocalConnection();
		var hDll:Object = new Object();// в hDll будет храниться ссылка на DLL
 
		public function DllConnection():void{
			mdm.Application.doEvents();//вроди бы обязательная строка
			listener= new LocalConnection();
			listener.client = this;
			listener.connect(connectionName);
			mdm.Dialogs.prompt("DllConnection srarted");
 
			function wndProc(message:String):void{
				mdm.Dialogs.prompt(message+"message");
			}
 
			getDllConnection();
		}
 
		//функция закрытия dll
		public function endDllConnection():void{
			// вызываем ReplaceWndProc(FALSE) из нашей DLL                   
			// чтобы снять нашу оконную процедуруы
			if (hDll) {
				hDll.addParameter("boolean", false);
				var res:* = hDll.call("integer", "ReplaceWndProc");
				if (res == 0) {
					mdm.Dialogs.prompt("Unhook fail " + res);
				}
				hDll.clear();
				hDll.close();
			}
		}
		// функция начала работы с DLL
		public function getDllConnection():void{
			// подключаем DLL и проверяем загрузилась она или нет
			hDll = new mdm.DLL(dllPath);
//			if (!hDll.isLoaded) {//отключил ибо флеш ругается
//				mdm.Dialogs.prompt("Dll load failed!");
//				return;
//			}
			// Формируем список параметров вызова функции  GetLocalConnection                              
			// GetLocalConnection (LPSTR fName, char* lm, char* lk, char* lcn, LPCSTR fm, LPCSTR mu, char* dl, char* activex)   
			// Порядок следования параметров должен соответствовать их порядку в определении функции
			hDll.addParameter("string", formTitle);
			hDll.addParameter("string", method);
			hDll.addParameter("string", "localhost:" + connectionName);
			hDll.addParameter("string", fileMapping);
			hDll.addParameter("string", MutexObj);
			hDll.addParameter("string", dlm);
			hDll.addParameter("string", activex);
			// инициализируем LocalConnection в DLL
			var res:* = hDll.call("integer", "GetLocalConnection");
			if (res < 0 || !res) {
				mdm.Dialogs.prompt("Init dll error with code " + res + "\rCheck init parameters.");
			}
			hDll.clear();
		}
 
		public function stopDllConnection():void {
			endDllConnection();
			listener.close();
		}
	}
}
Длл подключается нормально (правомышная кнопка на клавиатуре не работает. Но
1. не получаю события мыши -
Код AS3:
function wndProc(message:String):void{
				mdm.Dialogs.prompt(message+"message");
			}
не выполняется.
2. в классе MainProgramm() не выпонняется
Код AS3:
mdm.Application.onAppExit = function():void{
				mdm.Exception.DebugWindow.trace("fvnsdfsdlkfsd");
				quitFromApp();
			}
			mdm.Application.onArrowKeyPress = function(myObject:*):void{
				mdm.Dialogs.prompt(myObject.status);
			}

Старый 22.05.2009, 18:47
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 10  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
По второму пункту - попробуйте вынести обработчики в отдельные методы класса, не используйте поределение функций внутри функций.
например:
Код AS3:
public function onInit():void{
			mdm.Application.onAppExit = appExitHandler;			 
			mdm.Application.maximize();
			mdm.Application.title="REDAKTOR 2";
			//для DllConnection
			dllConnection=new DllConnection();
		}
public function appExitHandler():void{
///...
}
По первому сложнее - что приходит от hDll.call("integer", "GetLocalConnection")?
Под какой версией цинка делаете проект? Присутствует ли as32.dll в вашем проекте?

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.