Jump to content

Input'un Içinde Tuş Kombinasyonu Kullanmak


Dj Demir

Recommended Posts

Merhaba arkadaşlar

ufak bir sorunum var ne nasıl çözeceğimi bilemedim

Herhangi bir inputa girilen yazıları CtrL+A kombinasyonu kullanarak seçemedim

ve inputun içinde enter tuşunu da kullanamadım

ya da ne bilim ctrl+backspace

bunları kullanabileceğim bir fonksiyon ya da bir komut var mı acaba ?

_IsPressed ile yapılır mı acaba ?

Link to comment
Share on other sites

@Dj Demir

HotKeySet ile yapılabilir. Tabi farklı yollarıda vardır. Denemek lazım...

Örnek için edit;

Opt("GUIOnEventMode", 1)

Global $Hotkey_CtrlA = False, $Win_Active

Global $Blue_GUI = GUICreate("BlueLife Hotkey Test (ctrl + a)", 430, 250)
GUISetOnEvent(-3, "_Bl_EXIT")
Global $Blue_EDIT1 = GUICtrlCreateEdit("Edit => Ctrl + a ile seç", 10, 10, 200, 200)
Global $Blue_EDIT2 = GUICtrlCreateEdit("Edit => Ctrl + a ile seç", 220, 10, 200, 200)
Global $Blue_INPUT1 = GUICtrlCreateInput("Input => Ctrl + a ile seç - Onay için Enter", 10, 220, 410, 25)
GUICtrlSetOnEvent(-1, "_Bl_INPUT_COMMAND") ;Enter için
GUISetState(@SW_SHOW)

While 1
	; Burdaki satırlar, hotkeyimizin sadece guimiz aktifeken işlemesini sağlar
	$Win_Active = WinActive($Blue_GUI)
	If $Win_Active And Not $Hotkey_CtrlA Then
		$Hotkey_CtrlA = True
		HotKeySet("^a", "_BL_SELECT_ALL")
	ElseIf Not $Win_Active And $Hotkey_CtrlA Then
		$Hotkey_CtrlA = False
		HotKeySet("^a")
	EndIf
	Sleep(100)
WEnd

Func _BL_SELECT_ALL()
	;Writed BlueLife
	Local $User32 = "user32.dll"
	Local $aResult = DllCall($User32, "hwnd", "GetFocus")
	If @error Then Return SetError(1, 0, 0)
	$aResult = DllCall($User32, "lresult", "SendMessageW", "hwnd", $aResult[0], "uint", 0xB1, "wparam", 0, "lparam", -1)
	If @error Then Return SetError(1, 0, 0)
	Return 1
EndFunc   ;==>_BL_SELECT_ALL

Func _Bl_INPUT_COMMAND()
	MsgBox(64, "", "Yapılacaklar buraya")
EndFunc   ;==>_Bl_INPUT_COMMAND

Func _Bl_EXIT()
	Exit
EndFunc   ;==>_Bl_EXIT

Link to comment
Share on other sites

Gerçekten siz bir numarasınız

Sizin sayenizde AutoIt işine başlamıştım

O da ayrı bir minnettarlık konusu Hocam

Evet HotKeySet ile tuşlar gönderilir ama Tümünü Seç fonksiyonu yazamadığım için mecbur sormak zorunda kaldım

Çok Teşekkür ederim

Ellerinize Sağlık

Link to comment
Share on other sites

Her ne kadar önlem alsan da Hotkeyset bazen sorun çıkarıyor blue_life. Ben çözümü GuiSetAccelerators da buldum.Ama bu özelliği kullanabilmek için mutlaka bir object kullanmanız lazımdı bunu da objeyi oluşturup SetState e @gui_hide vererek çözdüm.Help dosyası örneği:

#include <GUIConstantsEx.au3>

GUICreate("Custom  Msgbox", 210, 80)

GUICtrlCreateLabel("Please  click a button!", 10, 10)
$YesID = GUICtrlCreateButton("Yes", 10, 50, 50, 20)
$NoID = GUICtrlCreateButton("No", 80, 50, 50, 20)
$ExitID = GUICtrlCreateButton("Exit", 150, 50, 50, 20)

; Set  accelerators for Ctrl+y and Ctrl+n
Dim $AccelKeys[2][2]=[["^y", $YesID], ["^n", $NoID]]
GUISetAccelerators($AccelKeys)

GUISetState()  ; display the  GUI

