Что нового

[Работа с памятью] Заморозка значения с _MemoryWrite()

nu3dell

Осваивающий
Сообщения
139
Репутация
24
Как сделать что бы можно было заморозить значение (не давать приложению изменить значение, пока функция активна), при активации функции идет запись _memorywrite(0x0000000, $memopen , "1", 'long'), как сделать что бы постоянно шла запись (заморозить как в СЕ) значения "1" пока функция активна? Как вариант использовать While, но это очень ужасный вариант

Код:
#include <NomadMemory.au3> 

Global $True=False

HotKeySet('{F1}','_Test')

While 1
	Sleep(100)
WEnd

Func _Test() 
    Switch @HotKeyPressed
        Case "{F1}"
            $True= Not $True
 If $True = True Then 
$notepad = WinGetProcess('Notepad')
$memopen = _memoryopen($notepad)
_memorywrite(0x0000000,  $memopen , "1", 'long')
_memoryclose($memopen)	
            Else
$notepad = WinGetProcess('Notepad')
$memopen = _memoryopen($notepad)
_memorywrite(0x0000000,  $memopen , "0", 'long')
_memoryclose($memopen)	
            EndIf
    EndSwitch
EndFunc
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Так? :smile:
Код:
#include <NomadMemory.au3> 
#include <Misc.au3> 
Global $True1 = 0
Global $notepad = WinGetProcess('Notepad')
Global $memopen = _memoryopen($notepad)
While 1
	Sleep(1)
	if _IsPressed(02) Then ; правая клавиша мышки.
		if $True1 == 0 Then
			$True1 = 1
		Else
			$True1 = 0
		EndIf
		Sleep(2000) ; Откат, чтоб повторно не нажалось!
	EndIf
	if $True1 == 1 Then
		_memorywrite(0x0000000,  $memopen , "0", 'long')
	ElseIf $True1 == 0 Then
		_memorywrite(0x0000000,  $memopen , "1", 'long')
	EndIf
WEnd
_memoryclose($memopen)
 
Автор
nu3dell

nu3dell

Осваивающий
Сообщения
139
Репутация
24
Ganibal95 насчет while я писал в шапке.
Но все ровно спасибо.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
nu3dell [?]
заморозить значение (не давать приложению изменить значение, пока функция активна)
Это уже цикл...


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

Вот так можно еще по пробовать:
Код:
#include <NomadMemory.au3> 
#include <Misc.au3> 
Global $True1 = 0
Global $notepad = WinGetProcess('Notepad')
Global $memopen = _memoryopen($notepad)
While 1
	Sleep(1)
	if _IsPressed(02) Then ; правая клавиша мышки.
		MsgBox(0,0,0)
		if $True1 == 0 Then
			$True1 = 1
			AdlibRegister('_Write')
		Else
			$True1 = 0
			AdlibUnRegister('_Write')
		EndIf
		Sleep(2000) ; Откат, чтоб повторно не нажалось!
	EndIf
WEnd
_memoryclose($memopen)

Func _Write()
	_memorywrite(0x0000000,  $memopen , "0", 'long')
EndFunc
 
Верх