Jump to content

İleri düzey AutoIT örnekleri


sk8er_boi
 Share

Recommended Posts

@blue_life arkadasim verdigin örnek icin cok tesekkür ederim

cok isime yaradi bu

aramizda senin gibi bu isi profsyonel sekilde bilen birinin olmasi cok güzel :D

Peerfen yorumun için teşekkür ederim. Aslında autoit konusunda bende acemi sayılırım. Hobi olarak ara ara yavaş yavaş geliştirmeye çalışıyorum.

Bu arada yukarıda sana verdiğm codlarda fazlalıklar var. Dün apar topar cevap yazdığımdan farketmemişim.

Aşağıdaki daha uygun gibi. Kendine göre değiştirisin......

$MainPage = GUICreate("PeerFen Program Kurulumu", 310, 130, -1, -1,0x00C00000)
;~ GUISetBkColor(0x0d8be9)
$Label = GUICtrlCreateLabel("Program 22 kuruluyor lütfen bekleyiniz.", 10, 10,280, 35, 0x01)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$progressbar = GUICtrlCreateProgress(10, 50, 280, 25)
$Label2 = GUICtrlCreateLabel("", 10, 90,280, 35, 0x01)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)
ShellExecuteWait(@ScriptDir & "\22.exe")
GUICtrlSetData($progressbar, "50")
GUICtrlSetData($Label, "Program 11 kuruluyor lütfen bekleyiniz.")
GUICtrlSetData($Label2, "Program 22 kuruldu.")
ShellExecuteWait(@ScriptDir & "\11.exe")
GUICtrlSetData($Label, "Tüm programlar kuruldu.")
GUICtrlSetData($Label2, "Program 11 kuruldu.")
GUICtrlSetData($progressbar, "100")
Sleep(1000);Son ekran durumunu okumak için gerekli. Kendine göre ayarla.
Exit[/CODE]

AutoIt'te bir yazının son 4 harfini nasıl alabilirim?

Aslında şöyle diyeyim.

@ScriptDir komutunda sadece bulunduğu klasör ismini almak istiyorum.

C:\A\b de ise b'yi verecek bana.

klasör 4 harfli olduğundan son 4 harf de olur.

Mornig ben dosya ismini bulmakta şöyle bir kod kullanıyorum. Bana göre en güzel yöntem bu.

