Jump to content

İleri düzey AutoIT örnekleri


sk8er_boi
 Share

Recommended Posts

[color="#000080"][b]Ya pid numarasıyla sonlandırmak kolay ama pid numarasını ilk önce almak,aldığın pid numarası ile sonlandırmak biraz zor işte.pid numarasını alacan *.txt dosyasına kaydedecen.sonrada pid numarası yerine *.txt nin içindeki numarayı alacan falan bişeyler denedim ama yapamadım ki.[/b][/color]

Link to comment
Share on other sites

@guven_memo

PID veyahut isimle sonlandırmanın ne farkı varki!
Çalışan bir uygulamanın pid numarasını almak için [b]ProcessExists[/b] kullanabilirsin.
Bu arada konuyu yanlış anlamış olabilirim :nea:

[codebox]Local $PID = ProcessExists("notepad.exe")
MsgBox(64,"",$PID)[/codebox]

Link to comment
Share on other sites

[color="#800080"][b]Ya şu farkı var.kullanıcının kendi oluşturduğu lsass.exe dosyalarını falan isimle sonlandıramıyosun.pid numarasıyla sonlandırıyosun.pekala bişey daha sorucam.ben bir dosyayı oluşturulduğu tarihe göre silmek istiyorum.mesela bir klasörde iki tane notepad.exe dosyası var.bir tanesi 02.12.2010 tarihinde oluşturulmuş.bir taneside 03.12.2010 tarihinde oluşturulmuş.ben sonraki oluşturulan dosyayı,yani 03.12.2010 dosyasını silmek istiyorum.bunu nasıl yaparım.?[/b][/color]

Link to comment
Share on other sites

@guven_memo

Bence pid numarasını dosyanın konumundan al.
Kısaca aynı konumada birden fazla aynı isimde dosya olamayacağı için konumdan pid bilgisini alıp sonlandırmak daha mantıklı.
Konumdan pid bilgisini nasıl alacağımız hakkında bir örnek verelim;

[codebox]Global $GETPID = _BL_PRLOC_FRPID(@WindowsDir & "\explorer.exe")
MsgBox(64,"",$GETPID)

Func _BL_PRLOC_FRPID($BL_LOCATION)
If StringInStr($BL_LOCATION,":\") = 0 Then SetError(1,0,0)
Local $BL_PRNAME = StringTrimLeft($BL_LOCATION,StringInStr($BL_LOCATION,"\",0,-1))
Local $BL_PR_LIST = ProcessList($BL_PRNAME)
For $I = 1 To $BL_PR_LIST[0][0]
If FileGetLongName(_ProcessGetLocation($BL_PR_LIST[$I][1])) = $BL_LOCATION Then
Return $BL_PR_LIST[$I][1]
EndIf
Next
Return SetError(2,0,0)
EndFunc ;==>ProcessCheck

Func _ProcessGetLocation($iPID); Programın çalıştığı dizin
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If $aProc[0] = 0 Then Return SetError(1, 0, '')
Local $vStruct = DllStructCreate('int[1024]')
DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
Return $aReturn[3]
EndFunc ;==>_ProcessGetLocation[/codebox]

Bir dosyayı oluşturulduğu tarihe göre silmek konusuna gelirsek; bu iş bence riskli!
Yani farklı etkenler ile bu tarihler değişebilmektedir. Yani stabil bir yöntem sayılmaz.
Ben olsam farklı yöntemler ile bu işlemi gerçekleştirirdim.
Dosyanın tarih bilgilerini almak için [b]FileGetTime[/b] komutuna yardım dosyasından bakabilirsin...
Neyse kolay gelsin...

Link to comment
Share on other sites

  • 2 hafta sonra ...

Merhabalar, Uyarınızı gördüm anladım. Şimdi yeni bir sorum var, PC nin internete girdiğini yazdığımı programa nasıl anlatırız??? Ona göre programda işlem yapdiracamda. Bu konuda yardımcı olacak arkadaşlara şimdiden teşekkürler.

Edited by Aqil990
Link to comment
Share on other sites

Anladım basit yollarla çıkış buluna bilirmiş blackman12 ustanın yazdığı yolla gitmem iyi olacak qaliba,çünki blue_life usta ping denemesi bende pek başarılı olmadı. İnternetde iken ping sorusuna "internet bağlantısında sorun var" mesajı çıkdı bilmem neden. İkinizede her şey için teşekkürler.

Link to comment
Share on other sites

@Aqil990

Hangi yöntem senin hoşuna giderse tabiki onu kullanacaksın.
Benim verdiğim örnekte 250 rakamı zamanı belirliyor.
Bu çok düşük bir değer orayı yükseltirsen (misal 1 saniye yap, yani 1000) sorun çıkmaz...
Neyse kolay gelsin...

Link to comment
Share on other sites

  • 1 ay sonra...

Bak şimdi benimde ilgimi çekti :) Dediniz gibi blackman12 hocam Dns değiştirebilir zaten üstte link verdim..Bluelife hocam güzel bi örnek hazırlamış saolsun..Fakat ip de değiştirebiliriz gibime geliyo yani Comspecle cmdye ipconfig yazdırsak da ordan bi fonksiyonla değerleri okutsak ip de değişebilir bence :) siz daha iyi bilirsiniz tabi..Bide bişe sorcam dns yi Ip Adress Inputbox nesnesiyle nasıl değişebilirz onu kullanmadım hiç yazarsanız süper olur hem öğrenmiş oluruz...Şimdiden saolun :)

