Jump to content

İleri düzey AutoIT örnekleri


sk8er_boi
 Share

Recommended Posts

[b]Elimde bir program mevcut program sürekli seriali yenilememi istiyor bu yüzden her program açmadan önce keymaker çalıştırıp aktive etmem gerekiyor,ben AutoIt ile keymaker'ı çalıştırıp aktive butonunu tıklatıp ardından keymaker kapatıp programı çalıştırmak istiyorum.
Deneme yaptım yeni başladığım için hatam var sizden destek bekliyorum.[/b]

[code]Run('C:\Users\MERT\Desktop\keymaker.exe')
WinWait("[CLASS:TForm1]")
WinActivate("[CLASS:TForm1]")
ControlSend("[CLASS:TForm1]", "", "TButton")
ControlSend("[CLASS:TForm1]", "", "TButton")
Run('C:\Users\MERT\Desktop\program.exe')[/code]

Edited by MasterTR
Link to comment
Share on other sites

[b]Üstat burası paylaşım platformu bunun benden çok senin bilmen icab eder,ben AutoIt yeni başladım belki amatörce soru sormuş olabilirim ama [u]dalgaya alarak[/u] cevap vermek hakkınız olamaz bilgisizliğimin karşılığı dalgaya alınacaksa sorumu hiç görmemiş sayarsın cevaplamazssınız,kaynak verirsin yol gösterirsin onuda yapmıyorsanız ozaman saygınızı bozmadan cevap atmadan çıkabilirisiniz. [color="#0000FF"]Moderatör[/color]'seniz ona göre davranınız,burda kimse kimsenin dalgasını çekmek zorunda değil,Edebimle ve saygı çerçevesinde bir soru sorduysam hürmetle cevap verinki teşekkür edelim.[/b]

Edited by MasterTR
Link to comment
Share on other sites

İlk olarak moderatörüm diye senden çok benim bilmem icab etmez. Evet sorun amatörce çünkü verdiğin kodların sağlıklı çalışıp çalışmadığını bilmek veya gerekli düzenlemeleri yapmak için kullandığın keymakerı ve keyi hangi program için ürettiğini bilmemiz gerek aksi durumda sarı çizmeli mehmet ağa, hiç birimize rüyamızda malum olmuyo kısacası sözlerimin arkasındayım. Farkındaysa soruna amatörce dedim, autoit bilginin az olması önemli değil ama her düşünen insan farkeder ki bu dosyalar olmadan gerekli kod yazılamaz. Yani sizin bilgi sınırınızla alakalı herhangi bir saygısızlık veya alay yoktur, böyle görüyorsanızda bu sizin alınganlığınızdır. Moderatörüm ve ona göre davranıyorum, ama şu anda konunun moderatör yetkilerimle vs. bir alakası yok. sapla samanı ayırın bence.

Link to comment
Share on other sites

[code]kullandığın keymakerı ve keyi hangi program için ürettiğini bilmemiz gerek[/code]
bana bunu hangi program için ürettiğini sormadın,sorsan cevaplarım.

> blackman12: sen cümleni bu şekilde kurarsın, bense o şekilde, birbirimizin dil kullanımını tartışacak ortam burası değil. Konuyu kirletmemek ve daha fazla uzatmamak adına mesajına bu notu düşüyorum.

Link to comment
Share on other sites

@MasterTR

Tam olarak neyi yapamıyorsun?
Keymaker programını çalıştırıp butonlara mı bastıramıyorsun?
En azından Keymayker programını burdan bizimle paylaşırsan, veyahut biraz daha ayırıntı verebilirsen sana yardımcı olmaya çalışırız.

Link to comment
Share on other sites

[b]Sevgili Bluelife hocam;


[color="#FF0000"]Keymaker Programım:[/color]

[code]http://www.mediafire.com/?qo03056ojbrxan7[/code]
Ben Aktive butonunu tıklamadan Alcohol%120 sürekli aktive etmemi söylüyor,ve bende keymaker'ı açıp aktive tıklıyorum sonra alcohol2u çalıştırıyorum,resimde alcohol çalıştırdığım zaman çıkan uyarı.

[img]http://www.tnctr.com/uploads/imgs/pre_1314178536__2.png[/img]

Keymaker'ı çalıştırıp,ardından aktive butonunu tıkladıktan sonra program çalışıyor.

