asmazh Posted April 24, 2011 Share Posted April 24, 2011 [color="#FF0000"]Öncelikle Selamün Aleyküm ve Günaydın Millet...[/color] [color="#0000FF"]AutoİT ile ilgili bir kaç sorum vardı bunları size bildirmek istiyorum inş yardımcı olursunuz. 1. SORU : Mouse bir butonun üstüne geldiğinde butona tıklamışım gibi işlev görmesini istiyorum bunu bana en sade bir şekilde kodlarını gösterirseniz sevinirim. 2. SORU : Bir butona tıklayacağım ve XP SP3 WİN7 WİNWİSTA Gibi işletim sistemlerinin ekran koruyucu ayar sayfası açılacak yada o sayfaya girmeden AutoİT ile ekran koruyucu ayarlarını değiştirebilirmiyim. eğer değiştirilebiliniotsa bana bunun kodlarını verirseniz sevinirim. 3. SORU : AutoİT ile tam bir Guicreate("Deneme",@dekstoph,@desktopw,0,0) yani böyle tam ekran bir gui sayfası oluşturup üstüne herhangi bir tema yapamazmıyız daha doğrsu yapılırda nasıl bir örnek verirseniz sevinirim.[/color] [color="#FF0000"]TEŞEKKÜRLER...[/color] Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 24, 2011 Share Posted April 24, 2011 (edited) @asmazh As. günaydın, Cevap 1: Tam anlayamadım, sen butona mouse ile tıklatmak mı istiyorsun, yoksa mouse belirlediğin butona geldinde tıklamasını mı istiyorsun? Cevap 2: Bu ayarları registrydende ayarlayabilirsin. Yani zamanı, ekran koruyucunun açık olup olmayacağın, haliyle ekran koruyucuyu. Ilgili registry anahtarı [b]HKEY_CURRENT_USER\Control Panel\Desktop[/b] Yani basit regwrite komutlarıyla bu ayarları değiştirebilirsin! Bir örnek vermem gerekirse; [codebox]RegWrite("HKCU\Control Panel\Desktop", "ScreenSaveActive","Reg_Sz","1") ;0 değeri hatırladığım kadarıyla kapatıyordu RegWrite("HKCU\Control Panel\Desktop", "SCRNSAVE.EXE","Reg_Sz","ekrankouruycu konumu") ;ekran koruyucu konumu RegWrite("HKCU\Control Panel\Desktop", "ScreenSaveTimeOut","Reg_Sz",5 * 60) ;Misal 5 dakika için[/codebox] Cevap 3: Windows temasından farklı bir tema kullanmak için aşağıdaki konuya bak! http://www.tnctr.com/topic/163354-autoit-icin-bir-cok-skinler-temalar/ Edited April 24, 2011 by blue_life Quote Link to comment Share on other sites More sharing options...
asmazh Posted April 25, 2011 Author Share Posted April 25, 2011 @BlueLife Yardımlarınız için teşekkürler... SORU 1 de belirttiğim ben butona tıklamayacağım sadece mouse butonun üstün götüreceğim ve basılmış gibi işlem yapacak. Quote Link to comment Share on other sites More sharing options...
blue_life Posted April 25, 2011 Share Posted April 25, 2011 Yine sorunda eksik kısımlar var! Neyse autoit ile oluşturduğun gui için böyle bir şey yapmak istiyorsan aşağıdaki örneği incele! [codebox]Local $GG_CINFO Opt("GUIOnEventMode", 1) Local $Form1 = GUICreate("Form1", 250, 250) GUISetOnEvent(-3, "_EXIT") Local $Button1 = GUICtrlCreateButton("Button1", 10, 120, 230, 25) GUISetState(@SW_SHOW) While 1 If WinActive($Form1) Then $GG_CINFO = GUIGetCursorInfo() If IsArray($GG_CINFO) Then Switch $GG_CINFO[4] Case $Button1 ToolTip("Butonun üstüne!") Case Else ToolTip("") EndSwitch EndIf EndIf Sleep(100) WEnd Func _EXIT() Exit EndFunc ;==>_EXIT[/codebox] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted May 11, 2011 Share Posted May 11, 2011 @blue_life hocam ThunderRT6TextBox3'a çift tıklanmasını istiyorum ControlClick("ShowMyPC Collaboration 3050","","ThunderRT6TextBox3") Quote Link to comment Share on other sites More sharing options...
blue_life Posted May 11, 2011 Share Posted May 11, 2011 @mehmetben ControlClick normal mouseclick komutlarından farkıdır! Neyse, yardım dosyasında ControlClick komutuna bakarsak; [b]ControlClick ( "title", "text", controlID [, button [, clicks [, x [, y ]]]] )[/b] Bak orda clicks sayısı mevcut! Yani aşağıdaki gibi bir komut işine yarayabilir; ControlClick("ShowMyPC Collaboration 3050","","ThunderRT6TextBox3","",2) Quote Link to comment Share on other sites More sharing options...
Mehmet Posted May 11, 2011 Share Posted May 11, 2011 Ctrl+a Ctrl+v shift+sol tıklama sağtıklama yukarıdan aşağı iki satır seç aşağıdan yukarı iki satır seç vb. not defterine göre autoit de bunların karşılığı nasıl yazılıyor Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted May 11, 2011 Share Posted May 11, 2011 (edited) [font="Verdana"][codebox]# ;Başlat ^ ;Ctrl + ;Shift ! ;Alt @CRLF ;Alt satıra inmek için kullanılır.UP DOWN LEFT RIGHT Tuşlarıyla aşağı yukarı vs yapabilir, CTRL + A İLe seçtirebilirsin. _IsPressed Fonksiyonu ile sağ tıklama sol tıklama vs gibi şeyleri yapabilirsin.Help Dosyasında örnek var. Örn: Sağ tık ; _IsPressed("02") Sol tık ; _IsPressed("01") [/codebox][/font] Edited May 11, 2011 by SimpsoN_Bart Quote Link to comment Share on other sites More sharing options...
Mehmet Posted May 11, 2011 Share Posted May 11, 2011 (edited) [quote name='SimpsoN_Bart' date='11 May 2011 - 16:37 ' timestamp='1305131823' post='1008971'] [font="Verdana"][codebox]# ;Başlat ^ ;Ctrl + ;Shift ! ;Alt @CRLF ;Alt satıra inmek için kullanılır.UP DOWN LEFT RIGHT Tuşlarıyla aşağı yukarı vs yapabilir, CTRL + A İLe seçtirebilirsin. _IsPressed Fonksiyonu ile sağ tıklama sol tıklama vs gibi şeyleri yapabilirsin.Help Dosyasında örnek var. Örn: Sağ tık ; _IsPressed("02") Sol tık ; _IsPressed("01") [/codebox][/font] [/quote] deneme1 deneme2 Send("+{DOWN 2}") yukarıdan aşağı iki satırı seçmiyor acaba yanlışmı yazdım içeriği böyle Run("notepad.exe") WinWait("Adsız - Not Defteri") WinWaitActive("Adsız - Not Defteri") ClipPut("deneme1") send("^v") Send("{ENTER}") ClipPut("deneme2") send("^v") Send("{ENTER}") Sleep(2000) Send("+{DOWN 2}") Edited May 11, 2011 by mehmetben Quote Link to comment Share on other sites More sharing options...
blue_life Posted May 11, 2011 Share Posted May 11, 2011 (edited) Send vs. komutları için ilgili pencerenin aktif olması lazım! Söylediklerin bir çok yol ile yapılabilir lakin en basit en güvenli olan haliyle en iyisidir. Öncelikle yapmak istenile kafada iyi canlandırılmalı. Yoksa zaman kaybı çok olacaktır. Şimdi diyelim ben notepad edit1 içindeki yazıları almak istiyorsam o zaman ControlGetText kullanırım. Eğer ilgili kısma yeni bir şey yazmak istiyorsam ControlSText kullanırım. Istediğim satırdaki bilgiyi almak için ise ControlGetText ile tüm veriyi alıp StringSplit ile parçalarım Eğer ilgili içeriği dokunmayıp sonuna bir şey ekleyeceksem haliyle ControlGetText ile veriyi alıp bir değişkene atar ve yine ekleyeceğim veriyi değişkenin sonunda eklerdim. Sonrada haliyle ControlSetText kullanırdım. [codebox]#include <Array.au3> Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit ControlSetText($HWND,"","Edit1","Selam Millet" & @CRLF & "Ben BlueLife") Local $ControlGT = ControlGetText($HWND,"","Edit1") Local $GET_LINE = StringSplit($ControlGT,@CRLF,1) _ArrayDisplay($GET_LINE,"Line")[/codebox] Edit: Bu arada _IsPressed; fonksiyonu gönderimde bulunmaz. Gönderileni keyi öğrenmeye yarar. Bir nevi keylogger gibi bir şey ama, tam sağlıklı deyil! Edited May 11, 2011 by blue_life Quote Link to comment Share on other sites More sharing options...
Mehmet Posted May 11, 2011 Share Posted May 11, 2011 BlueLife hocam daha basit bir örnekle açıklayabilirmisin Send("+{DOWN 2}") olayını demek istediğim Send("+{UP 2}") aşağıdan yukarıya iki satır seçiyor sorun yok Send("+{DOWN 2}") neden yukarıdan aşağı 2 satır seçmiyor.! Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted May 11, 2011 Share Posted May 11, 2011 (edited) Benim kafam karıştı Yukarda aşağı veya bunu tersinin ne farkı varki.Sen belli bi yerden bi yazı alacaksan Bluelife hocamın dediği gib yapacaksın Edited May 11, 2011 by SimpsoN_Bart Quote Link to comment Share on other sites More sharing options...
Mehmet Posted May 11, 2011 Share Posted May 11, 2011 BlueLife'in verdiği örnek sadece kopyalama artı not defteriyle beraber başka bir pencere daha açılıyor benim istediğim ise sadece not defteriyle çalışmak ve sadece kopyalama amaçlı değil örneğin 4 satır yazdım ve yukarıdan aşağı sadece iki satırı seçtim veya seçtim sildim Quote Link to comment Share on other sites More sharing options...
blue_life Posted May 12, 2011 Share Posted May 12, 2011 @mehmetben Benim verdiğim örnekte çıkan ilgili pencere bilgilendirme amaçlıdır! Send vs. yerine benim verdiğim örneği geliştirerek yapmanı tavsiye ederim. Misal üsten iki satır seçip sileceksen; Tabi önce notepade en az üç satır yaz [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") Local $GET_LINE = StringSplit($ControlGT,@CRLF,1) Local $CSetText = "" For $I = 3 to $GET_LINE[0] ;Burdaki üç üçüncü satırdan başlamak için $CSetText &= $GET_LINE[$I] & @CRLF Next ControlSetText($HWND,"","Edit1",$CSetText)[/codebox] Alttan iki satırı sileceksen; Tabi yine notepade en az üç satır yaz [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") Local $GET_LINE = StringSplit($ControlGT,@CRLF,1) Local $CSetText = "" For $I = 1 to $GET_LINE[0] -2 ;Sondan iki satırı atlıyoruz $CSetText &= $GET_LINE[$I] & @CRLF Next ControlSetText($HWND,"","Edit1",$CSetText)[/codebox] Hadi notepadde ilk satıra istediğimiz veriyi diğer verileri silmeden ekleyelim. [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") $ControlGT = "Selam Millet" & @CRLF & "Nasılsınız" & @crlf & $ControlGT ControlSetText($HWND,"","Edit1",$ControlGT)[/codebox] Hadi şimdide son satıra bir şeyler ekleyelim. [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") $ControlGT &= "Selam Millet" & @CRLF & "Nasılsınız" & @CRLF ControlSetText($HWND,"","Edit1",$ControlGT)[/codebox] Hadi şimdide ikinci satıra bir şeyler ekleyelim. Abartıyorum galiba Tabi notepadde 2den fazla satır olsun! [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") Local $GET_LINE = StringSplit($ControlGT,@CRLF,1) Local $CSetText = "" For $I = 1 to $GET_LINE[0] ;Sondan iki satırı atlıyoruz If $I = 2 Then $CSetText &= "Selam Millet" & @CRLF & "Nasılsınız" & @CRLF EndIf $CSetText &= $GET_LINE[$I] & @CRLF Next ControlSetText($HWND,"","Edit1",$CSetText)[/codebox] Son olarakta ikinci satırı sileim mi? [codebox]Local $HWND = WinGetHandle("[CLASS:Notepad]") If $HWND = "" Then Exit Local $ControlGT = ControlGetText($HWND,"","Edit1") Local $GET_LINE = StringSplit($ControlGT,@CRLF,1) Local $CSetText = "" For $I = 1 to $GET_LINE[0] ;Sondan iki satırı atlıyoruz If $I = 2 Then ContinueLoop $CSetText &= $GET_LINE[$I] & @CRLF Next ControlSetText($HWND,"","Edit1",$CSetText)[/codebox] Gördüğünüz gibi istediğimiz satırdaki bilgiyi silebileceğimiz gibi, istediğim satırada istediğimiz bilgiyi sorunsuz ekleyebiliyoruz. Send ve mouseclick komutları bu konularda control komutları kadar başarılı deyildir. Mümkünse Send ve mouseclick kullanmamaya çalışın... Neyse umarım anlatmak istediklerim anlaşılmıştır, kolay gelsin arkadaşlar.... 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.