Do
    $msg = GUIGetMsg()

    Select
        Case $msg = $YesID
            MsgBox(0, "You clicked  on", "Yes")
         Case $msg = $NoID
             MsgBox(0, "You clicked on",  "No")
         Case $msg = $ExitID
             MsgBox(0, "You clicked on",  "Exit")
         Case $msg = $GUI_EVENT_CLOSE
             MsgBox(0, "You clicked on",  "Close")
     EndSelect
Until $msg = $GUI_EVENT_CLOSE Or $msg = $ExitID

Link to comment
Share on other sites

@blackman12

Önlemini alırsan hotkeyde aslında kolay kolay sorun çıkmaz. Misal yukarıda ilgili autoit guisi aktif ise hotkey çalışıyor. Böylece uygulamalarda karışıklık olmaz.

Tabi verdiğim örnek düzenlenebilir.

Diğer taraftan GUISetAccelerators daha önce hiç kullanmadım lakin güzel bir komutmuş :).

Tabi bu ilgili gui elamanına atanmış görevi çalıştırıyor. Yani HotKeySet baya farklı.

Yukarıdaki örnekte GUISetAccelerators kullanmamız için bir gui elamını oluşturup atama yapmak gerekecektir. Kısacası ben deneme amaçlı bir label oluşturup görev atadım ve çalıştı :)

Opt("GUIOnEventMode", 1)
Global $Blue_GUI = GUICreate("BlueLife Hotkey Test (ctrl + a)", 430, 250)
GUISetOnEvent(-3, "_Bl_EXIT")
Global $Blue_EDIT1 = GUICtrlCreateEdit("Edit => Ctrl + a ile seç", 10, 10, 200, 200)
Global $Blue_EDIT2 = GUICtrlCreateEdit("Edit => Ctrl + a ile seç", 220, 10, 200, 200)
Global $Blue_INPUT1 = GUICtrlCreateInput("Input => Ctrl + a ile seç - Onay için Enter", 10, 220, 410, 25)
GUICtrlSetOnEvent(-1, "_Bl_INPUT_COMMAND") ;Enter için

_BL_SELECT_ALL_2()
GUISetState(@SW_SHOW)

While 1
	Sleep(100)
WEnd

Func _BL_SELECT_ALL_2()
	;Writed BlueLife
	If Not IsDeclared("Ctrl_A_Keys") Then
		Global $Ctrl_A_Keys[1][2]=[["^a", GUICtrlCreateLabel("ddd",1,1,1,1)]]
		GUICtrlSetOnEvent($Ctrl_A_Keys[0][1], "_BL_SELECT_ALL_2")
		GUICtrlSetState($Ctrl_A_Keys[0][1],32)
		GUISetAccelerators($Ctrl_A_Keys)
	EndIf
	Local $User32 = "user32.dll"
	Local $aResult = DllCall($User32, "hwnd", "GetFocus")
	If @error Then Return SetError(1, 0, 0)
	$aResult = DllCall($User32, "lresult", "SendMessageW", "hwnd", $aResult[0], "uint", 0xB1, "wparam", 0, "lparam", -1)
	If @error Then Return SetError(1, 0, 0)
	Return 1
EndFunc   ;==>_BL_SELECT_ALL

Func _Bl_INPUT_COMMAND()
	MsgBox(64, "", "Yapılacaklar buraya")
EndFunc   ;==>_Bl_INPUT_COMMAND

Func _Bl_EXIT()
	Exit
EndFunc   ;==>_Bl_EXIT

Link to comment
Share on other sites

blue_life evet aynen dediğin ve yukarıda benim dediğim gibi objeye verilen görevi yapıyor. Ama çözümü de belli demiştim objeyi görünmez yaparak kısayol gibi kullanılabiliyor ve sadece gui içinde etkin kısayollar oluşturuyor.Böylesi bence HotKeySet ten daha sağlıklı

Ki ben de HotKeySeti aynı senin gibi Winactive komutuyla kullanıyordum ama bazen sorun çıkartıyordu sonra bu yöntemi kullanmaya başladım.

Link to comment
Share on other sites

  • 1 ay sonra...

Arkadaşlar bu hotkeyseti ben 4-5 tuşa basınca fonksiyon görmesini istiyorum.ama olmuyo.mesela QWERTY harflerine basılınca fonksiyon çalışmaya başlasın.

Hotkeyset("QWERTY","ac")

Hotkeyset("{Q}{W}{E}{R}{T}{Y}","ac")

Bunun ikisinide denedim ama olmadı.Böyle birşey mümkün mü?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...