[img]http://www.tnctr.com/uploads/imgs/pre_1314178526__1.png[/img]

Ben sürekli bu yöntemi yapmaktan yana AutoIt ile daha pratik hale getirmek istiyorum,keymaker'dan aktive'yi tıklasın,ardından Alcohol 120 çalıştırsın.[/b]

Edited by MasterTR
Link to comment
Share on other sites

@MasterTR

Şimdi baktım, lakin keymaker programını autoit altında çalıştırınca, keymaker çalışıp hemen kapanıyor.
Heralde benim sistemimde sorun var.

Şuan biraz meşgulüm. Gün içinde tekrar bakıp sana dönerim...
Bu arada butona tıklatmak için;
[color="#0000FF"][b]ControlCommand("[CLASS:TForm1]", "", "TButton3", "Check")[/b][/color]

Link to comment
Share on other sites

@MasterTR

Keymaker.exe yi alcohol klasörüne koy.
Burdaki verdiğim örneği derleyip (compile) ismini mesela Start_Alcohol.exe yap.
Ve bunuda alcohol klasörüne koy.
Start_Alcohol.exe yi çalıştırdığında, keymakeri gizli çalışıp, ilgili butona tıklatıp kapatıyor.
Ardındna alcohol.exe yi çalıştırıyor...

Neyse kolay gelsin....

[codebox]#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Res_Comment=http://www.autoitscript.com/autoit3/
#AutoIt3Wrapper_Res_Description=Alcohol 120 Keymaker
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Created by unknown ©2011
#AutoIt3Wrapper_Res_Field=Compile Date|%date% %time%
#AutoIt3Wrapper_Res_Field=AutoIt|%AutoItVer%
#AutoIt3Wrapper_Res_Field=CompanyName|unknown ©2011
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

; Writed by BlueLife
; Kullanacağımız değişkenleri atıyrouz.
Global $ScriptDir = @ScriptDir
If StringRight($ScriptDir, 1) <> "\" Then $ScriptDir &= "\"
Global $KeyMaker = $ScriptDir & "keymaker.exe"
Global $Alcohol = $ScriptDir & "Alcohol.exe"


;Dosya kontrolü
If FileExists($KeyMaker) = 0 Then
MsgBox(16, "Hata!", $KeyMaker & " bulunamadı!")
Exit 1
EndIf

;Dosya kontolü
If FileExists($KeyMaker) = 0 Then
MsgBox(16, "Hata!", $Alcohol & " bulunamadı!")
Exit 1
EndIf

;Aşağıdaki satır çalışmadı. Ilginç...
;$Keymaker_Pid = Run($KeyMaker)
;Alternatif yöntem...
;----------------------
Global $Au3Script = $ScriptDir & "RunAndPid.au3"
If FileExists($Au3Script) = 1 Then
FileSetAttrib($Au3Script, "-RSH")
FileDelete($Au3Script)
EndIf
FileWrite($Au3Script, 'Exit Run("' & $KeyMaker & '","",@SW_HIDE)')
Global $Keymaker_Pid = RunWait(@AutoItExe & ' /AutoIt3ExecuteScript "' & $Au3Script & '"')
FileDelete($Au3Script)
;----------------------
;Çalıştırdığımız programın handlesini buluyoruz.
Global $Get_Winlist, $Keymaker_hwnd = 0
While ProcessExists($Keymaker_Pid) <> 0
Sleep(100) ;CpuSave
$Get_Winlist = WinList("[CLASS:TForm1]")
For $I = 1 To $Get_Winlist[0][0]
If WinGetProcess($Get_Winlist[$I][1]) = $Keymaker_Pid Then
$Keymaker_hwnd = $Get_Winlist[$I][1]
ExitLoop
EndIf
Next
If $Keymaker_hwnd <> 0 Then ExitLoop
WEnd

;TMemo1 de Ready to rock yazmasını bekliyoruz.
While StringInStr(ControlGetText($Get_Winlist[$I][1], "", "[CLASS:TMemo; INSTANCE:1]"), "Ready to rock") = 0
Sleep(100)
WEnd
;TButton3 butonuna tıklatıyoruz.
ControlCommand($Get_Winlist[$I][1], "", "TButton3", "Check")

