สัญญาอนุญาตของครีเอทีฟคอมมอนส์

http://i.creativecommons.org/l/by-nc-nd/3.0/th/88x31.png
ผลงานนี้ ใช้ สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-ไม่ดัดแปลง 3.0 ประเทศไทย.
อนุญาติให้นำไปโพสต์ที่อื่นได้ แต่ต้อง แสดงเครดิทของเว็บไชต์นี้ด้วยนะครับ. | ถูกใจบทความไหนกด Plus ให้ด้วยนะครับ

วันศุกร์ที่ 28 มิถุนายน พ.ศ. 2556

Visual Basic [.NET] กำหนด Header ใน Webbrowser Control

Webbrowser Control ใน Vb.net นั้น เราสามารถกำหนด Header ที่จะทำการ Request ไปยัง หน้าเว็บเพจ
โดยกำหนด Referer  // User Agent และ อื่นๆ ที่สามารถ Request ได้โดยผ่าน Method  Navigate


โดยผมทดสอบ ดัก HTTP Request มา

GET /?hl=th HTTP/1.1
Host: www.youtube.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Referer: https://www.google.co.th/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: th-TH,th;q=0.8





Dim Header as string = "Referer: https://www.google.co.th/" & vbCrLf & "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36" & vbCrLf 

ในโค้ด กำหนด ตัวแปร เป็น String ใส่ ค่า Referer กับ User Agent ที่จะส่งไป Request ไว้


การใช้งาน

WebBrowser1.Navigate(URL, "_self", Nothing, Header)


เรียกใช้ Webbrowser Navigate โดยการกำหนด Header ไว้ ใน Function Agument






วันพุธที่ 6 มิถุนายน พ.ศ. 2555

Visual Basic 2008 Extract Resource

Visual Basic 2008 Extract Resource = แตกไฟล์ออกมาจาก Resource

นำไฟล์ที่เราจะเก็บและแตก ออกมาไปไว้ใน Resource ของโปรแกรม

แล้วใช้โค้ด ของโปรแกรมแตกไฟล์ออกมา


 ติดตามได้ใน VDO ครับ

วันอาทิตย์ที่ 27 พฤษภาคม พ.ศ. 2555

[Visual Basic 6 ] Get Process Path From Process Id

Get Process Path From Process Id  =  ค้นหาที่อยู่โปรแกรมโดยเช็คจาก Process Id

หลักการทำงานของโปรแกรม คือการค้นหา Window Title ของโปรแกรม โดยใช้ API

FindWindow(Class,Title)  หลังจากได้ค่า Handle จากการ FindWindow มาแล้วก็ใช้ API

GetWindowThreadProcessId( hWnd, lpdwProcessId)

มาทำการเปลี่ยน Window Handle ที่ค้นเจอ ให้เป็น Process Id   Function GetWindowThreadProcessId

จะ Return ค่ามาเป็น DWORD หรือ ใน VB6 คือค่า Long


และหลังจากได้ค่า Process Id มาแล้วก็จะใช้ API GetModuleFileNameEx  มาทำการค้นหาที่อยู่ของ
โปรแกรมที่ทำงาน

โค้ดตัวอย่าง

module1.bas


Public Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Public Const PROCESS_VM_READ As Long = (&H10)
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject 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 EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef lpcbNeeded As Long) As Long
Public Declare Function GetModuleFileNameEx Lib "psapi.dll" Alias "GetModuleFileNameExA" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

Public Function PrintProc(ProcessID As Long) As String
Dim hProc As Long, hMod As Long, cbNeeded As Long
Dim strBuff As String, lRet As Long
strBuff = Space(260)
hProc = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessID)
If hProc <> 0 Then
  If EnumProcessModules(hProc, hMod, 4&, cbNeeded) Then
    lRet = GetModuleFileNameEx(hProc, hMod, strBuff, 260)
    strBuff = Left$(strBuff, lRet)
    PrintProc = strBuff
  End If
  CloseHandle hProc
End If
End Function


form1.frm

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long

Function WindowToProcessId(ByVal hWnd As Long) As Long'Function เปลียน Window Handle เป็น PID

    Dim lpProc As Long
    Call GetWindowThreadProcessId(hWnd, lpProc)
    WindowToProcessId = lpProc
End Function

Private Sub Timer1_Timer()
Dim hw As Long
hw = FindWindow(vbNullString, "ชื่อหน้าต่าง") 'Windows Title
If hw <> 0 Then
Text1.Text = WindowToProcessId(hw)
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub

Private Sub Timer2_Timer()
Timer2.Enabled = False
Text2.Text = PrintProc(Text1.Text)
End Sub

หน้าตาของ Form



เขียนโดย  Oneintel



วันพุธที่ 12 ตุลาคม พ.ศ. 2554

[Src] เขียนโปรแกรม Login เกมส์ ใน Visual basic 2008

สวัสดีทุกท่านที่เข้ามาอ่านบทความนี้ หลังจากที่ผมห่างหายจากการ โพสต์บทความบนบล๊อกไปนาน
เนื่องจากหลายปัจจัยครับ ไม่ใช่น้ำท่วม ช่วงเดือน ต.ค  นะครับ เพียงเพราะว่าผมไม่มีเวลามานั่งหน้าคอมนั้นเอง เนื่องจาก
งานการที่่ทำงานมอบหมายให้ผมเยอะเหลือเกิน จนไม่มีเวลาดูแลตนเอง และเข้ามาอัพเดทบทความให้ทุกท่านได้อ่านกัน

