Private Sub Command1_Click()
Shell Text1.Text, vbNormalFocus
End
End Sub

Arkadaşalar Oyuna Başla Button Tıklıyorum Bu Satir Hata Veriyor Nerede Hata Yaptım Bakabılırmısınız?

Shell Text1.Text, vbNormalFocus
Başlat ile text'in ne alakası var ? Ayrıca dim kullan ve başlat için client yeri tanıtmak için aşağıdaki kodu kullanabilirsin.
Private Sub Command1_Click()
On Local Error GoTo hata
Dim K
K = Shell("C:\Program Files\EA Games\Ultima Online Mondain's Legacy\client.exe", 1)
Exit Sub
hata:
MsgBox ("Client Dosyası Bulunamadı")
end
End Sub


Bu konu Tymaron tarafından düzenlendi(2009-09-18 16:02, 14 yıl önce)
Video Da Böyle Gösteriyor bende aynı yaptım ama olmadı bu satir hata veriyor ?
Üstte verdiğim kodu kullanabilirsin ancak sadece yukarıda tanıtılmış clientin yerini tanımlar onun haricinde client tanımaz. Ayrıca VB Ultima Connector'ları için doğru bir seçim değil en kötü ihtimal Delphi ve en iyi ihtimal olarak C kodlamalarını kullanmak en iyisi.
@Tymaron

Çok Teşekkür Ederim Oldu Fakat Çıkış Dedigimde Connector Kapaniyor Client Kapanmiyor ?
Çünkü bu sadece bağlantı dosyasını tanımlıyor çıkış buttonunada kod eklemen gerek. Dökümanları biraz karıştırırsan gerekli dökümanları bulabilirsin.
Private Sub Command4_Click()
End
End Sub

Çıkış Kodum Bu Clienti Kapatmayı nasıl saglarım ?
Aşağıdaki kodu modül olarak ekle

Option Explicit

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


