Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] _IsPressed()


Rekomendowane odpowiedzi

Opublikowano

Witam.

Mam problem z tą funkcją.

 

W nawiasie wpisuje się wartość hex klawisza czy coś takiego.

Jak wpisze _IsPressed(10) to że kiedy przycisk SHIFT jest wciśnięty.

I to działa.

Ale np. wartość 0D - klawisz Enter.

Już niedziała i to chyba przez tą literkę.

Da się to jakoś obejść żeby działało?

 

 

Mam taki kod:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 625, 443, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 96, 72, 425, 169, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
	Case $GUI_EVENT_CLOSE
		Exit
	Case $Button1
	start()
EndSwitch
WEnd


Func start()
While 1
	If _IsPressed(10) Then
		MsgBox(0, "Klawisz", "SHIFT")
	ElseIf _IsPressed(01) Then
		MsgBox(0, "Klawisz", "LPM")
	ElseIf _IsPressed(02) Then
		MsgBox(0, "Klawisz", "PPM")
	ElseIf _IsPressed(0D) Then
		MsgBox(0, "Klawisz", "ENTER")
	EndIf
WEnd
EndFunc

 

 

Taki błąd w Au3Check errors:

C:\Users\GameOverMan\Desktop\Nowy AutoIt v3 Script (2).au3(31,22) : ERROR: syntax error
	ElseIf _IsPressed(0D
	~~~~~~~~~~~~~~~~~~~^
C:\Users\GameOverMan\Desktop\Nowy AutoIt v3 Script (2).au3 - 1 error(s), 0 warning(s)

 

Proszę o pomoc. Nagrodzę Like za pomoc.

 

 

@Edit

 

Żeby kolejnego tematu już nie zakładać.

 

Jak mam HotKeySet to wtedy przycisk, który ustawiam nie działa w grze. Można jakoś zrobić, żeby przycisk wykonał akcje w grze i odrazu zaczął wykonywać swoją funkcję?

obraz24.png


Opublikowano

0D to liczba zapisana w hexie, spróbuj użyć 0x0D, albo poszukaj jakiejś funkcji konwertującej tekst na hex.

Twoja stara robi catch the clowny w Game Makerze.

Opublikowano

#include <Misc.au3>

$dll = DllOpen("user32.dll")

While 1
Sleep ( 250 )
If _IsPressed("0D", $dll) Then
	MsgBox(0,"Klawisz", "ENTER")
	ExitLoop
EndIf
WEnd
DllClose($dll)

 

to dla przykładu dałem tylko byś zobaczył czego brakuje w skrypcie , mi działa

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

1.Daj 0D w cudzymslowiu i po sprawie. Zwracaj uwagę na szczegóły częściej :)

Przyklad:


#Include <Misc.au3>
While 1
if _IsPressed("0D") Then MsgBox(0,'','')
WEnd

2.Hotkeyset("k","funkcja") - po nacisnieciu k wykona funkcje o nazwie funkcja .

Inne klawisze masz pod F1 w helpie . Inne przez co masz rozumiec 'specjalne' - tzn. enter itp.

 

 

@UP szybszy... patrz punkt jeden co masz zle

Opublikowano

@UP

 

Z tym HotKeySet nie chodzi mi o to, tylko jak mam jakiś klawisz pod HotKeySet i program jest włączony to nie mogę naprzykład w notatniku tym klawiszem pisać.

obraz24.png


Opublikowano

np.

(zawartość funckji do której odwołuje hotkeyset, na początku funkcji)

if not winactive("twoje okno") then
controlsend(nie pamiętam co tu było. podajesz dane do wsiśnięcia klawisza (tego od tego hotkeyset) w aktualnym oknie")
return
endif

nie jestem pewien czy zadziała ale warto spróbować

Opublikowano

HotKeySet("k","funkcja")

while 1
sleep(100)
wend

func funkcja()
HotKeySet(@hotkeypressed)
send(@HotKeyPressed)
MsgBox(0,'','')
HotKeySet("k","funkcja")
endfunc

 

2x@UP mysle ze to co podalem bedzie lepsze ;p

przez puste hotkeyset po prostu go odrejestrujemy od funkcji na czas jej wykonania i spowrotem rejestrujemy :)

Banalne i dziala na kazdym oknie ;p

Opublikowano

0. NIE KORZYSTAJ z IsPressed!!!

 

1. Liczby heksowe otrzymujemy prefiksem "0x", w typ wypadku: 0x0D (i podobnie). Niepoprawne byłoby podawanie tam stringów, gdyż funkcja IsPressed musiałaby te stringi i tak przekonwertować na liczby hex.

 

2. Pod koniec funkcji wywoływanej przez HotKeySet(<klawisz>, <funkcja>) dodaj Send(<klawisz>). Jest to "jakieś" obejście.

 

3. Najlepszym jednak sposobem na otrzymanie pożądanego przez Ciebie efektu będzie skorzystanie z WinApi'owskich Hook'ów. Jakiś art:

http://www.winapi.org/index.php?option=content&task=view&id=68&Itemid=30

Ta sygnatura jest pusta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...