mustafakara Posted February 9, 2012 Share Posted February 9, 2012 sevgili arkadaşlar merhabalar aşağıdaki örnekte gui üzerinde tab tuşu ile hareket ettiğimizde GUICtrlCreateSlider in üzerine gitmiyor button ve liste kutuları arasında dolaşıp kalıyor tab tuşu ile hız ayarının üzerine gelebilmek için nasıl birşey yazmalıyım teşekkürler ;#include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiConstantsEx.au3> #include <GuiSlider.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $mylist, $msg GUICreate("ayarlar",600,300) GUICtrlCreateLabel("kişi", 176, 2, 300, 20, 1) $mylist = GUICtrlCreateList("", 176, 32, 300, 30) GUICtrlSetFont(-1, 16, 800) Local $oku = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices","DefaultTokenId") Local $oku1 = RegRead($oku & "\Attributes","Name") _GUICtrlListBox_SelectString($mylist, $oku1) GUICtrlCreateLabel("hız:", 176, 85, 300, 20, 1) GUICtrlSetFont(-1, 12, 800) Local $hSlider = GUICtrlCreateSlider(176, 100, 300, 40) _GUICtrlSlider_SetLineSize($hSlider, 5) GUICtrlCreateButton("ekran okuyucuyu aç", 176, 135, 300, 25 ) GUISetState() While 1 $Msg = GUIGetMsg() Switch $Msg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd EndFunc ;==>Example Quote Link to comment Share on other sites More sharing options...
blue_life Posted February 9, 2012 Share Posted February 9, 2012 @mustafakara Aslında varsayılan olarak gemesi daha mantıklı. Heralde geliştiricilerin gözünden kaçmış... Aşağıdakini örneği dene... [codebox];#include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiConstantsEx.au3> #include <GuiSlider.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $mylist, $msg GUICreate("ayarlar", 600, 300) GUICtrlCreateLabel("kişi", 176, 2, 300, 20, 1) $mylist = GUICtrlCreateList("", 176, 32, 300, 30) GUICtrlSetFont(-1, 16, 800) Local $oku = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices", "DefaultTokenId") Local $oku1 = RegRead($oku & "\Attributes", "Name") _GUICtrlListBox_SelectString($mylist, $oku1) GUICtrlCreateLabel("hız:", 176, 85, 300, 20, 1) GUICtrlSetFont(-1, 12, 800) Local $hSlider = GUICtrlCreateSlider(176, 100, 300, 40, 0x50010019) _GUICtrlSlider_SetLineSize($hSlider, 5) GUICtrlCreateButton("ekran okuyucuyu aç", 176, 135, 300, 25) GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd EndFunc ;==>Example[/codebox] Quote Link to comment Share on other sites More sharing options...
mustafakara Posted February 9, 2012 Author Share Posted February 9, 2012 sevgili blue_life söylediğin gibi var sayılan olarak gelmeli ancak buda oldu bu sonuna eklediklerini nerden buluyorsun genellikle #include kullanmak yerine bunları kullanıyorsun bu benim oldukca dikkatimi çekmişti de bu yaptığın değişiklik ne anlama geliyor yani şu satırdaki Local $hSlider = GUICtrlCreateSlider(176, 100, 300, 40, 0x50010019) neyse teşekkürler eline sağlık Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted February 9, 2012 Share Posted February 9, 2012 [font="'Franklin Gothic Medium"][size="3"]@mustafakara;[/size][/font] [font="'Franklin Gothic Medium"][size="3"]Guı elemanının sonuna eklediği kodlar (0x50010019 vs.) C:\Program Files\AutoIt3\Include içindeki ilgili kütüphane dosyalarından seçtiği kodlardır.Ayrıca @blue_life include kullanmaz.Onun mantığı birkaç kod için koca kütüphane script dosyasına dahil etmek gereksiz ve programın ağır çalışmasını sağlayan yöntemdir diyebiliriz.Mantıklı olan da bu aslında.Kendisiyle aynı yöntemi kullanıyorum.Misal $GUI_EVENT_CLOSE kodu; çıkmak için <GUIConstantsEx.au3> kütüphanesini dahil etmen gerekir.Bunu yaparken tüm include dosyasını programa dahil etmiş olıursun.Onun yerine -3 Kullanman kafidir.Umarım anlatabilmişimdir.[/size][/font] Quote Link to comment Share on other sites More sharing options...
mustafakara Posted February 10, 2012 Author Share Posted February 10, 2012 anladım sevgili , SimpsoN_Bartteşekkür ediyorum birde sizlere birşey sormak istiyorum bir sesli gui ekranı oluşturmak istiyorum bu yüzden dolayı gui üzerinde tab tuşu ile dolaşırken hangi gui elemanı üzerinde olduğumu yani gui elemanının türü örneğin buton üzerindeysem buton liste kutusu üzerindeysem listekutusu olduğunu ve bunların mevcut olan değerlerini nasıl alabilirim ben ben bunları sese dökmek istiyorum ancak bunu msgbox ile belirtirseniz ben sese dökerim. örneğin şu şekilde birşey istiyorum gui ekranımız açıldı tabtuşuna bastık creckbox üzerine gitti ve uyarı msgbox beni hatırla onay kutusu seçildi ve işaretli değil diye bir uyarı aldık tekrar tab tuşu yaptık ve button üzerine gittik msgbox tamam button uyarısı verdi yani buttonun button olduğunu belirtirken butonun üzerinde yazan değeride belirtecek böyle bir şey yapmak mümkünmüdür acaba Quote Link to comment Share on other sites More sharing options...
mustafakara Posted February 10, 2012 Author Share Posted February 10, 2012 sevgili arkadaşlar ben yukarıda bahsettiğim konuda 1 örnek yaptım liste kutusu içerisinde yapılan değişiklikleri ilgili sentezleyicinin sesinden aktarıyor hız ayarını default olan sentezleyici ile konuşuyor ancak benim istediğim tab tuşu ile gezerkende üzerinde olduğum gui elemanının türünü ve değerini vermesini istiyorum listenin üzerine geldiğimde "listekutusu" ve seçili olan sentezleyici "..." buttonun üzerine geldiğimde "button ekran okuyucuyu aç" hız ayarının üzerine geldiğimde "yatay yol göstergesi ...%" gibi sentezleyicinin konuşmasını istiyorum aşağıdaki örnekte sapi5 e göre çalışmaktadır türkce sentezleyici yoksa sam ın sesi ile ingilizce olarak konuşacaktır tab tuşu hakkında yardımcı olursanız sevinirim örnek: ;#include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiSlider.au3> Opt('MustDeclareVars', 1) Opt("GUIOnEventMode", 1) Global $mylist Global $hSlider Global $baslik = "ayarlar" Global $oku = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices", "DefaultTokenId") Global $oku1 = RegRead($oku & "\Attributes", "Name") ornek() Func ornek() Local $mygui = GUICreate($baslik, 600, 300) GUICtrlCreateLabel("kişi", 176, 2, 300, 20, 1) GUISetOnEvent(-3, "_close") $mylist = GUICtrlCreateList("", 176, 32, 300, 30) GUICtrlSetFont(-1, 16, 800) sesler($mylist) _GUICtrlListBox_SelectString($mylist, $oku1) GUICtrlSetOnEvent($mylist, "_mylist") GUICtrlCreateLabel("hız:", 176, 85, 300, 20, 1) GUICtrlSetFont(-1, 12, 800) $hSlider = GUICtrlCreateSlider(176, 100, 300, 27, 0x50010019) GUICtrlSetOnEvent($hSlider, "_hSlider") _GUICtrlSlider_SetLineSize($hSlider, 5) ;_Slider_defaultpoz($hSlider,0) Local $button1 = GUICtrlCreateButton("ekran okuyucuyu aç",176, 145, 300, 27) GUISetState() _Speak($oku1, 2, 100, $baslik & "sayfa") While 1 WEnd EndFunc ;==>ornek Func _close() Exit EndFunc ;==>_close Func _mylist() _Speak(GUICtrlRead($mylist), 2, 100, GUICtrlRead($mylist)) EndFunc ;==>_mylist Func _hSlider() ;_Slider_defaultpoz($hSlider,1) Local $seviye = _GUICtrlSlider_GetPos($hSlider) _Speak($oku1, 2, 100, $seviye & "%") EndFunc ;==>_hSlider Func sesler($listem) Local $yol = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\" For $i = 1 To 10 Local $var = RegEnumKey($yol, $i) If @error <> 0 Then ExitLoop Local $oku = RegRead($yol & $var & "\Attributes", "Name") GUICtrlSetData($listem, $oku) Next EndFunc ;==>sesler Func _default_reg() Local $yol = "HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices" ;"DefaultTokenId"="HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\Levent16k" ;"DefaultTTSRate"=dword:1 ;RegWrite( EndFunc ;==>_default_reg Func _Speak($sVoice, $iRate, $iVol, $s_txt) Local $objSpeech = ObjCreate("Sapi.SpVoice") $objSpeech.Voice = $objSpeech.GetVoices("Name=" & $sVoice).Item(0) $objSpeech.Rate = $iRate $objSpeech.Volume = $iVol $objSpeech.Speak($s_txt) EndFunc ;==>_Speak Quote Link to comment Share on other sites More sharing options...
radyofon Posted February 10, 2012 Share Posted February 10, 2012 GUICtrlSetTip(-1, "Microsoft Anna", "", 0, 1) GUICtrlSetFont(-1, 10, 800) Quote Link to comment Share on other sites More sharing options...
blue_life Posted February 10, 2012 Share Posted February 10, 2012 (edited) @mustafakara Bir örnek yaptım ama kodlarındaki hataları düzeltmedim. Neyse örneği incele. Benim bir süre kaçmam gerekiyor. Kolay gelsin... [codebox];#include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiSlider.au3> Opt('MustDeclareVars', 1) Opt("GUIOnEventMode", 1) Global $mylist Global $hSlider Global $baslik = "ayarlar" Global $oku = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices", "DefaultTokenId") Global $oku1 = RegRead($oku & "\Attributes", "Name") ornek() Func ornek() Local $mygui = GUICreate($baslik, 600, 300) GUICtrlCreateLabel("kişi", 176, 2, 300, 20, 1) GUISetOnEvent(-3, "_close") $mylist = GUICtrlCreateList("", 176, 32, 300, 30) GUICtrlSetFont(-1, 16, 800) sesler($mylist) _GUICtrlListBox_SelectString($mylist, $oku1) GUICtrlSetOnEvent($mylist, "_mylist") GUICtrlCreateLabel("hız:", 176, 85, 300, 20, 1) GUICtrlSetFont(-1, 12, 800) $hSlider = GUICtrlCreateSlider(176, 100, 300, 27, 0x50010019) GUICtrlSetOnEvent($hSlider, "_hSlider") _GUICtrlSlider_SetLineSize($hSlider, 5) ;_Slider_defaultpoz($hSlider,0) Local $button1 = GUICtrlCreateButton("ekran okuyucuyu aç", 176, 145, 300, 27) GUISetState() _Speak($oku1, 2, 100, $baslik & "sayfa") ; --------------------- Local $Gui_Ctrl_Total = 3 Local $Gui_Ctrl_List[$Gui_Ctrl_Total +1][3] = [[$Gui_Ctrl_Total], _ [$mylist,GUICtrlGetHandle($mylist),"Aktif olan Liste"], _ [$hSlider,GUICtrlGetHandle($hSlider),"Aktif olan Slider"], _ [$button1,GUICtrlGetHandle($button1),"Aktif olan ekran okuyucuyu aç butonu"]] ; --------------------- While 1 $Gui_Ctrl_List[0][1] = __WinAPI_GetFocus() If $Gui_Ctrl_List[0][1] <> $Gui_Ctrl_List[0][2] Then $Gui_Ctrl_List[0][2] = $Gui_Ctrl_List[0][1] For $I = 1 to $Gui_Ctrl_List[0][0] If $Gui_Ctrl_List[$I][1] = $Gui_Ctrl_List[0][1] Then _Speak($oku1, 2, 100, $Gui_Ctrl_List[$I][2]) ExitLoop EndIf Next EndIf Sleep(50) ;Cpu save WEnd EndFunc ;==>ornek Func _close() Exit EndFunc ;==>_close Func _mylist() _Speak(GUICtrlRead($mylist), 2, 100, GUICtrlRead($mylist)) EndFunc ;==>_mylist Func _hSlider() ;_Slider_defaultpoz($hSlider,1) Local $seviye = _GUICtrlSlider_GetPos($hSlider) _Speak($oku1, 2, 100, $seviye & "%") EndFunc ;==>_hSlider Func sesler($listem) Local $yol = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\" For $i = 1 To 10 Local $var = RegEnumKey($yol, $i) If @error <> 0 Then ExitLoop Local $oku = RegRead($yol & $var & "\Attributes", "Name") GUICtrlSetData($listem, $oku) Next EndFunc ;==>sesler Func _default_reg() Local $yol = "HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices" ;RegWrite( EndFunc ;==>_default_reg Func _Speak($sVoice, $iRate, $iVol, $s_txt) Local $objSpeech = ObjCreate("Sapi.SpVoice") $objSpeech.Voice = $objSpeech.GetVoices("Name=" & $sVoice).Item(0) $objSpeech.Rate = $iRate $objSpeech.Volume = $iVol $objSpeech.Speak($s_txt) EndFunc ;==>_Speak Func __WinAPI_GetFocus() Local $aResult = DllCall("user32.dll", "hwnd", "GetFocus") If @error Then Return SetError(@error, @extended, 0) Return $aResult[0] EndFunc ;==>__WinAPI_GetFocus[/codebox] Edited February 10, 2012 by blue_life Quote Link to comment Share on other sites More sharing options...
mustafakara Posted February 15, 2012 Author Share Posted February 15, 2012 sevgili blue_life teşekkürler eline sağlık ben şehir dışına çıkmıştım pek o gün inceleme fırsatım olmamıştı baktım apartopar çıktım. lakin bu örnekte nerede olduğumu okuyor ancak liste kutusu içersinde yazan değerleri ve sliderin durumunu okumuyor onuda okuttum ancak guinin ilk açıldığı değerleri okuyor sanıyorum bunları bütün olarak döngü içerisine almak gerekiyor yani şu şekilde okumasını istiyorum tab tuşuna bastığımızda aktif olan slider 55 % demeli değişiklik yaptığımızda zaten yeni değerleri okuyor ancak dolaşıp aynı yere geldiğimizde son değerini okumalı bunu nasıl yapabiliriz Quote Link to comment Share on other sites More sharing options...
blue_life Posted February 15, 2012 Share Posted February 15, 2012 @mustafakara Malesef isteğini tam anlamadım. Ama senin için biraz düzenleme yaptım. Kurcalarsın, kolay gelsin... [codebox];#include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiSlider.au3> Opt('MustDeclareVars', 1) Opt("GUIOnEventMode", 1) Global $mylist Global $hSlider Global $baslik = "ayarlar" Global $oku = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices", "DefaultTokenId") Global $oku1 = RegRead($oku & "\Attributes", "Name") ornek() Func ornek() Local $mygui = GUICreate($baslik, 600, 300) GUICtrlCreateLabel("kişi", 176, 2, 300, 20, 1) GUISetOnEvent(-3, "_close") $mylist = GUICtrlCreateList("", 176, 32, 300, 30) GUICtrlSetFont(-1, 16, 800) sesler($mylist) _GUICtrlListBox_SelectString($mylist, $oku1) GUICtrlSetOnEvent($mylist, "_mylist") GUICtrlCreateLabel("hız:", 176, 85, 300, 20, 1) GUICtrlSetFont(-1, 12, 800) $hSlider = GUICtrlCreateSlider(176, 100, 300, 27, 0x50010019) GUICtrlSetOnEvent($hSlider, "_hSlider") _GUICtrlSlider_SetLineSize($hSlider, 5) ;_Slider_defaultpoz($hSlider,0) Local $button1 = GUICtrlCreateButton("ekran okuyucuyu aç", 176, 145, 300, 27) GUISetState() _Speak($oku1, 2, 100, $baslik & "sayfa") ; --------------------- Local $Gui_Ctrl_Total = 3 Local $Gui_Ctrl_List[$Gui_Ctrl_Total +1][3] = [[$Gui_Ctrl_Total], _ [$mylist,GUICtrlGetHandle($mylist),"Aktif olan Liste"], _ [$hSlider,GUICtrlGetHandle($hSlider),"Aktif olan Slider"], _ [$button1,GUICtrlGetHandle($button1),"Aktif olan ekran okuyucuyu aç butonu"]] ; --------------------- Local $SilerRead1,$SilerRead2 While 1 $Gui_Ctrl_List[0][1] = __WinAPI_GetFocus() If $Gui_Ctrl_List[0][1] <> $Gui_Ctrl_List[0][2] Then $Gui_Ctrl_List[0][2] = $Gui_Ctrl_List[0][1] For $I = 1 to $Gui_Ctrl_List[0][0] If $Gui_Ctrl_List[$I][1] = $Gui_Ctrl_List[0][1] Then Switch $I Case 1 ;Liste _Speak($oku1, 2, 100, $Gui_Ctrl_List[$I][2] & " Seçili olan: " & GUICtrlRead($Gui_Ctrl_List[$I][0])) Case 2 ;Slider _Speak($oku1, 2, 100, $Gui_Ctrl_List[$I][2] & " Oran: " & GUICtrlRead($Gui_Ctrl_List[$I][0])) Case Else ;Diğerleri _Speak($oku1, 2, 100, $Gui_Ctrl_List[$I][2]) EndSwitch ExitLoop EndIf Next EndIf $SilerRead1 = GUICtrlRead($hSlider) If $SilerRead1 <> $SilerRead2 Then $SilerRead2 = $SilerRead1 _Speak($oku1, 2, 100, "Oran: " & $SilerRead2) EndIf Sleep(50) ;Cpu save WEnd EndFunc ;==>ornek Func _close() Exit EndFunc ;==>_close Func _mylist() _Speak(GUICtrlRead($mylist), 2, 100, GUICtrlRead($mylist)) EndFunc ;==>_mylist Func _hSlider() ;_Slider_defaultpoz($hSlider,1) Local $seviye = _GUICtrlSlider_GetPos($hSlider) _Speak($oku1, 2, 100, $seviye & "%") EndFunc ;==>_hSlider Func sesler($listem) Local $yol = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\" For $i = 1 To 10 Local $var = RegEnumKey($yol, $i) If @error <> 0 Then ExitLoop Local $oku = RegRead($yol & $var & "\Attributes", "Name") GUICtrlSetData($listem, $oku) Next EndFunc ;==>sesler Func _default_reg() Local $yol = "HKEY_CURRENT_USER\Software\Microsoft\Speech\Voices" ;RegWrite( EndFunc ;==>_default_reg Func _Speak($sVoice, $iRate, $iVol, $s_txt) Local $objSpeech = ObjCreate("Sapi.SpVoice") $objSpeech.Voice = $objSpeech.GetVoices("Name=" & $sVoice).Item(0) $objSpeech.Rate = $iRate $objSpeech.Volume = $iVol $objSpeech.Speak($s_txt) EndFunc ;==>_Speak Func __WinAPI_GetFocus() Local $aResult = DllCall("user32.dll", "hwnd", "GetFocus") If @error Then Return SetError(@error, @extended, 0) Return $aResult[0] EndFunc ;==>__WinAPI_GetFocus[/codebox] Quote Link to comment Share on other sites More sharing options...
mustafakara Posted February 16, 2012 Author Share Posted February 16, 2012 sevgili blue_life anlamadım dedin ancak gayet güzel birşekilde benim istediğim örneği yaptın eline sağlık çok sağol Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.