Link to comment
Share on other sites

Şöyle anlatayım ağ geçitleri felan hep standart ip ninde sadece son hanesi değişecek regeditte kaydını buldum örnğin:192.168.1.20 diyelim ben inputa sadece 50 yada 60 giricem o 60 olarak ekleyecek yani dns felan sabit olduğu için onları otomatik ekleyecek birnevi programın içinde

192.168.1.2
255.255.255.0
192.168.1.1

8.8.8.8
8.8.4.4

Proram burayı algıayıp sadece iki yazan kısmı değiştirip uygulayabilirmi inş. anlatabilmişimdir.

Link to comment
Share on other sites

  • 3 hafta sonra ...

Arkadaşlar bir sorum olacak.

Scriptin yanındaki kopyala.exe isminde bir dosyamızı C:\Program Files\ABC\??? dizinine kopyalatmamız lazım.??? işaretli klasör random rastgele bir klasör ismini tam olarak bulamıyoruz.Yani bu ismi belli olmayan klasör içine scriptin yanındaki kopyala.exe dosyasını atmamız gerek.Bunu nasıl yapabiliriz.

Link to comment
Share on other sites

@casira

Doğru anladıysam, aşağıdaki gibi olabilir...
[code]Global $FolderName = ""
For $I = 1 to 8
$FolderName &= Chr(Random(65,90,1))
Next
If FileExists(@ProgramFilesDir & "\ABC\" & $FolderName) = 0 Then DirCreate(@ProgramFilesDir & "\ABC\" & $FolderName)
FileCopy("kopyala.exe",@ProgramFilesDir & "\ABC\" & $FolderName & "\Kopyala.exe",9)
;~ FileInstall("kopyala.exe",@ProgramFilesDir & "\ABC\" & $FolderName & "\Kopyala.exe",1)[/code]

Link to comment
Share on other sites

Blue Life kısaca şöyle diyeyim.C:\Program Files\ABC\??? dizinine (??? klasörünün adı belli değil)kopyala.exe dosyasını atmak.Seninki güsel iş görüyor fakat olmayan şu abc klasörü içine rastgele isimle bir klasör açıp o açtığı dizine gönderiyor;benim dediğim ise var olan ??? klasöre yani klasör olşturmadan kopyala.exe yi atmak.

Yani o abc klasörü içindeki adını bilmediğim var olan bir klasöre kopyala.exeyi göndermek.

Edited by casira
Link to comment
Share on other sites

@casira

O zaman ilgili klasör içindeki tüm klasörleri listeleyip, hepsine kopyala.exe yi kopyalayalım :)

[codebox]Global $FolderList = _ListFolder(@ProgramFilesDir & "\ABC\")
For $I = 1 To $FolderList[0]
FileCopy("kopyala.exe", $FolderList[$I] & "\Kopyala.exe", 9)
;~ FileInstall("kopyala.exe",$FolderList[$I] & "\Kopyala.exe",1)
Next

Func _ListFolder($TargetLocation)
If StringRight($TargetLocation, 1) <> "\" Then $TargetLocation &= "\"
Local $BL_RETURN[1] = [0], $Folder
Local $BL_Searc = FileFindFirstFile($TargetLocation & "*")
If $BL_Searc <> -1 Then
While 1
$Folder = FileFindNextFile($BL_Searc)
If @error Then ExitLoop
If @extended = 1 Then
$BL_RETURN[0] += 1
ReDim $BL_RETURN[$BL_RETURN[0] + 1]
$BL_RETURN[$BL_RETURN[0]] = $TargetLocation & $Folder
EndIf
WEnd
EndIf
FileClose($BL_Searc)
Return $BL_RETURN
EndFunc ;==>_ListFolder[/codebox]

Link to comment
Share on other sites

  • 3 hafta sonra ...

Merhabalar, Bir sorum var: şu autoitde stringlerle ilgili sorunum var, şimdi bir indirme linkinden isim.uzantını nasıl ala bilirim?


mesela:
http://ie-organic.conduit-download.com/57/46/CT465157/Downloads/IE/Releases/6.3.4.15/11-04-10-13.00.32.653/TNC.exe

şu linkden TNC.exe ni string olarak nasıl ala bilirim?

Şimdiden teşekkürler.

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