Что нового

блокировка программы

saraconor

Новичок
Сообщения
420
Репутация
3
Как с помощью autoit можно заблокировать воздействие программы на windows, не выключая ее из процессов?
(нужно заблокировать действие штриховых хоткеев в програмке Symbol Commander, т.к. они сильно мешают в программе 3d max. Каждый раз лезть выключать программу надоело, пытаюсь автоматизировать)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
saraconor,
Как “заморозить/разморозить” процесс?


Добавлено:
Сообщение автоматически объединено:

[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
S

saraconor

Новичок
Сообщения
420
Репутация
3
Ваш пример просто заблокировал все кнопки мыши на некоторое время, а это не то что нужно. Нужно заблокировать процесс не выключая его.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
saraconor
по ссылке выше приведен скрипт, который блокирует/замораживает процесс. но с другой стороны твое первое сообщение практически никак не коррелирует с темой. тебе же нужно перехватить горячие клавиши одной программы и либо переназначить на свои, либо перенаправить их в пустоту. во втором случае, они скорее всего не сработают и в 3dmax. я в этом не спец, поэтому попробуй посмотреть тут http://autoit-script.ru/index.php/topic,296.0.html
 
Автор
S

saraconor

Новичок
Сообщения
420
Репутация
3
Тут видимо особенности программы Sensiva, ваш скрипт нормально замораживает блокнот, но вместе с моей программой морозит также и мышь, и часть интерфейса похоже тоже. Ладно, видимо не с той стороны копаю) спасибо :whistle:

Может есть другие способы заморозить процесс?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Может есть другие способы заморозить процесс?
Автор функций возможно
666}{pen
Код:
Global $PROC = "Notepad.exe"

_PROCESSSUSPEND($PROC) ;заморозить

Func _PROCESSSUSPEND($PROCESS) 
   $PROCESSID = ProcessExists($PROCESS) 
   If $PROCESSID Then 
	  $AI_HANDLE = DllCall("kernel32.dll", "int", "OpenProcess", "int", 2035711, "int", False, "int", $PROCESSID) 
	  $I_SUCESS = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $AI_HANDLE[0]) 
	  DllCall("kernel32.dll", "ptr", "CloseHandle", "ptr", $AI_HANDLE) 
		 If IsArray($I_SUCESS) Then 
			Return 1 
		 Else 
			SetError(1) 
			Return 0 
		 EndIf
   Else 
	  SetError(2) 
	  Return 0 
   EndIf 
EndFunc

Sleep(10000) ;подожать

_PROCESSRESUME($PROC) ;и разморозить

Func _PROCESSRESUME($PROCESS) 
   $PROCESSID = ProcessExists($PROCESS) 
   If $PROCESSID Then 
	  $AI_HANDLE = DllCall("kernel32.dll", "int", "OpenProcess", "int", 2035711, "int", False, "int", $PROCESSID) 
	  $I_SUCESS = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $AI_HANDLE[0]) 
	  DllCall("kernel32.dll", "ptr", "CloseHandle", "ptr", $AI_HANDLE) 
		 If IsArray($I_SUCESS) Then 
			Return 1 
		 Else 
			SetError(1) 
			Return 0 
		 EndIf 
   Else 
	  SetError(2) 
	  Return 0 
   EndIf 
EndFunc
 
Автор
S

saraconor

Новичок
Сообщения
420
Репутация
3
Тоже самое получилось.
Видимо прийдется решать задачу грубо (курсор при появлении нужно окна будет гасить програмку в трее и наоборот).
Всем спасибо, тема закрыта.
 
Верх