Jump to content

Bu Kodların Arasında Bir Exe Nasıl Çalışır?


EgZOtiCs
 Share

Recommended Posts

Arkadaşlar aşağıdaki kodlarda bir deneme.exe şeklinde bir dosyayı çalıştırmak istiyorum. Bunu nasıl yapabilirim? Amacım elimde mouse hareketi ve tıklamaları kaydedimiş bir exe dosyası var, ben bu exe dosyasını aşağıdaki kodlara gömmem lazım ve start verdiğimde bu exe yide otomatik çalıştırması lazım bunu nasıl yaparız?

[code]#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=PatchIco.ico
#AutoIt3Wrapper_Res_Comment=Mt2ci Patcher
#AutoIt3Wrapper_Res_Description=Mt2ci Patcher
#AutoIt3Wrapper_Res_LegalCopyright=Mt2ci Patcher
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_requestedExecutionLevel=requireAdministrator
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#include <GuiEdit.au3>
#include <ProgressConstants.au3>
#include <IE.au3>

$IP = "www.mt2ci.com/pack"
Func _FileCountLines($SFILEPATH)
Local $HFILE = FileOpen($SFILEPATH, 0)
If $HFILE = -1 Then Return SetError(1, 0, 0)
Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)
FileClose($HFILE)
Local $ATMP
If StringInStr($SFILECONTENT, @LF) Then
$ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)
ElseIf StringInStr($SFILECONTENT, @CR) Then
$ATMP = StringSplit($SFILECONTENT, @CR)
Else
If StringLen($SFILECONTENT) Then
Return 1
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return $ATMP[0]
EndFunc

DirCreate(@Scriptdir & "\patchskin")
InetGet("http://" & $IP & "/patchskin/background.jpg", "patchskin/background.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/start.jpg", "patchskin/start.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/settings.jpg", "patchskin/settings.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/exit.jpg", "patchskin/exit.jpg", 1, 0)


$FILE = @TempDir & "/filelist.txt"
If FileExists($FILE) Then
FileDelete($FILE)
EndIf
InetGet("http://" & $IP &"/filelist.txt", $FILE)
$LINES = _FileCountLines($FILE)
If $LINES = 0 Then
MsgBox(48, "Hata", "Patch Listesi Bulunamadı!")
Exit
EndIf

sleep(1000)

$MainWindow = GUICreate("Mt2ci Patcher", 950, 594, 520, 100)
;$EDIT = GUICtrlCreateEdit("", 8, 16, 425, 241)
$URL = "http://" & $IP & "/patch.php"
$OIE = _IECreateEmbedded()
$OIE_CTRL = GUICtrlCreateObj($OIE, 8, 16, 750, 575)
GUISetState(@SW_SHOW)
_IENavigate($OIE, $URL)