[CODE]$File = @ScriptDir & "\Bluelife\blue.exe";diyelim
$dosya = StringSplit($File, "\")
MsgBox(4096, "Dosyam", $dosya[$dosya[0]])[/CODE]

Ayrıca illa sondan okutmak için StringRight komutunu kullanabilirsin......

Link to comment
Share on other sites

Mornig ben dosya ismini bulmakta şöyle bir kod kullanıyorum. Bana göre en güzel yöntem bu.

$File = @ScriptDir & "\Bluelife\blue.exe";diyelim
$dosya = StringSplit($File, "\")
MsgBox(4096, "Dosyam", $dosya[$dosya[0]])[/CODE]

Ayrıca illa sondan okutmak için StringRight komutunu kullanabilirsin......

Sen var ya! Muhteşemsin!

@ScriptDir yapınca oldu. Teşekkürler!

Link to comment
Share on other sites

  • 2 hafta sonra ...

IDM ile ilgili bir çalışma yapıyorum. Ama bir konuda takıldım.

FileCopy("dosyaismi.exe", @ProgramFilesDir & "\Internet Download Manager\Languages\",9)

SFX paketi veya Autoit'e gömdüğüm dosyayı bu şekilde kopyalayabilir miyim. Bir hata var mıdır sizce. Açılan bir konudan aldım bu kodu o yüzden sordum. Bir de koddaki 9 ne demek. Ne işe yarıyor.

Teşekkürler.

Link to comment
Share on other sites

Dosya script ana dizinindeyse çalışır daha sağlıklı olması için;

FileCopy(@scriptdir & "\dosyaismi.exe", @ProgramFilesDir & "\Internet Download Manager\Languages\",9)

şeklinde kullanırız.9'un anlamına gelince 1+8 dir.Yani;

1 = dosya varsa üzerine yaz

8 = eğer yol üzerindeki klasörler yoksa oluştur

Link to comment
Share on other sites

Çok teşekkür ederim @blackman12.

Bu arada help dosyasında da varmış ihtiyacı olan arkadaşlar için koyuyorum.(İngilizce yalnız :D )

FileCopy

Copies one or more files.

FileCopy ( "source", "dest" [, flag] )[/CODE]

[u]Parameters[/u]

[i]source:The source path of the file(s) to copy. Wildcards are supported.

dest:The destination path of the copied file(s).

flag:[optional] this flag determines whether to overwrite files if they already exist.

Can be a combination of the following:[/i][i] 0 = (default) do not overwrite existing files[/i]

Bu da Tercümesi(Olduğu kadar :D )

[b]FileCopy [/b]

[i]Bir veya daha fazla dosyaları kopyalamak[/i]

[CODE]FileCopy ( "Kopyalanacak dosyaların bulunduğu kaynak", "Dosyaların kopyalanacağı yer yani hedef dizin" [, flag] )[/CODE]

[u]Parametreler[/u]

[i]Kaynak:Kaynak(Script dizini,sfx'in içi artık herneyse) klasöründeki kopyalanacak dosyalardır. Wildcards'ı destekliyormuş. Ne anlama geldiğini bilmiyorum.

Hedef Dizin: Dosyaların kopyalanacağı yol,dizin.

flag:[opsiyonel] Bu anladığım kadarıyla nasıl kopyalanacağı. blackman12 açıklamıştı.[/i]

9'un anlamına gelince 1+8 dir.Yani;

1 = dosya varsa üzerine yaz

8 = eğer yol üzerindeki klasörler yoksa oluştur

[i]Aşağıdaki kombinasyon(lar) olabilir. Google böyle çevirdi.

[/i]

0 = (varsayılan)Mevcut dosyaların üzerine yazmaz.

1 = dosya varsa üzerine yaz

8 = eğer yol üzerindeki klasörler yoksa oluştur

[i] [/i]

Edited by Kingpin
Link to comment
Share on other sites

  • 1 ay sonra...

Arkadaşlar ben bir tane program yazdım.İçinde hotkeyset ve func komutları var.Bu komutlarda bir sorun yok.Ama benim istediğim mesela F12'ye bastığımda arka planda çalışan script dursun.Kısacası button olmayan bir scripti nasıl durdurabilirim bunu soruyorum.Exe'ye çevirip ordan sonlandırabilirim ama o şekil istemiyorum.Scriptin çalışmasını tamamiyle durduracak komut lazım bana.Exit olmuyor.

ProcessClose(@scriptname)

Bunu denedim olmadı.Acaba ne yapabilirim ?

Link to comment
Share on other sites

Anladığım şey şu.

Bir fonksiyon yazarsın.

Func _bilmemne() gibi (_ olması şart değil ama karışmasın diye koyarım ben hep)

Scriptin buraya

EndFunc

Sonra onu _bilmemne() diye çağırabilirsin.

Link to comment
Share on other sites

Yok öyle değil.Bir örnek vereyim.

Do
Hotkeyset("{F11}","a")
Hotkeyset("{F12}","b")
sleep(10)
until 1=2
func a()
run("calc.exe")
endfunc
func b()
;işte F12'ye basınca bu sınırsız döngü olan do until ile beraber komple scripti kapatıcak.Program sonlanacak.Yani çalışan script sonlanacak.
endfunc[/CODE]

Edited by guven_memo
Link to comment
Share on other sites

  • 4 hafta sonra ...

Arkadaşlar benim şu rapide kafam bir hayli bozuldu.Önceki 1.2 sürümü ne güzel sağ tıklayıp rapide gönderebiliyorduk.Şimdi buna izin vermiyor.Ben de çeşitli scriptleri araştırdım.Sonuç alamadım.Sonra script writer ile rapide dosya göndermenin tabiri caizse

kodlarla ekran görüntüsünü aldım.Ve scripti çalıştırdım.Sonuç güzel ama sorun şu ki dosyanın adını değiştirince sistem belirtilen yolu bulamıyor hatası veriyor.Ben dosya adı ve sistemdeki yeri değişse bile koda ne ekleyeyim ki bu script sorunsuz çalışsın?

Kullandığım dosya ya rar uzantılı veya zip uzantılı olacak.

Baştan söyleyeyim tam acemisiyim.Ama azimliyim.Birkaç tane script yaptım.Gayet güzel çalışıyorlar.(Aslında bulduklarımı scripte çevirmekten başka birşey değil.)Saygılarımla

Link to comment
Share on other sites

Arkadaşlar benim şu rapide kafam bir hayli bozuldu.Önceki 1.2 sürümü ne güzel sağ tıklayıp rapide gönderebiliyorduk.Şimdi buna izin vermiyor.Ben de çeşitli scriptleri araştırdım.Sonuç alamadım.Sonra script writer ile rapide dosya göndermenin tabiri caizse

kodlarla ekran görüntüsünü aldım.Ve scripti çalıştırdım.Sonuç güzel ama sorun şu ki dosyanın adını değiştirince sistem belirtilen yolu bulamıyor hatası veriyor.Ben dosya adı ve sistemdeki yeri değişse bile koda ne ekleyeyim ki bu script sorunsuz çalışsın?

Kullandığım dosya ya rar uzantılı veya zip uzantılı olacak.

Baştan söyleyeyim tam acemisiyim.Ama azimliyim.Birkaç tane script yaptım.Gayet güzel çalışıyorlar.(Aslında bulduklarımı scripte çevirmekten başka birşey değil.)Saygılarımla

Üstadım rapidUplader'ın yeni sürümü sessiz sedasız çıktı ama bağlantıyı aşırı yavaşlatıyor maalesef (Upload son hız da.DL hızı = UL hızı gibi bir şey oluyor)

Bu yüzden upload'ı gece yapmak daha mantıklı (Büyük dosyaları) ama yine de siz bilirsiniz.

http://rapidshare.com/rapiduploader.html[/CODE]

Link to comment
Share on other sites

  • 1 ay sonra...
  • 3 hafta sonra ...

Selam arkadaşlar...

Ben bir oyun botu yapıyorum.Bu bot oyuncu oyundan atıldığında kullanıcı adını ve şifreyi girerek tekrar oyuna girmesi gerekiyor.İlk kullanıcı adı ve şifreyi girip oyuna açmada sorun yok sorun bu botun oyuncunun oyundan atıldığını anlamasını sağlamada.Au3Recorder sadece pencere ismini aldığı için oyundan atılmadan çalıştığında oyuna girmeye çalışıyor oysa botu çalışır durumda bıraktığımda bot oyuncu oyundan atıldıktan sonra çalışmaya başlaması lazım buda ekran görüntüsünü alarak olabilir diye düşünüyorum bunu bir şekilde autoit scriptine tanıtarak sadece giriş ekranı geldiğinde aktif olmasını sağlamam gerekiyor ama bir türlü yapamadım yardımcı olursanız sevinirim..

Teşekkürler...

Link to comment
Share on other sites

Yardım dosyasındaki Pixel ile alakalı kodlarla örnekler yap.(PixelSearch,PixelGetColor,PixelChecksum)

Bu arada autoit ayunun gui ekranındaki yazıları algılayabiliyorsa bu yazılara görede bir şeyler yapabilirsin.

A3Recorderi aç ve Record Windows Text seçeneğinide seç. Oyuna gir ve oyundan atıldıktan sonra A3Recordere bak gelen kodları incele. Ufak bir değişiklik olsa bile sonuca ulaşman mümkün olabilir...

Link to comment
Share on other sites

ya pencere içindeki yazıları kullanarak yapacaksın pencerebaşlığı,pencereiçeriği burada oyunda görülmeyen ama atıldığında görülen kelimeyi yazıcaksın.Yada atıldığını belirten pencerede oyunda zor görülebilecek bi renk varsa onun gelmesini bekleyen bir fonk yazacaksın...

Mesela şöyle diyelim. bu koordinatlar kırmızı olduğunda bunu yap gibi.

Link to comment
Share on other sites

Yardım dosyasındaki Pixel ile alakalı kodlarla örnekler yap.(PixelSearch,PixelGetColor,PixelChecksum)

Bu arada autoit ayunun gui ekranındaki yazıları algılayabiliyorsa bu yazılara görede bir şeyler yapabilirsin.

A3Recorderi aç ve Record Windows Text seçeneğinide seç. Oyuna gir ve oyundan atıldıktan sonra A3Recordere bak gelen kodları incele. Ufak bir değişiklik olsa bile sonuca ulaşman mümkün olabilir...

ya pencere içindeki yazıları kullanarak yapacaksın pencerebaşlığı,pencereiçeriği burada oyunda görülmeyen ama atıldığında görülen kelimeyi yazıcaksın.Yada atıldığını belirten pencerede oyunda zor görülebilecek bi renk varsa onun gelmesini bekleyen bir fonk yazacaksın...

Mesela şöyle diyelim. bu koordinatlar kırmızı olduğunda bunu yap gibi.

PixelSearch örneği bilgisayarımda çalışmadığı için nasıl bir işlem yaptığını tam olarak anlamadım

PixelChecksum ise belli bir karedeki o anki piksel hareketini algılıyo anladığım kadarıyla ama oyunda sürekli bir pixel değişimi olduğu için bu da oyundan atmadan hatta sadece kameranın açısı değiştiğinde bile aktif hale geliyo

Au3Recorder da ise Record Windows Text seçeneği işaretlense bile o ekrandaki hiçbir yazıyı algılamıyor

PixelGetColor da

While 1
	Sleep(500)
	$pos = MouseGetPos()
	$pixelrengi = PixelGetColor($pos[0], $pos[1])
	ToolTip("X : " & $pos[0] & " Y : " & $pos[1] & " Renk : " & $pixelrengi)
WEnd

bu kodlar yardımıyla rengini almak istediğim yeri ve renk sayısını alıyorum ama bunu autoıt e bi türlü aktaramıyorum mesela enson şöyle bişey denedim

$var = PixelGetColor(824, 590) 
If $var = 11363674 Then WinWait("oyun", "")

"11363674" bu sayı oyundan atıldığındaki ekranın 824 , 590 kordinatlarındaki renk sayısı 

gibi ama bu kodlara hiç aldırış etmeden hata vermeden yine oyunu açıp işlem yapmaya çalışıyor

galiba burda benim renk olarak verdiğim sayıları renk olarak algılamıyor.

Blackman12 arkadaşım "Mesela şöyle diyelim. bu koordinatlar kırmızı olduğunda bunu yap gibi." sözünü bir örnekle kodlayarak açıklarsan daha iyi olacak...

Edited by Jackallster
Link to comment
Share on other sites

Aslında belki ben yardımcı olabilirim ama seni doğru yönlendirmem için oyunun elimde olması ve sistemimde yüklü olması lazım. Bunlarda uzun iş. Uğraşacak zamanım yok. :D

Ama doğru yoldasın. Yapacağına inanıyorum..

Bu arada oyunun önemli kısımlarından png formatında resimler çekip zipleyip bir upload sitesine yükleyebilirsen, resimleri inceleyip sana güzel fikirler verebiliriz......

Link to comment
Share on other sites

merhaba,

birşey sormak istiyorum ama olabilirmi olamazmı bilmiyorum.

"autoit-" bu programlar diğer kullandığımız prg leri katılımsız yapıp binevi otomotik kurulum haline getiriyoruz.

peki bu PRG ile wep sitesinide otomatik doldurabilirmiyiz.Örnegin bu (

Please register to see this content.
) sitenin kullanıcı adı,parola ve şifresini tıkladığımda otomatik doldurup açabilirmi.Eğer oluyorsa Lütfen Yardım Edin.Mesleğim gereği bana çok lazım oluyor günde 100 kişinin şifrelerini girmek zorunda kalıyorum.otomatik dolduran siteler var ama ben bunun gibi 4-5 siteye yazıyorum onun için karışıyor. Şimdiden Teşekkürler.

Link to comment
Share on other sites

Evet program ile web sitesini otomatik doldurtturabilirsin. Ama yapmak istediğini tam anlayamadım.

Sen programın her kullanıcının bilgilerini hatırlamasını ve sen kullanıcılardan birisine tıkladığında siteyi otomatik açmasını mı istiyorsun?

Link to comment
Share on other sites

evet aynen öyle .Örn; autoplayer media prg ile kısayol atayıp tıklayınca otomatik siteye girmesini istiyorum.bununla ilgili bana yol gösterebilirmisiniz veya videolu anlatım olursa çok iyi olur.sabırsızlıkla bekliyorum. Şimdiden Çok teşekkür ederim.

Link to comment
Share on other sites

Öncelikle sitenin html kodlarını bilgisyarına kayıt edip, bunun üzerinden giriş yapmaya çalış. Eğer sorunsuzca giriş yapabilirsen autoit ile gerekli kutuları html dosyasını açmadan yazdırabilirsin.

Bu sayede istediğini yapmış olursun.

Eğer işe yaramaz ise farklı yöntemlere yöneleceksin.

Mesela autoitin yardım dosyasındaki _IEFormElementSetValue bölümüne bir gözat. Orda bir kaç örnek mevcut......

Link to comment
Share on other sites

  • 4 hafta sonra ...

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...