Public Declare Function Process32First Lib "kernel32" _
                        (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function Process32Next Lib "kernel32" _
                        (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function OpenProcess Lib "Kernel32.dll" _
                        (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _
                         ByVal dwProcId As Long) As Long

Public Declare Function EnumProcesses Lib "psapi.dll" _
                        (ByRef lpidProcess As Long, ByVal cb As Long, _
                         ByRef cbNeeded As Long) As Long

Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _
                        (ByVal hProcess As Long, ByVal hModule As Long, _
                         ByVal ModuleName As String, ByVal nSize As Long) As Long

Public Declare Function EnumProcessModules Lib "psapi.dll" _
                        (ByVal hProcess As Long, ByRef lphModule As Long, _
                         ByVal cb As Long, ByRef cbNeeded As Long) As Long

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
                        (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Public Declare Function GetVersionExA Lib "kernel32" _
                        (lpVersionInformation As OSVERSIONINFO) As Integer

Public Declare Function TerminateProcess Lib "kernel32" _
                        (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Public Declare Function GetExitCodeProcess Lib "kernel32" _
                        (ByVal hProcess As Long, lpExitCode As Long) As Long

Public Type PROCESSENTRY32
   pe32Size As Long
   pe32Usage As Long
   pe32ProcessID As Long
   pe32DefaultHeapID As Long
   pe32ModuleID As Long
   pe32Threads As Long
   pe32ParentProcessID As Long
   pe32PriClassBase As Long
   pe32Flags As Long
   pe32ExeFile As String * 260
End Type


Public Type OSVERSIONINFO
   oviOSVersionInfoSize As Long
   oviMajorVersion As Long
   oviMinorVersion As Long
   oviBuildNumber As Long
   oviPlatformId As Long
                                
   oviCSDVersion As String * 128
End Type


Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const MAX_PATH = 260
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
'STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const TH32CS_SNAPPROCESS = &H2&
Public Const lngNull = 0

Public Const PROCESS_TERMINATE = &H1&

Public Function KillProgramme(strProgrammeName As String) As Boolean

Select Case GetVersion()

    Case 1 'Windows 95/98
    
        Dim lngReturn As Long
        Dim strName As String
        Dim lngSnap As Long
        Dim pe32Process As PROCESSENTRY32
        
   
        lngSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
        

        If lngSnap = lngNull Then Exit Function
        

        pe32Process.pe32Size = Len(pe32Process)

        lngReturn = Process32First(lngSnap, pe32Process)

        Do While lngReturn

            strName = ClearString(pe32Process.pe32ExeFile)
            strName = Trim(Replace(strName, Chr(0), ""))
            'Is it our file
            'If yes
            If Right(strName, Len(strProgrammeName)) = strProgrammeName Then
                'Kill it
                If KillProcess(pe32Process.pe32ProcessID) Then KillProgramme = True
                'Exit
                Exit Function
            End If
         
            lngReturn = Process32Next(lngSnap, pe32Process)
        Loop

    Case 2 'Windows NT

        Dim lngCB As Long
        Dim lngCBNeeded As Long
        Dim lngNumElements As Long
        Dim arrProcessIDs() As Long
        Dim lngCBNeeded2 As Long
        Dim arrModules(1 To 200) As Long
        Dim lngReturn2 As Long
        Dim strModuleName As String
        Dim lngSize As Long
        Dim lngProcess As Long
        Dim lngCounter As Long
    
        lngCB = 8
        lngCBNeeded = 96
        Do While lngCB <= lngCBNeeded
            lngCB = lngCB * 2
            ReDim arrProcessIDs(lngCB / 4) As Long
            lngReturn2 = EnumProcesses(arrProcessIDs(1), lngCB, lngCBNeeded)
        Loop
        lngNumElements = lngCBNeeded / 4
    

        For lngCounter = 1 To lngNumElements
       
            lngProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, arrProcessIDs(lngCounter))

            If lngProcess <> 0 Then
                lngReturn2 = EnumProcessModules(lngProcess, arrModules(1), 200, lngCBNeeded2)
                If lngReturn2 <> 0 Then
                    strModuleName = Space(MAX_PATH)
                    lngSize = 500
                    lngReturn2 = GetModuleFileNameExA(lngProcess, arrModules(1), strModuleName, lngSize)
                    strModuleName = Trim(Replace(strModuleName, Chr(0), ""))
                    If Right(strModuleName, Len(strProgrammeName)) = strProgrammeName Then
        
                        If KillProcess(arrProcessIDs(lngCounter)) Then KillProgramme = True
                
                        Exit Function
                    End If
                End If
            End If
      
            lngReturn2 = CloseHandle(lngProcess)
        'Return
        Next
    
    End Select

End Function

Public Function KillProcess(lProcessID As Long) As Boolean

Dim lngHandle As Long
Dim lngReturn As Long
Dim lngExitCode As Long


lngHandle = OpenProcess(PROCESS_TERMINATE, 0, lProcessID)

lngReturn = GetExitCodeProcess(lngHandle, lngExitCode)

lngReturn = TerminateProcess(lngHandle, lngExitCode)

lngReturn = CloseHandle(lngHandle)

If lngReturn <> 0 Then KillProcess = True

End Function

Public Function ProgrammeIsRunning(strProgrammeName) As Long


Select Case GetVersion()

    Case 1 'Windows 95/98
    
        Dim lngReturn As Long
        Dim strName As String
        Dim lngSnap As Long
        Dim pe32Process As PROCESSENTRY32
        
        lngSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
        
        If lngSnap = lngNull Then Exit Function
        
        pe32Process.pe32Size = Len(pe32Process)

        lngReturn = Process32First(lngSnap, pe32Process)
        Do While lngReturn
            strName = ClearString(pe32Process.pe32ExeFile)
            strName = Trim(Replace(strName, Chr(0), ""))
            If Right(strName, Len(strProgrammeName)) = strProgrammeName Then
                'Found
                ProgrammeIsRunning = pe32Process.pe32ProcessID
                'Exit
                Exit Function
            End If
            lngReturn = Process32Next(lngSnap, pe32Process)
        Loop

    Case 2 'Windows NT

        Dim lngCB As Long
        Dim lngCBNeeded As Long
        Dim lngNumElements As Long
        Dim arrProcessIDs() As Long
        Dim lngCBNeeded2 As Long
        Dim lngNumElements2 As Long
        Dim arrModules(1 To 200) As Long
        Dim lngReturn2 As Long
        Dim strModuleName As String
        Dim lngSize As Long
        Dim lngProcess As Long
        Dim hProcess As Long
    
   
        lngCB = 8
        lngCBNeeded = 96
        Do While lngCB <= lngCBNeeded
            lngCB = lngCB * 2
            ReDim arrProcessIDs(lngCB / 4) As Long
            lngReturn2 = EnumProcesses(arrProcessIDs(1), lngCB, lngCBNeeded)
        Loop
        lngNumElements = lngCBNeeded / 4
    
        For hProcess = 1 To lngNumElements

            lngProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, arrProcessIDs(hProcess))
            If lngProcess <> 0 Then
                lngReturn2 = EnumProcessModules(lngProcess, arrModules(1), 200, lngCBNeeded2)
                If lngReturn2 <> 0 Then
                    strModuleName = Space(MAX_PATH)
                    lngSize = 500
                    lngReturn2 = GetModuleFileNameExA(lngProcess, arrModules(1), strModuleName, lngSize)
                    strModuleName = Trim(Replace(strModuleName, Chr(0), ""))
                    If Right(strModuleName, Len(strProgrammeName)) = strProgrammeName Then
                        'Found
                        ProgrammeIsRunning = arrProcessIDs(hProcess)
                        'Exit
                        Exit Function
                    End If
                End If
            End If

            lngReturn2 = CloseHandle(lngProcess)
        Next
    
    End Select

End Function

Function ClearString(strString As String) As String

    
    ClearString = Left$(strString, Len(strString) - 1)

End Function

Public Function GetVersion() As Long

    
    Dim oviOSInfo As OSVERSIONINFO
    Dim lngReturn As Integer
    
    oviOSInfo.oviOSVersionInfoSize = 148
    oviOSInfo.oviCSDVersion = Space$(128)
    lngReturn = GetVersionExA(oviOSInfo)
    GetVersion = oviOSInfo.oviPlatformId

End Function

Aşağıda ki koduda çıkış buttonu olarak ekle
On Error Resume Next
If ProgrammeIsRunning("clientismi.exe") Then
KillProgramme ("clientismi.exe")
Kill "clientismi.exe"
End If
Unload Me
End
End Sub

Dediğim gibi Ultima Online > Client & Connector dökümanlarını karıştır biraz.

Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.