;TMemo1 de Registration was successful yazmasını bekliyoruz.
While StringInStr(ControlGetText($Get_Winlist[$I][1], "", "[CLASS:TMemo; INSTANCE:1]"), "Registration was successful") = 0
Sleep(100)
WEnd
;Keymakeri kapatıyoruz.
ProcessClose($Keymaker_Pid)

;Şimdi alcohol progrmaını çalıştırıyoruz.
;Tabi parametre verilmişse parametre ile çalıştırıyoruz.
If $CMDLINE[0] = 0 Then ;Parametre yok ise
Run($Alcohol)
Else ;Parametre var ise
Run($Alcohol & " " & $CMDLINERAW)
EndIf
Exit 0[/codebox]

Link to comment
Share on other sites

[b]Teşekkür ederim hocam bende şöyle bir yöntem yapmıştım hemen anlatıyorum;

AutoIt özelliği olan Record özelliği ile yaptım fare hareketlerimi derleyip o yöntemle yapacaktım,,ancak keymaker çalıştıyor ancak ekrana getirmiyor görev yöneticisinden çalıştığını an ve an görebiliyorum normal çalıştırınca çalışıyor record ile çalıştırmaya çalıştığımda arkaplanda çalışıyor

Umarım anlatabilmişimdir bunun sebebi sizce nedir.

kullandığım sistem Windows 7 X64.[/b]

Link to comment
Share on other sites

@MasterTR

keymaker.exe nin yazarı anladığım kadarıyla, kendisini çalıştıran programın ismini kontrol ediyor.
Isim explorer, cmd.exe vs. gibi windows işletim sistemi programlarının ismine ait deyilse ve kendisini çalıştıran program halen çalışıyorsa kendisini kapatıyor.

Kısaca sana özgü bir durum yok. Misal Program Filesteki AutoIt3\Extras\Au3Record klasörüne gidip, Au3Record.exe nin ismini cmd.exe yaparsan, Au3Record keymaker.exe yi sorunsuz çalıştıracakt...

Bunun için yukarıdaki verdiğim örnek biraz karışık :)
Neyse kolay gelsin...

Link to comment
Share on other sites

Merhaba Arkadaşlar ;
Bana Restart komutu lazım yani mesela autoit'de yazdığım kodları tekrar tekrar yapıcak.. En altta bir restart komutu olacak.. ve yine en üstteki kodlardan başlayıp bu böyle döngü biçiminde gidecek.. Sonsuz olmasını istiyorum. Saatin yanındaki simgesine sağ tıklayıp exit yaptığında kapanacak (zaten normaldede çıkıyor)

Link to comment
Share on other sites

[code]
$sayi1=Random(1,2,3)
if $sayi1=1 Then
MsgBox(0,"","Sayı 1")
ElseIf $sayi1=2 Then
MsgBox(0,"","Sayı 2")
ElseIf $sayi1=3 Then
MsgBox(0,"","sayı 3")
EndIf[/code]
AutoIt'te 0'dan başladığım için bir takım metodları öğrenmem gerekeceğinden metodların nasıl kullanıldığını çözmem gerekiyor burda hatamı çözemedim AutoIt çalışıyor ama tepki yok.

Edited by MasterTR
Link to comment
Share on other sites

@atakanuludag94

Autoit ile bir internet tarayıcısını kontrol etmek biraz sıkıntılı malesef.
Ie için udfler mevcut ama her zaman sorunsuz deyiller.
Diğer browserler için ise işler biraz sıkıntılı.
Sen genel bir şeymi istiyorsun?

@MasterTR
$sayi1 = Random(1, 3,1)
If $sayi1 = 1 Then
MsgBox(0, "", "Sayı 1")
ElseIf $sayi1 = 2 Then
MsgBox(0, "", "Sayı 2")
ElseIf $sayi1 = 3 Then
MsgBox(0, "", "sayı 3")
EndIf

Link to comment
Share on other sites

[quote name='blue_life' date='24 August 2011 - 20:59 ' timestamp='1314219566' post='1069376']
@atakanuludag94

Autoit ile bir internet tarayıcısını kontrol etmek biraz sıkıntılı malesef.
Ie için udfler mevcut ama her zaman sorunsuz deyiller.
Diğer browserler için ise işler biraz sıkıntılı.
Sen genel bir şeymi istiyorsun?

