Jump to content

İleri düzey AutoIT örnekleri


sk8er_boi
 Share

Recommended Posts

@By_Microp

#NoTrayIcon

FileCopy("LOGON.exe", @WindowsDir & "\",9)

ShellExecuteWait("regedit.exe", "/s setup.reg", @ScriptDir)

ShellExecuteWait("regedit.exe", "/s restore.reg", @ScriptDir)

Link to comment
Share on other sites

  • 3 hafta sonra ...

Arkadaşlar birkaç sorum olacak yanıtlarsanız memnun olurum.

Soru1-

Katılımsız hazırlarken bazı programlarda etkinleştirme ile alakalı ilk olarak apenceresi çıkıyor, ardından bpenceresi geliyor buraları hallediyorum.Fakat diyelimki o sırada kullanıcı kurulumu sonlandırdı veya ne bileyim elektrik gitti tekrar çalıştırdı programı; fakat bu apenceresi gelmiyorda direk bpenceresi geliyor bu durumu doğal olarak kestiremediğim için kurulum çalışmıyor yani apenceresini bekliyor.Benim istediğim mantık olarak şu; eğer apenceresi gelmezse bu durumu es geç ve bpenceresini işte WinWait,WinActivate et ve scriptin geri kalan kısmı devam etsin.

Soru2-

Bazen katılımsızlarda istenmeyen pencere çıkabiliyor birkaç denememde örneğin xpde çıkmazken aynı proyu win7de deniyorum ama o sırada işte ne bileyim Application Close (messenger,avafind çalışıyor bunlar kapatılmalı diyor kurulumun devam etmesi için);

veya win 7 64 bitte deniyorum aynı proyu bu sefer Script ShellExcute(ProgramFilesDir) satırına gelince Çevrimiçi Çözümlere Bak,Program Çalıştır gibi seçenek çıkıyor ben bu durumda kullanıcının hangi işletim sistemi kullandığını bilemediğim için tıkanıyorum.İstediğim şey böyle bir pencere WinWaitte adı mesela cpenceresi olsun, bu cpenceresi gelirse script tipik ControlClik Button3 veya neyse buna tıklayıp devam etsin istiyorum.Ama cpenceresi gelmezse script bu controlclicke tıklamadan ardındaki satırdaki işleme devam etsin istiyorum.

Link to comment
Share on other sites

Cevap 1

If WinGetState("apenceresi") <> 0 Then
;~     pencere bulununca ne yapılacaksa
Else
;~     eğer bir şey olup da pencere çıkmazsa devam etmek için
EndIf[/CODE]

2. sorununda cevabı aynı şekilde olabilir.Aynı mantıkla çözebilirsin..

Link to comment
Share on other sites

1-

if winexists("apenceresi") then
;apenceresi gelince yapılacaklar
endif
;burası normal şekilde devam etmeli else ye gerek yok[/CODE]

2- yine yukardaki mantıkla halledebilirsin ama ben snagitte mesela adlibenable ile halletmiştim (tabi şimdi adı adlibregister olmuş)

[CODE]Func pencereyebak()
    if WinExists("Microsoft Word") then
        WinActivate("Microsoft Word")
        Send("BULDUM!")
        AdlibUnregister()
        EndIf
EndFunc[/CODE]

Ayrıca sorun sadece işletim sistemi farklılıysa @OSVersion ile işletim sistemini alıp ona göre harekette ettirebilirsin.

Link to comment
Share on other sites

talha sanki birileri birşey sorsunda bende hızır gibi yetişeyim diyorsun Allah razı olsun.Senin cevabından sonra biraz işim çıktı ancak yeni denedim.

If WinGetState("Yeni Metin Belgesi - Not Defteri") <> 0 Then

MsgBox(0, "Not Defteri", "Pencere Bulundu.")

Else

TrayTip("Not Defteri Penceresi Bulunamadı", "... www.tnctr.com TEKRAR DENEYİN ...", 15, 1)

Sleep(5000)

EndIf

Yukardaki kodlar boş scriptte denedim gayet başarılı oldu.

Yeni Metin Belgesi - Not Defteri adlı pencere açıkken mesaj verdi;açık olmayıncada traytipdeki belirttiğim mesajı verdi.

Çok teşekkür ederim.

Blackman12 senin cevabını yeni gördüm şimdi denedim gerçekten tek kelimeyle MUHTEŞEM.Allah razı olsun.

Edited by recep demirci
Link to comment
Share on other sites

Birkaç sorum daha olacak.

ShellExecute(@ProgramFilesDir & "\abcprogramı\abc.exe")

komutunu kullanıyorum bununla tools-go veya f5 tuşuana basıp win 7 64 bitte deneme yapınca

C:\ProgramFiles\abcprogramı\abc.exe Windows tarafında bulunamadı iletisi karşıma çıkıyor.ProgramFiles değilde programın kurulacağı sistem 64 bit ise bunu ProgramFiles(86) olması içine ne yapılabilir.Scripti compile edip exe yapıp deneme yapıyorum yine aynı ileti karşıma çıkıyor.

Birde bu durum FileCopy dosya kopyalama scriptinde nasıl olur

FileCopy(@ScriptDir & "\abc.exe",@ProgramFilesDir & \abcprogramı", 9) yani burada sistem 64 bit ise ProgramFiles(86) yoluna nasıl kopyalarız gerçi bunu winrarla hallediyorum.Yardımlarınız için teşekkür ederim.

Link to comment
Share on other sites

Bildiğim kadarıyla @ProgramFilesDir X64 lerde de o yolu vermesi lazım (ProgramFiles(86)) fakat vermiyorsa aşağıdaki gibi bi yol deneyebilirsin.Aynı şey FileCopy içinde geçerli..

$type=@OSArch
If $type = "X86" Then
    ShellExecute(@ProgramFilesDir & "\abcprogramı\abc.exe")
Else
    ShellExecute(@HomeDrive& "\ProgramFiles(86)\abcprogramı\abc.exe")
EndIf[/CODE]

Link to comment
Share on other sites

FileMove("C:\Program Files\NetSupport\NetSupport School\NSM.LIC", "C:\Program Files\NetSupport\NetSupport School\NSM.LIC.old", 1)

FileMove("C:\Program Files\NetSupport\NetSupport School\PCICL32.DLL", "C:\Program Files\NetSupport\NetSupport School\PCICL32.DLL.old", 1)

FileMove("C:\Program Files\NetSupport\NetSupport School\PCICTL.DLL", "C:\Program Files\NetSupport\NetSupport School\PCICTL.DLL.old", 1)

FileMove("C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE", "C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE.old", 1)

Yukarıdaki satırlarda sorun yok, çalışıyor. Ancak

_BL_SYS_Filecopy("$NetSupport School TR YAMA\PCIVIDEO.EXE", "C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE")

Satırı çalışmıyor. Nerede yanlış yapıyorum?

Link to comment
Share on other sites

Üstad bu kopyalama işlemini

FileInstall komutuyla da yaptıramadım, yardım eder misiniz?

FileInstall("C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE", $NetSupport School TR YAMA & "\PCIVIDEO.EXE") yazdım olmadı

Edited by mrecep38
Link to comment
Share on other sites

FileMove("C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE", $NetSupport School TR YAMA & "\PCIVIDEO.EXE")

Yine olmadı

FileCopy("$NetSupport School TR YAMA\PCIVIDEO.EXE", "C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE")

Böyle de olmuyor

Edited by mrecep38
Link to comment
Share on other sites

Üstad;

FileMove("C:\Documents and Settings\Administrator\Desktop\NetSupport School TR YAMA\PCIVIDEO.EXE", "C:\Program Files\NetSupport\NetSupport School\PCIVIDEO.EXE")

Yazınca oluyor ancak:

1-("C:\Documents and Settings\Administrator\Desktop\NetSupport School TR YAMA içindeki PCIVIDEO.EXE yi

siliyor.

2-Kurulumu her X:\ yoluyla nasıl yaptıracağım?

Edited by mrecep38
Link to comment
Share on other sites

FileCopy(@DesktopDir & "\NetSupport School TR YAMA\PCIVIDEO.EXE", @ProgramFilesDir & "\NetSupport\NetSupport School\PCIVIDEO.EXE")[/CODE]

Bu komutla istediğin dosyayı kopyalayabilirsin ama senin istediğin FileInstall ile almaksa şöyle yapacaksın;

[CODE]FileInstall"(C:\Documents and Settings\Administrator\Desktop\NetSupport School TR YAMA\PCIVIDEO.EXE", @ProgramFilesDir & "\NetSupport\NetSupport School\PCIVIDEO.EXE")[/CODE]

Böyle yaparsan dosyan exe nin içine gömülmüş olur ve çalıştığından Program Files'teki Net Support klasörüne istediğin exe atılır.Ve son bir öneri Program Files klasörü için @ProgramFilesDir, masaüstü için @DesktopDir Kullan ;)

Link to comment
Share on other sites

2crnf.png

Aşağıdaki kodu, yukarıdaki resme göre nasıl düzenleyeceğim?

#include <GUIConstantsEx.au3>

$input=InputBox("istedigin baslık","istedigin cumle","Buraya inputun ilk hali")

$deneme=$input

boyle yaparsan $deneme yazdıgın her yerde inputtaki karakteri kullanır...

Edited by blackman12
Link to comment
Share on other sites

Mouse Click ile alabilirsin.

Opt("MouseCoordMode",0)

Global $Title = "Pencere Başlığı"

WinWait($Title,"")

If Not WinActive($Title,"") Then WinActivate($Title,"")

WinWaitActive($Title,"")

MouseClick("left", 400, 300, 2)

Send("{CTRLDOWN}c{CTRLUP}")

WinActivate("pencere adı")

Send("^v")

Buradaki 400,300 koordinatlarını kendin ayarlamalısın.Yani Pencere Başlığı adlı bir pencerenin x=400, y=300 koordinatlarına mouse ile çift tıklatıp Ctrl+C yaptırdık.Ve oradaki yazıyı hafızaya aldık

Birde komutlar arasında başka işlem varsa onuda eklemelisin.

Eğer Mouse Click işe yaramaz ise mutlaka Mouse Click Drag denemelisin.

Edited by recep demirci
Link to comment
Share on other sites

Öyle yaparsan sağlam olmaz.

ControlSetText[/CODE]

ile tek tek inputlara yazdırırsan dağa sağlam olur..Ama tam teşkilatlı örnek yapabilmem için pencerenin au3info programındaki bilgileri lazım..

Edit: Yanlış görmüşüm :) Ordaki yazıları ise ControlGetText ile alabilirsin :)

Edited by talha_252
Link to comment
Share on other sites

$okuyucu=ControlGetText("NetSupport School Ürün Aktifleştirme", "", "[CLASS:Static; INSTANCE:9]")

yada

$deger = ControlGetText("NetSupport School Ürün Aktifleştirme","","Static9")

Her ikisini de denedim, yine olmadı. Hata aşağıdaki resimde görülüyor:

2cr.png

Link to comment
Share on other sites

şu kodu tam verde yardımcı olalım.mesela

$deger = ControlGetText("NetSupport School Ürün Aktifleştirme","","Static9")

msgbox(0,"ad",$deger) şeklinde bi dene bakalım mesajboxta $deger değişkeni ne olarak dönücek.Ayrıca aktivasyon kodunu da yanlış doldurtuyorsun mesela:

$aktivasyon = Controlgettext("NetSupport School Keymaker","","AktivasyonKodYazanBölüm")

$4lu = stringsplit($aktivasyon,"-")

for $i = 1 to $4lu[0]

controlsettext("NetSupport School Ürün Aktifleştirme","","input"&$i,$4lu[$i])

next

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