วันนี้ผมจะมา นำเสนอ การเขียนโปรแกรม Login เข้าเกมส์ โดย ใช้ webbrowser Control ใน Vb 2008
ซึ่งครั้งนั้นผมเคยได้เสนอบทความ การเขียนโปรแกรม login เข้าเกมส์ Ava ซึ่งเป็นเกมส์ ที่เพิ่งเข้ามาในประเทศไทย ไมใช่เพิ่งเข้ามาครับ แต่เป็นเกมส์ที่เพิ่งนำเข้ามาทำ  Server ในประเทศไทย

ซึ่งระบบ Login นี้ หรือ Source Code นี้สามารถนำไปประยุค ทำโปรแกรม Login ได้ในหลายเกมส์ ของ บริษัท A$ ซึ่งทำระบบ Login ของทุกเกมส์ ในแนวนี้เหมือนกันหมด เพียงแค่เปลี่ยน input ที่รับข้อความ ของแต่ละเกมส์ เช่น เกมส์ Au ,FS หรือ เกมส์อื่นๆ ครับ


ในที่นี้ผมกำหนด Form ชื่อ Login ครับ


โค้ดประมา๊ณนี้ครับ



Public Class Login
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("https://secure4.playpark.com/play/au/login.aspx") 'ผมแก้เป็น AU นะ
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Then
            MsgBox("กรุณาระบุ Username ก่อนทำการ Login.", MsgBoxStyle.Exclamation, "Error!")
            Exit Sub
        ElseIf TextBox2.Text = "" Then
            MsgBox("กรุณาระบุ Password ก่อนทำการ Login.", MsgBoxStyle.Exclamation, "Error!")
            Exit Sub
        End If
        WebBrowser1.Document.GetElementById("ctl00_content_txtUsername").SetAttribute("value", TextBox1.Text)'ต้องแก้ตรงนี้ให้เป็น input ที่รับ user ของแต่ละเกมส์ ของ A$  เช่น (ctl00_content_txtUsername)
        WebBrowser1.Document.GetElementById("ctl00_content_txtUserPwd").SetAttribute("value", TextBox2.Text)'ต้องแก้ตรงนี้ให้เป็น input ที่รับ password ของแต่ละเกมส์ของA$(ctl00_content_txtUserPwd)

        Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
        For Each webpageelement As HtmlElement In allelements
            If webpageelement.GetAttribute("id") = "ctl00_content_btnLogin" Then'ต้องแก้เป็นจุดรับการกดของแต่ละเกมส์ 
                webpageelement.InvokeMember("click")
            End If
        Next
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


        If TextBox3.Text = "https://secure4.playpark.com/play/au/start_game.aspx" Then
            Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
            For Each webpageelement As HtmlElement In allelements

                If webpageelement.GetAttribute("id") = "btn_start_client" Then
                    webpageelement.InvokeMember("click")

                End If
            Next
            TextBox3.Text = ""
            Timer2.Enabled = True
        End If
    End Sub
    Private Sub WebBrowser1_Navigated(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated

        TextBox3.Text = WebBrowser1.Url.ToString
    End Sub


    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Try
            Dim ProcessFileName As String = "patcher"'ชื่อ process หากมีการพบ
            Dim p As Process = Process.GetProcessesByName(ProcessFileName)(0)
            Me.Close()
        Catch
        End Try
    End Sub
    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        System.Diagnostics.Process.Start("http://oneintel.blogspot.com/")
    End Sub
End Class


 ถ้าหากสงสัยการเขียนตรงส่วนไหน สามารถ ติชมได้ผ่านทางกาีร Comment ครับ




หาก นำไป สอนเขียนหรือแจก โค้ด  กรุณาช่วยให้เครดิทเจ้าของ Blog หน่อยนะครับ 


โดยการแนะนำให้เข้าชม Blog  นี้ ครับ

วันพุธที่ 21 กันยายน พ.ศ. 2554

Vb6 ปิดการคลิ๊กขวา และ Scroll ใน Webbrowser Control

เป็นการใช้ Function ใน Cafe.ocx เพื่อปิด ไม่ให้คลิ๊กขวาได้ใน Webbrowser Control

Function ที่จะนำมาใช้งาน คือ Hookwebbrowser และ UnHookwebbrowser


ตัวอย่างการใช้งานตามโค้ดด้านล่างนี้

Private Sub Form_Load()
LibCafe1.Hookwebbrowser
WebBrowser1.Navigate "http://oneintel.blogspot.com"
End Sub

Private Sub Form_Unload(Cancel As Integer)
LibCafe1.UnHookwebbrowser
End Sub


หากทำไม่ให้คลิ๊กขวา แล้ว ไม่อยากให้ โชว์  Scroll ิ ตาม แนวขอบของ Control

ให้เพิ่มโค็ดนี้ลงไปตรง DocumentComplete(ByVal pDisp As Object, URL As Variant)

โดยการคลิ๊กที่ ตัว Control ของเรา แล้วเลือกตรงช่อง  Procedure


ตัวอย่างเช่น


Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
WebBrowser1.Document.body.Scroll = "no" 'ชื่อ Control ตามด้วย Document.body.Scroll = "no"
End Sub


ดูรูปภาพ ตัวอย่าง การใช้งาน โค้ดนี้ กับการไม่ใช้งาน ครับ

ก่อนการใส่โค้ดนี้

หลังการใส่โค้ดนี้