@MasterTR
$sayi1 = Random(1, 3,1)
If $sayi1 = 1 Then
MsgBox(0, "", "Sayı 1")
ElseIf $sayi1 = 2 Then
MsgBox(0, "", "Sayı 2")
ElseIf $sayi1 = 3 Then
MsgBox(0, "", "sayı 3")
EndIf
[/quote]
Random(1, 3,1) neden iki kere 1 yazdık hocam ?
Msgbox bundada parametremi belirtmemiz gerek,mesela msgbox(0,Başlık,Görüncek Metin")
Randomda ise Random(Başlangıç,Sonuç,1) Doğrumu anladım 1 ordaki sayı onun parametresi sabit olarak mı kullanılır.?

Edited by MasterTR
Link to comment
Share on other sites

@MasterTR

Yardım dosyasına bakarsak;

[b]Random ( [Min [, Max [, Flag]]] [/b])

Yazdığımı 1-3 arası bir rakamı ifade ediyor. Sondaki bir ise flag değeridir.
Flag için varsayılan dğer heralde 0 idi. 0 olur ise sayı noktalı gelecektir.
Biz noktalı olmasını istemediğmizden son kısma bir yazdık.

[color="#0000FF"][b]$sayi1 = Random(1, 3)
MsgBox(64,"",$sayi1)

$sayi1 = Random(1, 3,1)
MsgBox(64,"",$sayi1)[/b][/color]

Edited by blue_life
Link to comment
Share on other sites

[codebox]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 175, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
$Radio1 = GUICtrlCreateRadio("Araba", 88, 32, 113, 17)
GUICtrlSetOnEvent(-1, "Radio1Click")
$Radio2 = GUICtrlCreateRadio("Para", 88, 72, 113, 17)
GUICtrlSetOnEvent(-1, "Radio2Click")
$Checkbox1 = GUICtrlCreateCheckbox("Hotel", 80, 120, 97, 17)
GUICtrlSetOnEvent(-1, "Checkbox1Click")
$Checkbox2 = GUICtrlCreateCheckbox("Oda", 80, 152, 97, 17)
GUICtrlSetOnEvent(-1, "Checkbox2Click")
$Radio3 = GUICtrlCreateRadio("Onerilen Secim", 408, 24, 113, 17)
GUICtrlSetOnEvent(-1, "Radio3Click")
$Radio4 = GUICtrlCreateRadio("Hepsini Sec", 408, 56, 113, 17)
GUICtrlSetOnEvent(-1, "Radio4Click")
$Button1 = GUICtrlCreateButton("Tamamla !", 88, 232, 179, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
$List1 = GUICtrlCreateList("", 392, 200, 193, 175)
GUICtrlSetOnEvent(-1, "List1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
Sleep(100)
WEnd

Func Button1Click()
MsgBox(64,"İşlem Tamam","Tamamdır")
EndFunc
Func Checkbox1Click()

EndFunc
Func Checkbox2Click()

EndFunc
Func Form1Close()

EndFunc
Func Form1Maximize()

EndFunc
Func Form1Minimize()

EndFunc
Func Form1Restore()

EndFunc
Func List1Click()

EndFunc
Func Radio1Click()

EndFunc
Func Radio2Click()

EndFunc
Func Radio3Click()


EndFunc
Func Radio4Click()

EndFunc
Func Radio5Click()

EndFunc
Func Radio6Click()

EndFunc
[/codebox]

[b]Ben önerilen seçim dediğimde birkaç tanesini seçtirmek için nasıl yaparım.

Help dosyasına baktım GUICTRLREAD komutuyla kullanıldığını gördüm daha farklı bir yolu varmı?

örnek olarak radio3 eğer seçili ise radio 4 ve radio 5 seçili olsun C# dilinde gittiğimde mantık olarak aynı ancak kullanımı farklı GUICTRLREAD mantığını anlayamadım daha farklı bir yol varsa önerebilirmisiniz?[/b]

Link to comment
Share on other sites

@MasterTR

Incelersin...
[codebox]Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Form1", 615, 438, 175, 500)
GUISetOnEvent(-3, "_MenuExit")
$Radio1 = GUICtrlCreateRadio("Araba", 88, 32, 113, 17)
$Radio2 = GUICtrlCreateRadio("Para", 88, 72, 113, 17)
$Checkbox1 = GUICtrlCreateCheckbox("Hotel", 80, 120, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Oda", 80, 152, 97, 17)
$Onerilen = GUICtrlCreateRadio("Onerilen Secim", 408, 24, 113, 17)
GUICtrlSetOnEvent(-1,"_Onerilen")
$Radio4 = GUICtrlCreateRadio(" Sec", 408, 56, 113, 17)
$Button1 = GUICtrlCreateButton("Tamamla !", 88, 232, 179, 41)
$List1 = GUICtrlCreateList("", 392, 200, 193, 175)
GUISetState(@SW_SHOW)

While 1
Sleep(100)
WEnd

Func _MenuExit()
Exit
EndFunc

Func _Onerilen()
GUICtrlSetState($Checkbox1,1)
GUICtrlSetState($Checkbox2,1)
GUICtrlSetState($Radio1,1)
EndFunc

Func _Tamam()
MsgBox(64,"","Tamam")
EndFunc[/codebox]

Link to comment
Share on other sites

blue_life mantığı çözdüm :) bu AutoIt çok zevkli

[b]Peki bişey sormak istiyorum butonu tıkladığımda inputtaki değer list'te aktarsın bu konu hakkında uğraştım ancak yeterli sonuca varamadım, bböyle bir taslak hazırlayabilirmisiniz incelemem için,[/b]

Link to comment
Share on other sites

[codebox]Local $Value

Local $Form1 = GUICreate("Form1", 235, 204)
Local $Input1 = GUICtrlCreateInput("", 8, 160, 121, 21)
Local $Button1 = GUICtrlCreateButton("Button1", 144, 160, 75, 25)
Local $List1 = GUICtrlCreateList("", 8, 8, 209, 136)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$Value = GUICtrlRead($Input1)
If $Value = "" Then ContinueLoop
GUICtrlSetData($List1, $Value & "|")
EndSwitch
WEnd[/codebox]

Edited by blue_life
Link to comment
Share on other sites

[b]Hocam komutu inceledim ancak bilmediğim kodlar var anlayamadım kafam karıştı biraz bu örnekte.:wacko:
[codebox]MsgBox(64,"Merhaba!","Programa Hoş Geldiniz,Pencere 5 Saniye İçinde Kapanacaktır",5)
Local $Value
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=

$Form1 = GUICreate("Form1", 365, 438, 272, 375)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
$Button1 = GUICtrlCreateButton("Button1", 136, 376, 121, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
$Label1 = GUICtrlCreateLabel("Adı", 24, 24, 27, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetOnEvent(-1, "Label1Click")
$Label2 = GUICtrlCreateLabel("Soyadı", 24, 64, 53, 20)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetOnEvent(-1, "Label2Click")
$Input1 = GUICtrlCreateInput("Input1", 128, 24, 121, 21)
GUICtrlSetOnEvent(-1, "Input1Change")
$Input2 = GUICtrlCreateInput("Input2", 128, 56, 121, 21)
GUICtrlSetOnEvent(-1, "Input2Change")
$List1 = GUICtrlCreateList("", 88, 128, 193, 227)
GUICtrlSetOnEvent(-1, "List1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
Sleep(100)
WEnd

Func Button1Click()
While 1
$Mesaj= GUIGetMsg() ; anlamını bilmiyorum ne için kullanıldığına
Switch $Mesaj
Case -3 ; -3 X basıldığında çıkmasını sağlıyor bu sayede scipt çalışmıyor. Ve Local ne amaçla kullanılıyor.
Exit
Case $Button1 ;buton 1 basıldığında
Local $oku = GUICtrlRead($Input1) ;inputun içindekini oku
If $Value = "" Then ContinueLoop ;şu komutu anlamadım
GUICtrlSetData($List1, $oku & "|");okunan değeri list1 gönder.
EndSwitch
WEnd


EndFunc
Func Form1Close()

EndFunc
Func Form1Maximize()

EndFunc
Func Form1Minimize()

EndFunc
Func Form1Restore()

EndFunc
Func Input1Change()


EndFunc
Func Input2Change()

EndFunc
Func Label1Click()

EndFunc
Func Label2Click()

EndFunc
Func List1Click()

EndFunc
[/codebox]

[/b]

açıklamaları içinde yaptım nerde takıldığımı açık ve net bir şekilde ifade ettim.

Edited by MasterTR
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...