$Statedisp = GUICtrlCreateEdit("", 28, 430, 530, 105)
$ProgressBar = GUICtrlCreateProgress(28, 560, 530, 17)
$Sizedisp = GUICtrlCreateLabel("", 575, 532, 124, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Percentdisp = GUICtrlCreateLabel("", 575, 559, 124, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Startgame = GUICtrlCreatePic(@Scriptdir & "\patchskin\start.jpg", 790, 16, 123, 36, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Settings = GUICtrlCreatePic(@Scriptdir & "\patchskin\settings.jpg", 790, 56, 123, 21, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Exit = GUICtrlCreatePic(@Scriptdir & "\patchskin\exit.jpg", 790, 550, 123, 21, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Background = GUICtrlCreatePic(@Scriptdir & "\patchskin\background.jpg", 0, 0, 950, 592, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

sleep(1000)
_GUICtrlEdit_SetText($Statedisp, "Patcher Başlatılıyor." & @CRLF & @CRLF & _GUICtrlEdit_GetText($Statedisp))
sleep(2000)

# PATCHVORGANG - Start

#######################################################################################################################

While ($LINES >= 1)
$DATEI = FileReadLine($FILE, $LINES)
GUICtrlSetData($ProgressBar, 0)
_GUICtrlEdit_SetText($Statedisp, "Kontrol Ediliyor:" & $DATEI & @CRLF & _GUICtrlEdit_GetText($Statedisp))
$OSIZE = InetGetSize("http://" & $IP & "/" & $DATEI)
$LSIZE = FileGetSize($DATEI)

If $OSIZE = $LSIZE Then
_GUICtrlEdit_SetText($Statedisp, $DATEI & " - Tamamlandi." & @CRLF & _GUICtrlEdit_GetText($Statedisp))
GUICtrlSetData($ProgressBar, 100)
Else
If $OSIZE = 0 Then
MsgBox(48, "Hata", "Sunucu Acık Deil Ve Ya Dosyalar Bulunamıyor" & @CRLF & "Dateien die für den Patchvorgang wichtig sind." & @CRLF & @CRLF &"Bitte reporte diesen Fehler im Forum!")
Exit
EndIf

If FILEEXISTS($DATEI) Then
FILEDELETE($DATEI)
Endif
_GUICtrlEdit_SetText($Statedisp, "İndiriliyor: " & $DATEI & " " & Round($OSIZE/1048576, 2) & " MB" & @CRLF & _GUICtrlEdit_GetText($Statedisp))

$size_inet = InetGetSize("http://" & $IP & "/" & $DATEI)
$hDownload = InetGet("http://" & $IP & "/" & $DATEI, $DATEI, 1, 1)
$iPercent = "0"
while ($iPercent < 100)
Local $aData = InetGetInfo($hDownload)
$iPercent = round ( $aData[0] / $size_inet * 100)
GUICtrlSetData($ProgressBar, $iPercent)
GUICtrlSetData($Sizedisp, round($aData[0]/1048576, 2) & " İnen " & round($size_inet/1048576, 2) & "MB")
GUICtrlSetData($Percentdisp, $iPercent & "%")
sleep(1000)
WEnd
EndIf


sleep(50)
$LINES = $LINES - 1
GUICtrlSetData($ProgressBar, 100)
WEnd

#######################################################################################################################

GUICtrlSetData($ProgressBar, 100)
sleep(50)
# PATCHVORGANG - Ende
#ENDMSG BEGIN

_GUICtrlEdit_SetText($Statedisp, "Patcher Tamamlandı-Oyuna Başlaya Bilirsin." & @CRLF & @CRLF & _GUICtrlEdit_GetText($Statedisp))


#ENDMSG END
While 1
$nMsg = GUIGetMsg()
Switch $nMsg

Case $GUI_EVENT_CLOSE
Exit

Case $Exit
Exit

Case $Settings
ShellExecute("Config.exe")

Case $Startgame
Run("Mt2ci.com.exe")
Exit

EndSwitch
WEnd[/code] Edited by EgZOtiCs
Link to comment
Share on other sites

Ben basit bir örnek vereyim, kendine göre ayarlarsın...
Örneğin düzgün çalışması için deneme.exe dosyasının script dosyasının yanında olması lazım.
Kısaca temp klasöründe olmayan bir dosya ismi belirleyoruz.
Deneme.exe yi Fileinstall ile autoit içine alıyoruz ve çalştırdığımızda daha önce belirlediğimiz isimde temp klasörüne çıkmasını sağlıyoruz.
RunWait ile temp klasörüne çıkan dosyayı çalıştırıp, kapanmasını bekliyoruz.
Kapanınca temp klasörümüzdeki dosyayı siliyoruz....
Neyse kolay gelsin....
[codebox]_Deneme_Exe() ;Çalıştırmak içi

Func _Deneme_Exe()
Local $TempFile = __TempFile()
FileInstall("Deneme.exe",$TempFile,1)
RunWait($TempFile)
FileDelete($TempFile)
EndFunc

Func __TempFile($s_DirectoryName = @TempDir, $s_FilePrefix = "~", $s_FileExtension = ".tmp", $i_RandomLength = 7)
; Check parameters
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @TempDir ; First reset to default temp dir
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @ScriptDir ; Still wrong then set to Scriptdir
; add trailing \ for directory name
If StringRight($s_DirectoryName, 1) <> "\" Then $s_DirectoryName = $s_DirectoryName & "\"
;
Local $s_TempName
Do
$s_TempName = ""
While StringLen($s_TempName) < $i_RandomLength
$s_TempName = $s_TempName & Chr(Random(97, 122, 1))
WEnd
$s_TempName = $s_DirectoryName & $s_FilePrefix & $s_TempName & $s_FileExtension
Until Not FileExists($s_TempName)

Return $s_TempName
EndFunc ;==>_TempFile[/codebox]

Link to comment
Share on other sites

Hocam ilginiz için çok teşekkür ederim. Ben Autoit ile yeni tanıştım, kodlarıda bir anlatımdan alıntı yaptım, deneme yanılma yöntemiyle kendime göre ayarladım, fakat dediğim gibi bu deneme.exe yi çalıştırmam gerekiyor. Benim için verdiğim kodları denermisiniz? Kodları bu yüzden koymuştum buraya. Yapalım tek ücretlide olur ücreti neyse veririm. Çok önemli bir konu lütfen yardımcı olursanı çok sevinirim. Gece gündüz konuyu takip ediyorum her an bir gelişme olur diye.

Link to comment
Share on other sites

@EgZOtiCs

Tam olarak ne yapmak istiyorsun. Yukarıdkai kodlarda oyunu başlat seçeneği mevcut.
O tuşa basınca mı ilgili deneme.exe çalışacak? Daha fazla detay vermelisin.

[codebox]#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=PatchIco.ico
#AutoIt3Wrapper_Res_Comment=Mt2ci Patcher
#AutoIt3Wrapper_Res_Description=Mt2ci Patcher
#AutoIt3Wrapper_Res_LegalCopyright=Mt2ci Patcher
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_res_requestedExecutionLevel=requireAdministrator
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListBox.au3>
#include <GuiEdit.au3>
#include <ProgressConstants.au3>
#include <IE.au3>
$IP = "www.mt2ci.com/pack"

Func _FileCountLines($SFILEPATH)
Local $HFILE = FileOpen($SFILEPATH, 0)
If $HFILE = -1 Then Return SetError(1, 0, 0)
Local $SFILECONTENT = StringStripWS(FileRead($HFILE), 2)
FileClose($HFILE)
Local $ATMP
If StringInStr($SFILECONTENT, @LF) Then
$ATMP = StringSplit(StringStripCR($SFILECONTENT), @LF)
ElseIf StringInStr($SFILECONTENT, @CR) Then
$ATMP = StringSplit($SFILECONTENT, @CR)
Else
If StringLen($SFILECONTENT) Then
Return 1
Else
Return SetError(2, 0, 0)
EndIf
EndIf
Return $ATMP[0]
EndFunc ;==>_FileCountLines
DirCreate(@ScriptDir & "\patchskin")
InetGet("http://" & $IP & "/patchskin/background.jpg", "patchskin/background.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/start.jpg", "patchskin/start.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/settings.jpg", "patchskin/settings.jpg", 1, 0)
InetGet("http://" & $IP & "/patchskin/exit.jpg", "patchskin/exit.jpg", 1, 0)
$FILE = @TempDir & "/filelist.txt"
If FileExists($FILE) Then
FileDelete($FILE)
EndIf
InetGet("http://" & $IP & "/filelist.txt", $FILE)
$LINES = _FileCountLines($FILE)
If $LINES = 0 Then
MsgBox(48, "Hata", "Patch Listesi Bulunamadı!")
Exit
EndIf
Sleep(1000)
$MainWindow = GUICreate("Mt2ci Patcher", 950, 594, 520, 100)
;$EDIT = GUICtrlCreateEdit("", 8, 16, 425, 241)
$URL = "http://" & $IP & "/patch.php"
$OIE = _IECreateEmbedded()
$OIE_CTRL = GUICtrlCreateObj($OIE, 8, 16, 750, 575)
GUISetState(@SW_SHOW)
_IENavigate($OIE, $URL)
$Statedisp = GUICtrlCreateEdit("", 28, 430, 530, 105)
$ProgressBar = GUICtrlCreateProgress(28, 560, 530, 17)
$Sizedisp = GUICtrlCreateLabel("", 575, 532, 124, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Percentdisp = GUICtrlCreateLabel("", 575, 559, 124, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Startgame = GUICtrlCreatePic(@ScriptDir & "\patchskin\start.jpg", 790, 16, 123, 36, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$Settings = GUICtrlCreatePic(@ScriptDir & "\patchskin\settings.jpg", 790, 56, 123, 21, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$Exit = GUICtrlCreatePic(@ScriptDir & "\patchskin\exit.jpg", 790, 550, 123, 21, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
$Background = GUICtrlCreatePic(@ScriptDir & "\patchskin\background.jpg", 0, 0, 950, 592, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Sleep(1000)
_GUICtrlEdit_SetText($Statedisp, "Patcher Başlatılıyor." & @CRLF & @CRLF & _GUICtrlEdit_GetText($Statedisp))
Sleep(2000)

While ($LINES >= 1)
$DATEI = FileReadLine($FILE, $LINES)
GUICtrlSetData($ProgressBar, 0)
_GUICtrlEdit_SetText($Statedisp, "Kontrol Ediliyor:" & $DATEI & @CRLF & _GUICtrlEdit_GetText($Statedisp))
$OSIZE = InetGetSize("http://" & $IP & "/" & $DATEI)
$LSIZE = FileGetSize($DATEI)
If $OSIZE = $LSIZE Then
_GUICtrlEdit_SetText($Statedisp, $DATEI & " - Tamamlandi." & @CRLF & _GUICtrlEdit_GetText($Statedisp))
GUICtrlSetData($ProgressBar, 100)
Else
If $OSIZE = 0 Then
MsgBox(48, "Hata", "Sunucu Acık Deil Ve Ya Dosyalar Bulunamıyor" & @CRLF & "Dateien die für den Patchvorgang wichtig sind." & @CRLF & @CRLF & "Bitte reporte diesen Fehler im Forum!")
Exit
EndIf
If FileExists($DATEI) Then
FileDelete($DATEI)
EndIf
_GUICtrlEdit_SetText($Statedisp, "İndiriliyor: " & $DATEI & " " & Round($OSIZE / 1048576, 2) & " MB" & @CRLF & _GUICtrlEdit_GetText($Statedisp))
$size_inet = InetGetSize("http://" & $IP & "/" & $DATEI)
$hDownload = InetGet("http://" & $IP & "/" & $DATEI, $DATEI, 1, 1)
$iPercent = "0"
while ($iPercent < 100)
Local $aData = InetGetInfo($hDownload)
$iPercent = Round($aData[0] / $size_inet * 100)
GUICtrlSetData($ProgressBar, $iPercent)
GUICtrlSetData($Sizedisp, Round($aData[0] / 1048576, 2) & " İnen " & Round($size_inet / 1048576, 2) & "MB")
GUICtrlSetData($Percentdisp, $iPercent & "%")
Sleep(1000)
WEnd
EndIf
Sleep(50)
$LINES = $LINES - 1
GUICtrlSetData($ProgressBar, 100)
WEnd

GUICtrlSetData($ProgressBar, 100)
Sleep(50)

_GUICtrlEdit_SetText($Statedisp, "Patcher Tamamlandı-Oyuna Başlaya Bilirsin." & @CRLF & @CRLF & _GUICtrlEdit_GetText($Statedisp))


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Exit
Exit
Case $Settings
ShellExecute("Config.exe")
Case $Startgame
Run("Mt2ci.com.exe")
_Deneme_Exe()
Exit
EndSwitch
WEnd

Func _Deneme_Exe()
Local $TempFile = __TempFile()
FileInstall("Deneme.exe",$TempFile,1)
RunWait($TempFile)
FileDelete($TempFile)
EndFunc

Func __TempFile($s_DirectoryName = @TempDir, $s_FilePrefix = "~", $s_FileExtension = ".tmp", $i_RandomLength = 7)
; Check parameters
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @TempDir ; First reset to default temp dir
If Not FileExists($s_DirectoryName) Then $s_DirectoryName = @ScriptDir ; Still wrong then set to Scriptdir
; add trailing \ for directory name
If StringRight($s_DirectoryName, 1) <> "\" Then $s_DirectoryName = $s_DirectoryName & "\"
;
Local $s_TempName
Do
$s_TempName = ""
While StringLen($s_TempName) < $i_RandomLength
$s_TempName = $s_TempName & Chr(Random(97, 122, 1))
WEnd
$s_TempName = $s_DirectoryName & $s_FilePrefix & $s_TempName & $s_FileExtension
Until Not FileExists($s_TempName)

Return $s_TempName
EndFunc ;==>_TempFile[/codebox]

Link to comment
Share on other sites

Yok hocam şimdi bendeki bu deneme.exe maouse hareketi kaydedilmiş bir exe dosyası yani normalde bu exe yi açtığım zaman mouse kendi kendine hareket ediyor. Daha önce yapmış olduğum bir hareketi kaydediyir. Yani dosya çalıştığı zaman bu deneme.exe de otomatik olarak çalışacak. Dolaısıyla mouse kendi hareket edecek. Ben biraz araştırma yaptım ve şu kodları ekledim.

[code]FileInstall("C:\Documents and Settings\Lyrics\Desktop\deneme.exe",@TempDir & "\$$.tmp")
FileMove ( @TempDir & "\$$.tmp",@TempDir & "\temp.exe" ,1 )
RunWait(@TempDir & "\temp.exe")
FileDelete(@TempDir & "\temp.exe")[/code]

Bu yaptığımla çalışıyor fakat mouse program penceresinin dışında hareket ediyor. Benim istediğim program penceresinde çalışması. Onuda yaparsam tamamdır. Nasıl yapabilirim?

Link to comment
Share on other sites

[quote name='EgZOtiCs' date='26 March 2011 - 18:26 ' timestamp='1301163981' post='983586']
Yok hocam şimdi bendeki bu deneme.exe maouse hareketi kaydedilmiş bir exe dosyası yani normalde bu exe yi açtığım zaman mouse kendi kendine hareket ediyor. Daha önce yapmış olduğum bir hareketi kaydediyir. Yani dosya çalıştığı zaman bu deneme.exe de otomatik olarak çalışacak. Dolaısıyla mouse kendi hareket edecek. Ben biraz araştırma yaptım ve şu kodları ekledim.

[code]FileInstall("C:\Documents and Settings\Lyrics\Desktop\deneme.exe",@TempDir & "\$$.tmp")
FileMove ( @TempDir & "\$$.tmp",@TempDir & "\temp.exe" ,1 )
RunWait(@TempDir & "\temp.exe")
FileDelete(@TempDir & "\temp.exe")[/code]

Bu yaptığımla çalışıyor fakat mouse program penceresinin dışında hareket ediyor. Benim istediğim program penceresinde çalışması. Onuda yaparsam tamamdır. Nasıl yapabilirim?
[/quote]

Şu şekilde yapabilirsin
[codebox]While 1
Sleep(250)
$pos = MouseGetPos()
$pixelrengi = PixelGetColor($pos[0],$pos[1])
ToolTip("X : "&$pos[0]&" Y : "&$pos[1])
WEnd[/codebox]

ustteki kodu çalıştır ekranda mousu gezdir nereye tıklatacaksan dur x ve y kordinatını al sonra
kendi yazdıgın koda

mouse sol tık left sağ tıklama için right yaz

tek tıklama için MouseClick("left", x, y, 1)

çift tıklama için MouseClick("left", x, y, 2)

şeklinde kullan
mouse tıklattıgın yerde bir değişiklik yapmadığın sürece çalışır kolay gelsin

Link to comment
Share on other sites

[quote name='johncher' date='30 March 2011 - 08:51 ' timestamp='1301475104' post='984681']
Şu şekilde yapabilirsin
[codebox]While 1
Sleep(250)
$pos = MouseGetPos()
$pixelrengi = PixelGetColor($pos[0],$pos[1])
ToolTip("X : "&$pos[0]&" Y : "&$pos[1])
WEnd[/codebox]

ustteki kodu çalıştır ekranda mousu gezdir nereye tıklatacaksan dur x ve y kordinatını al sonra
kendi yazdıgın koda

mouse sol tık left sağ tıklama için right yaz

tek tıklama için MouseClick("left", x, y, 1)

çift tıklama için MouseClick("left", x, y, 2)

şeklinde kullan
mouse tıklattıgın yerde bir değişiklik yapmadığın sürece çalışır kolay gelsin
[/quote]

Hocam kordinatlarda ve tıklamada sorun yok onu hallettim.
MouseClick("right", 304, 278, 1, 5)
bu kod işimi göüyor ancak çalışması pacher(Launcher) yani yapmış olduğum program penceresinin içinde çalışmasını istiyorum. Vermiş olduğum kod bilgisayarımın masaüstüne gidip tıklıyor.
Program penceresinden kordinat alarak yaparım ama ekran boyutu değiştiğinde yani başka bilgisayarda denediğimde ekran boyutları farklı olduğundan atıyorum benim yazmış olduğum autoit program penceresi benim monitörde sağa yapışıksa, başka bilgisayarda dénediğimde ekran büyük olduğundan program penceresi sağa yapışması gerekirken ekranın biraz soluna kaymış oluyor. Dolayısıyla mouse de gidip boşluğa tıklıyor.
Yani yapmak istediğim şey autoit de yaptığım programı tutup ekranın solunada çeksem yukarıya yada aşağıyada çeksem mouse hareketi program penceresinin içinde sürekli aynı şeklini koruyarak çalışması. Yani brogram penceresinin dışına çıkmadan çalışması.

Edited by EgZOtiCs
Link to comment
Share on other sites

Kısa bir bilgi;

@EgZOtiCs bana özel mesaj atmıştı ve özelden onu yönlendirmiştim.
Neyse, bunu belitmemin amacı, başka bir arkadaşımızında bu konuda yardıma ihtiyacı olabileceği düşüncesidir.

Kısaca MouseClick komutları sorunlu komutlardır. Her zaman istediğimiz vermi vermeyebilir.
Bunun yerine ControlClick vb. gibi Control komutları daha sorunsuzdur.

Lakin Control komutları işinizi görmez ise MouseClick komutlarınıda kullanabilirsiniz.
MouseClick komutlarıyla sorun yaşamamanız için;

1 - Tıklatacağınız pencreyi aktif yapmalısınız. Yani tüm pencerelerin önüde olmalı.
2 - Opt("MouseCoordMode", 0) opsiyonunu kodlarınıza eklemelisiniz.
3 - Autoit Info gibi bir programla ilgili pencre için pozizyonlarını alıp çalışmanıza eklemelisiniz.

Hadi basit bir örnek verelim....

[codebox]Local $MouseCoordMode
Local $Form1 = GUICreate("Form1 - Test", 460, 200)
Local $Button1 = GUICtrlCreateButton("Mouse ile Buton2 ye tıklat", 20, 100,200, 50)
Local $Button2 = GUICtrlCreateButton("Test için buraya tıklatılacak", 240, 100,200, 50)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$MouseCoordMode = Opt("MouseCoordMode", 0)

WinActivate("Form1 - Test","")
MouseClick("primary", 340, 140, 1, 1)
Opt("MouseCoordMode", $MouseCoordMode)
Case $Button2
MsgBox(64,"BlueLife","Test....")
EndSwitch
WEnd[/codebox]

Örnekte gördüğünüz üzere pencreniz nerde olursa olusun birinci butona basarsak MouseClick komutuyla ikinci butona bastırabiliyoruz...
Neyse kolay gelsin arkadaşlar...

Edited by blue_life
Link to comment
Share on other sites

  • 1 ay 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...