Mehmet Posted September 15, 2011 Share Posted September 15, 2011 (edited) oyun güncellemek için klasör içine girip tek tek tıklamak yerine bu kodu yazdım ama bir türlü çalıştıramadım Run(@ProgramFilesDir & "\Metin2\metin2.exe") bu kodla çalıştırdığımda sorun yaratıyor bu yüzden lnk yada kısayol artık herne ise çalıştırmak istiyorum. Benim masaüstünde OYUNLAR klasörünün içinde Metin2 diye kısayol var bunları denedim olmadı Run('@DeskTopDir & "\OYUNLAR\Metin2.lnk"') Run(@ComSpec & " /c " & '"C:\Documents and Settings\All Users\OYUNLAR\Metin2.lnk"', "", @SW_MAXIMIZE) Edited September 15, 2011 by MeHMeTBeN Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 15, 2011 Share Posted September 15, 2011 @MeHMeTBeN Kısayolları normal çalıştırmak için, Run yerine [b]ShellExecute [/b]kullanmalısın! Quote Link to comment Share on other sites More sharing options...
radyofon Posted September 15, 2011 Share Posted September 15, 2011 Komutlardaki "\" işaretini AutoIt ile karıştırmışsınız!... Malum AMS' de Run(@ProgramFilesDir & "\Metin2\metin2.exe") yerine Run(@ProgramFilesDir & "[color="#ff0000"]\\[/color]Metin2[color="#ff0000"]\\[/color]metin2.exe") kullanmanız gerekiyor. Yani çift "\" olmalı. Quote Link to comment Share on other sites More sharing options...
galetis Posted September 15, 2011 Share Posted September 15, 2011 [quote name='radyofon' date='15 September 2011 - 12:01 ' timestamp='1316077291' post='1079811'] Komutlardaki "\" işaretini AutoIt ile karıştırmışsınız!... Malum AMS' de Run(@ProgramFilesDir & "\Metin2\metin2.exe") yerine Run(@ProgramFilesDir & "[color="#ff0000"]\\[/color]Metin2[color="#ff0000"]\\[/color]metin2.exe") kullanmanız gerekiyor. Yani çift "\" olmalı. [/quote] Zaten autoit kodu bu. Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 15, 2011 Author Share Posted September 15, 2011 @blue_life [img]http://www.tnctr.com/uploads/imgs/pre_1316110878__metin2.jpg[/img] birde bunların hangisini kullanmalıyım ;ShellExecute(@DesktopDir & "\OYUNLAR\Metin2") ;ShellExecute('@DeskTopDir & "\OYUNLAR\Metin2.lnk"') ;ShellExecute(@ComSpec & " /c " & '"C:\Documents and Settings\All Users\OYUNLAR\Metin2.lnk"', "", @SW_MAXIMIZE) Quote Link to comment Share on other sites More sharing options...
SimpsoN_Bart Posted September 15, 2011 Share Posted September 15, 2011 ShellExecute(@DesktopDir & "\OYUNLAR\Metin2.lnk") [font="Georgia"]Bu iş görür.[/font] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 15, 2011 Author Share Posted September 15, 2011 @SimpsoN_Bart hala resimde gösterdiğim hatayı alıyorum [img]http://www.tnctr.com/uploads/imgs/pre_1316110878__metin2.jpg[/img] Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 15, 2011 Share Posted September 15, 2011 @MeHMeTBeN Ilgili kısayol normalde çalışıyor mu acaba? @SimpsoN_Bart'ın verdiği komut doğru! Sistemindeki *.lnk dosya ilişkilendirmesinde bir sıkıntı olabilir! Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 15, 2011 Author Share Posted September 15, 2011 (edited) Evet çalışıyor xp kullanıyorum [img]http://mehmetben.me.funpic.org/mny.gif[/img] Edited September 16, 2011 by MeHMeTBeN Ftpye eklenen resim nedeniyle, ftp kullanıcı bilgileri isteniyor! Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 15, 2011 Share Posted September 15, 2011 @MeHMeTBeN Eklediğin resim nedeniyle sayfaya giriş yapıldığında, ftp kullanıcı bilgileri isteniyor! Bu konuda daha dikkatli olmalısın! Soruna gelirsek, sistemin nedir? Run komutu ile ilgili uygulamayı çalıştırdığında nasıl bir sorun yaşıyorsun. Sonuçta *.lnk yi yürüttüğümüzde de bağlı bulunduğu dosya çalıştırılacaktır... Eğer vista & win7 kullanıyorsan autoit script dosyanı yönetici olarak çalıştırıp denemelisin. Script dosyanın başıana #RequireAdmin satırını ekle! [b] #RequireAdmin Run(@ProgramFilesDir & "\Metin2\metin2.exe")[/b] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 16, 2011 Author Share Posted September 16, 2011 çok özür üstad http yazacağıma ftp yazmışım düzeltim Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 16, 2011 Share Posted September 16, 2011 (edited) @MeHMeTBeN Konuda verilen örneklerde bir sorun yok. Normalde çalışması gerekiyor. Zaten kısyoldan ilgili programı çalıştırmakta iyi deyil! Tavsiyem ilgili kısayolun bağlı olduğu programı direk çalıştırmaya çalış. Tabi dosya konumunun doğru olup olmadığını bu sefer mesaj kutusyla kontrol edelim. [codebox]Global $Program = @ProgramFilesDir & "\Metin2\metin2.exe" MsgBox(64,"",$Program) If FileExists($Program) = 0 Then MsgBox(16,"",$Program & " bulunamadı!") Else Run(@ProgramFilesDir & "\Metin2\metin2.exe") EndIf[/codebox] Veyahut Run yerine ShellExecute ile tekrar dene! [codebox]Global $Program = @ProgramFilesDir & "\Metin2\metin2.exe" MsgBox(64,"",$Program) ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe")[/codebox] Edited September 16, 2011 by blue_life Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 16, 2011 Author Share Posted September 16, 2011 (edited) evet abi biliyorum bir sorun yok verdiğiniz kodda. çok saolun herhangi bir programı çalıştırdığımda aynı kodla gayet normal çalışıyor oyun için bu tam tersi demek istediğim buna başka bir çözüm bulabilirmiyiz. Program Filesdeki metin2.exe'yi çalıştırdığımda duyuru diye bir pencere açılıyor kabul et butonuna tıkladığımda masa üstüne bir dünya dosya atıyor ama masa üstündeki kısayoluna tıkladığımda yada program files'e gidip manuel tıkladığımda aynı pencere gelmiyor normal çalışıyor yani. autoit ile yaparken bu pencere geliyor sanırım bu hile yapmamak için yapılan bir yama. [spoiler][img]http://www.tnctr.com/uploads/imgs/pre_1316179297__mtn2duyuru.jpg[/img][/spoiler] duyurunun içinde yazanlarda ekde verdim italyanca yazılmış Edited September 16, 2011 by MeHMeTBeN Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 16, 2011 Share Posted September 16, 2011 @MeHMeTBeN Ilgili metin2.exe programını yazan arkadaş, programına bir kontrol eklemiştir... Ne olabilir dersen, metin2.exe çalışınca hangi programın altında çalıştığına bakar. Eğer bu altında çalıştığı program explorer.exe deyilse haliyle ilgili pencereyi çıkartabilir. Yada farklı bir işlem yaptırabilir. Şöyle bir test yap Ilgili autoit kodunu derle ve oluşan exenin adını explorer.exe yap ve çalıştır bakalim işleyecek mi? Yada ilgili program küçükse upload et ve konuya ekle. Uygun vakitte senin için, çalıştırmayı bende deneyeyim... Bakalım yapabilecek miyim Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 16, 2011 Author Share Posted September 16, 2011 (edited) ilgili program derken metin2yimi kast ettin eğer öyleyse metin2 yüksek boyutta ama bununla ilgili kodlarımı diyorsan vereyim. [codebox] #RequireAdmin #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #include<IE.au3> #include <File.au3> #include <GUIConstantsEx.au3> #NoTrayIcon #include <ButtonConstants.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> _ProcessCheck() Global $BlueForum = GUICreate("metin2", 262, 552, -1, -1, -2146959360) Global $metin2 = GUICtrlCreateButton("Metin2", 95, 40, 75, 25) Global $knyt = GUICtrlCreateButton("Knight Online", 95, 75, 75, 25) Global $rakion = GUICtrlCreateButton("Rakion", 95, 111, 75, 25) Global $rappelz = GUICtrlCreateButton("Rappelz", 95, 146, 75, 25) Global $warock = GUICtrlCreateButton("War Rock", 95, 182, 75, 25) Global $wolfteam = GUICtrlCreateButton("WolfTeam", 95, 217, 75, 25) Global $allods = GUICtrlCreateButton("Allods Online", 95, 253, 75, 25) Global $combat = GUICtrlCreateButton("Combat Arms", 95, 288, 75, 25) Global $karahan = GUICtrlCreateButton("KaraHan", 95, 324, 75, 25) Global $silkroad = GUICtrlCreateButton("Silkroad", 95, 359, 75, 25) Global $metin2check = GUICtrlCreateCheckbox("Metin2", 174, 40, 73, 25) Global $knightcheck = GUICtrlCreateCheckbox("Knight Online", 176, 72, 81, 25) Global $rakioncheck = GUICtrlCreateCheckbox("Rakion", 176, 111, 73, 25) Global $rappelzcheck = GUICtrlCreateCheckbox("Rappelz", 176, 144, 73, 25) Global $warockcheck = GUICtrlCreateCheckbox("War Rock", 176, 184, 73, 25) Global $wolfteamcheck = GUICtrlCreateCheckbox("WolfTeam", 176, 216, 73, 25) Global $allodscheck = GUICtrlCreateCheckbox("Allods Online", 176, 256, 81, 25) Global $combatcheck = GUICtrlCreateCheckbox("Combat Arms", 176, 288, 81, 25) Global $karahancheck = GUICtrlCreateCheckbox("KaraHan", 176, 328, 73, 25) Global $silkroadcheck = GUICtrlCreateCheckbox("Silkroad", 176, 360, 73, 25) Global $sec = GUICtrlCreateButton("Tümünü Sec", 13, 149, 75, 33) Global $secme = GUICtrlCreateButton("Secme", 13, 195, 75, 33) Global $calistir = GUICtrlCreateButton("Calistir", 13, 241, 75, 33) Global $site = GUICtrlCreateLabel("www.tnctr.com", 70, 440, 97, 17) Global $mny = GUICtrlCreateLabel("MeHMeT", 94, 464, 53, 17) Global $KAPAT = GUICtrlCreateButton("Kapat", 95, 489, 75, 25) GUIRegisterMsg(0x0201, "_blue_life_WinMove") WinSetTrans($BlueForum, "", 170) WinSetOnTop($BlueForum, "", 1) GUISetState(@SW_SHOW) Local $Read_Value1, $Read_Value2 While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $KAPAT, -3 Exit Case $sec GUICtrlSetState($metin2check,$GUI_CHECKED) GUICtrlSetState($knightcheck,$GUI_CHECKED) GUICtrlSetState($metin2check,$GUI_CHECKED) GUICtrlSetState($knightcheck,$GUI_CHECKED) GUICtrlSetState($rakioncheck,$GUI_CHECKED) GUICtrlSetState($rappelzcheck,$GUI_CHECKED) GUICtrlSetState($warockcheck,$GUI_CHECKED) GUICtrlSetState($wolfteamcheck,$GUI_CHECKED) GUICtrlSetState($allodscheck,$GUI_CHECKED) GUICtrlSetState($combatcheck,$GUI_CHECKED) GUICtrlSetState($karahancheck,$GUI_CHECKED) GUICtrlSetState($silkroadcheck,$GUI_CHECKED) case $calistir $iMsgBoxAnswer = MsgBox(36,"Ne Yapmak Istiyorsun?","Seçili Oyunlar Güncellensinmi.?") Select Case $iMsgBoxAnswer = 6;Yes If GUICtrlRead($metin2check)=1 then ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") If GUICtrlRead($knightcheck)=1 then ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") If GUICtrlRead($rakioncheck)=1 then ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") If GUICtrlRead($rappelzcheck)=1 then ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") If GUICtrlRead($warockcheck)=1 then ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") If GUICtrlRead($wolfteamcheck)=1 then ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") If GUICtrlRead($allodscheck)=1 then ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") If GUICtrlRead($combatcheck)=1 then ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") If GUICtrlRead($karahancheck)=1 then ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") If GUICtrlRead($silkroadcheck)=1 then ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") Case $iMsgBoxAnswer = 7;No EndSelect Case $secme GUICtrlSetState($metin2check,$GUI_UNCHECKED) GUICtrlSetState($knightcheck,$GUI_UNCHECKED) GUICtrlSetState($rakioncheck,$GUI_UNCHECKED) GUICtrlSetState($rappelzcheck,$GUI_UNCHECKED) GUICtrlSetState($warockcheck,$GUI_UNCHECKED) GUICtrlSetState($wolfteamcheck,$GUI_UNCHECKED) GUICtrlSetState($allodscheck,$GUI_UNCHECKED) GUICtrlSetState($combatcheck,$GUI_UNCHECKED) GUICtrlSetState($karahancheck,$GUI_UNCHECKED) GUICtrlSetState($silkroadcheck,$GUI_UNCHECKED) Case $metin2 ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") Case $knyt ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst") Case $site $oIE = _IECreate("http://www.tnctr.com", 0, 1, 1) WinSetState ( "TNCTR - Turkish Network Community - Windows Internet Explorer", "", @SW_MAXIMIZE ) EndSwitch WEnd 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 Func _ProcessCheck() Local $Plist If @Compiled Then $Plist = ProcessList(@ScriptName) For $i = 1 To $Plist[0][0] If $Plist[$i][1] = @AutoItPID Then ContinueLoop ;Çalıştırdığımız programın pid bilgisi listen alınana uyuyorsa atlıyoruz. If FileGetLongName(_ProcessGetLocation($Plist[$i][1])) = FileGetLongName(@AutoItExe) Then ;Dosya konumları bir birine uyuyorsa, uygulamayı kapatıyoruz ProcessClose($Plist[$i][1]) EndIf Next EndIf EndFunc ;==>_ProcessCheck Func _blue_life_WinMove($hwnd) If BitAND(WinGetState($hwnd), 32) Then Return "GUI_RUNDEFMSG" DllCall("user32.dll", "long", "SendMessage", "hwnd", $hwnd, "int", 0x0112, "int", 0xF009, "int", 0) EndFunc [/codebox] Edited September 16, 2011 by MeHMeTBeN Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 17, 2011 Share Posted September 17, 2011 Arkdaşlar sorun, programın çalışma diziniyle alakalıymış. Bazı programlar çalışma dizinindeki bir takım dosyaları kullanabiliyor. Biz direk farklı konumdan çalıştırdığımız için @MeHMeTBeN hata alıyormuş. Kısaca sorunun çözümü; [b]Run(@ProgramFilesDir & "\Metin2\metin2.exe",@ProgramFilesDir & "\Metin2")[/b] Veyahut; [b]ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2")[/b] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 17, 2011 Author Share Posted September 17, 2011 @blue_life evet teşekkür ederiz metin2 için sorun çözüldü ama aynı kodu başka bir oyun için yazdığımızda ise hata veriyor Bu oyun c dizininde olduğundan [b]@HomeDrive[/b] kullanıyorum [b]Run(@HomeDrive & "\MAYN Games\KaraHan\Launcher.exe")[/b] veya [b]ShellExecute(@HomeDrive & "\MAYN Games\KaraHan\Launcher.exe","",@HomeDrive & "\MAYN Games")[/b] yada [b]Run(@HomeDrive & "\MAYN Games\KaraHan\Launcher.exe",@HomeDrive & "\MAYN Games")[/b] Masaüstünde çalıştırdığımda hata alıyorum Kendi klasöründe çalıştırdığımda sorunsuz çalışıyor masa üstünde çalışabilmesi için ne yapabilirim Quote Link to comment Share on other sites More sharing options...
blue_life Posted September 17, 2011 Share Posted September 17, 2011 Çalışma dizinini eksik yazmışsın galiba [b] Run(@HomeDrive & "\MAYN Games\KaraHan\Launcher.exe",@HomeDrive & "\MAYN Games\KaraHan") [/b] Quote Link to comment Share on other sites More sharing options...
Mehmet Posted September 17, 2011 Author Share Posted September 17, 2011 Çözüldü üstad saol dediğin gibi çalışma dizini eksik birde 10 tane oyun içerisinde 1 tanesi sadece Run komutuyla çalışıyor başına ShellExecute yazdınmı çalışmıyor yani sonuç şöyle ShellExecute(@ProgramFilesDir & "\Metin2\metin2.exe","",@ProgramFilesDir & "\Metin2") ShellExecute(@ProgramFilesDir & "\GamersFirst\Knight Online\Launcher.exe","",@ProgramFilesDir & "\GamersFirst\Knight Online") ShellExecute(@ProgramFilesDir & "\Softnyx\RakionTS\NyxLauncher.exe","",@ProgramFilesDir & "\Softnyx\RakionTS") ShellExecute(@ProgramFilesDir & "\gPotato.eu\Rappelz\Launcher.exe","",@ProgramFilesDir & "\gPotato.eu\Rappelz") ShellExecute(@ProgramFilesDir & "\GamersFirst\War Rock\WRLauncher.exe","",@ProgramFilesDir & "\GamersFirst\War Rock") ShellExecute(@ProgramFilesDir & "\SoftnyxGame\WolfTeamTS\NyxLauncher.exe","",@ProgramFilesDir & "\SoftnyxGame\WolfTeamTS") ShellExecute(@ProgramFilesDir & "\Mail.ru Games\Allods Online TR\bin\Launcher.exe","",@ProgramFilesDir & "\Mail.ru Games\Allods Online TR") ShellExecute(@HomeDrive & "\Nexon\Combat Arms EU\CombatArms.exe","",@HomeDrive & "\Nexon\Combat Arms EU") [b]Run(@HomeDrive & "\MAYN Games\KaraHan\Launcher.exe",@HomeDrive & "\MAYN Games\KaraHan")[/b] ShellExecute(@ProgramFilesDir & "\Silkroad\Silkroad.exe","",@ProgramFilesDir & "\Silkroad") Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.