สอบถาม การทำโปรแกรมทดลองใช้
กระทู้เก่าบอร์ด อ.Yeadram

 2,667   12
URL.หัวข้อ / URL
สอบถาม การทำโปรแกรมทดลองใช้

ผมอยากทำโปรแกรมสำหรับทดลองใช้งาน ซัก 1 เดือน ใครพอจะมี idea เจ๋งๆ ช่วยแนะนำบ้างครับ

12 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R18827
ซื้อขายสินค้าในร้านค้าเล็กๆ ซื้อมาขายไป ราคามีเพิ่มมีลดในหมู่บ้าน ประเภทใน 1 ร้านขาย เครื่องเขียน อุปกรณ์คอมพิวเตอร์ อุปกรณ์ไฟฟ้า เป็นต้น กะว่าจะช่วยทำให้พี่เขาใช้ช่วยเหลือกันไปครับ
2 @R18833
หมายถึงจะลองฝึกการเขียนโปรแกรมหรือเปล่า ถ้าใช่ลองเขียนตารางการแข่งฟุตบอลโลกดูครับ มันมีเงื่อนไขน่าสนใจตรงรอบแรก หากคะแนนเท่ากัน 2 ทีมคิดยังไง ถ้าเท่ากันสามทีม สี่ทีม เขียนให้ได้เหมือนที่เค้าเขียนกันใน Excel อย่างไฟล์นี้อ่ะครับ

https://www.dropbox.com/s/iqmk9qu00l9csmn/World-Cup-Brazil-2014-Wallchart.xlsx
3 @R18836
เรียน TTT

รหัสยกเลิกการป้องกันแผ่นงาน อะไรหรอครับ พอจะบอกได้ไหม ^_^

ขอบคุณครับ
4 @R18837
คือว่าเขียนโปรแกรมขายหน้าร้านให้ผู้สนใจลองนำไปใช้สัก 30 วัน ถ้าสนใจก็ขอรหัสลงทะเบียนเป็นตัวเต็มที่ใช้งานได้ตลอดไปน่ะครับ อยากทราบว่าใครเคยทำแล้วบ้างช่วยแชร์ idea ครับ ถ้าเป็นไปได้ขอตัวอย่าง Code ด้วยครับ ขอบคุณครับ
5 @R18839
โห!!! ถามเรื่องนี้งานยาวไม่มีสั้นแน่นอนหลายชั้น ผมไม่อยากตอบเหนื่อยคนเดียว ผมขอฟังแนวคิดคุณก่อนได้ไม๊ ว่าความคิดเริ่มตอนจะตรวจสอบอะไรบ้าง แล้วผมค่อยบอกแนวคิดผมเสริม ยุติธรรมดีนะครับ
6 @R18841
ผมเคยคิดทำเหมือนกัน คิดได้ แต่คิดว่า คิดได้มันก็แก้ได้ครับเลยเลิกทำ
7 @R18848
อย่าคิดอย่างนั้นครับ ทุกวันนี้แม้แต่ ios ที่ว่าเป็นระบบปิดแน่ๆก็ยังมีคน Jailbreak กันได้ตลอด ทุกโปรแกรมแหละครับไม่ว่าจะระดับไหน ถ้าคิดอย่างนั้นก็คงไม่ต้องทำอะไรกันพอดี

จริงๆเราไม่สามารถกันคนที่เป็นระดับ hacker ได้หรอกครับ แค่กันระดับผู้ใช้งานธรรมดาทั่วไปก็พอแล้ว หรือผู้ที่มีความรู้มากหน่อยแต่ไม่ถึงกับระดับเซียนก็มีเหนื่อยอ่ะครับกว่าจะแก้การกันเราได้ แค่นั้นก็พอ

จริงๆแนวคิดก็พอมีนะครับ เช่นการสร้างไฟล์ฝังไว้ในเครื่อง การเขียนใส่รีจีสตี้ของเครื่อง การเรียกข้อมูลจำเพาะของเครื่องเช่น BIOS มาตรวจสอบ และอีกเยอะ ถ้าเราทำกันหลายๆชั้น ผมบอกได้เลยว่าคน hack ก็มีเหนื่อยอ่ะ ทั้งนี้มันต้องใช้ความรู้รอบด้านมาใช้ แต่เรื่องอย่างนี้เขียนยาวครับ ถ้าให้ผู้อธิบายผมขอผ่านครับ แต่ถ้าแลกเปลี่ยนความรู้กันก็พอได้ เพราะผมก็ไม่อยากเผยแนวคิดเหมือนกัน มันเหมือนเปิดประตูบ้านให้คนมาขโมยชัดๆ 555
8 @R18852
555 เข้าใจอาจารย์ TTT เลยครับ คือ ผมคิดแล้วทำแล้ว
คือผมใช้วิธีการซ้อนโคช ไว้ในฟอร์ม บางฟอร์ม ฟอร์ม ละ 1 - 2 โคช
คำสั่งก็ อยู่ฟอร์มโน้นบ้าง ฟอร์มนี้บ้าง แล้วเมื่อเข้าเงื่อนไข ก็ไปลบ ตาราง ที่สำคัญซัก 1-2 ตาราง โปรแกรมก็ใช้ไม่ได้ครับ ประมาณนี้ หลักการคือ ให้มันยุ่งยาก ตรวจสอบยากเข้าไว้ แล้วก็ขู่ไว้ก่อนเท่านั้นครับ ^^
9 @R18875
ความคิดผมคงไม่ได้ต้องการป้องกันเซียนครับ เพราะคิดว่ายังไงก็ป้องกันไม่ได้หรอกครับ แต่ผมต้องการป้องกัน user ทั่วไปครับ ก็ดีกว่าไม่ทำอะไรเลย อยากจะ copy ก็ทำหน้าตาเฉย แนวคิดของผมคงไม่ซับซ้อนมาก คือ เมื่อใช้งานครั้งแรก ให้เขียน Text file วันที่เริ่มใช้โปรแกรม 2 file file แรก เก็บไว้ที่ๆมองเห็นทั่วไป เป็นตัวล่อให้ user ที่คิดไม่ซื่อเข้าไปแก้ไขได้ ส่วน file ที่ 2 เราเขียนซ่อนไว้อีกที่หนึ่ง เมือเรียกใช้งานโปรแกรมก้ให้
1.check 2 file ว่าข้อมูลตรงกันหรือไม่ ถ้าไม่เท่ากันก็ปิดโปรแกรม หรือลบโปรแกรมออกจากคอมเลย หรือลบบางตารางให้โปรแกรมทำงานไม่ได้ ในเมื่อคิดไม่ซื่อก็ไม่ต้องเตือนกันเลย
2.ถ้ามีข้อมูลตรงกันแล้วตรวจสอบว่าหมดอายุหรือยัง ถ้าหมดอายุก็ให้เตือนขอเลขลงทะเบียน (กรณีนี้แสดงว่าเขามีความซื่อสัตย์ ไม่แก้ไขข้อมูล) แล้วจึงปิดโปรแกรม ผมจึงขอความกรุณาผู้รู้ทั้งหลาย ช่วยเขียน code ตัวอย่างให้ดูหน่อยครับ ผมได้แต่เสนอแนวคิดแต่ไม่เก่งเรื่องcode หรือท่านใดมีคำแนะนำที่ดีกว่า ก็ขอขอบพระคุณอย่างยิ่งครับ
10 @R18897
จะว่าไปขนาดเอาแค่คราวๆ แบบกันระดับคนธรรมดายังต้องเขียนกันยาวเลยนะครับ ถ้ามีเวลาจะค่อยๆพิมพ์ให้แล้วกัน

- ผมเห็นด้วยที่ว่าเราควรเก็บค่าการบันทึกวันเวลาไว้นอกไฟล์ MS Access เพื่อกันการทำสำเนาไฟล์ ส่วนจะเก็บยังไงไว้ที่ไหนอันนี้แล้วแต่แนวคิดส่วนบุคคล พวกคำสั่งสร้าง Text ไฟล์ อ่าน Text ไฟล์ คงต้องใช้การเขียน VBScript พวก WriteLine, ReadLine

- แต่คุณก็ต้องคิดวิธีกันในส่วนของการก๊อปปี้ไฟล์ข้ามเครื่องด้วยนะครับ หากผู้ใช้งานซื้อไปแล้วใช้กับเครื่องอื่นๆ

- ส่วนเรื่องการเช็ค 30 วัน คงต้องตรวจสอบทั้งวันและเวลา กันผู้ใช้งานเซ็ทวันเวลาย้อนกลับ

ไว้ว่างผมจะยกตัวอย่างโค๊ดสร้างไฟล์ Text ให้ดูครับ หรือคุณจะหาตาม Google เรื่องการเขียน VBScirpt เขียน อ่าน Text ไฟล์ก็ได้นะครับ มีเยอะครับเป็นสคริปที่เค้าใช้กันใน Windows อยู่แล้ว
11 @R18946
วิธีสร้างเท็กซ์ไฟล์บันทึก และตรวจสอบ วัน เวลา บนไฟล์เท็กซ์ Text File

- เขียนโค๊ดลงใน Module ดังนี้:
'----------------Start Code----------------
'Option Explicit
Public Sub LogFiles(strDirectory As String, strFileName As String)
    Dim objFSO, objTextFile, objFolder
    Dim strExpired As String, strStart As String, TTT As String
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    If objFSO.FolderExists(strDirectory) Then
    Else
        Set objFolder = objFSO.CreateFolder(strDirectory)
    End If
    
    If Dir(strDirectory & "\" & strFileName) = "" Then
        Set objTextFile = objFSO.OpenTextFile(strDirectory & "\" & strFileName, 2, True)
        objTextFile.WriteLine "Start Time: " & Now()
        objTextFile.WriteLine "Expire Time: " & DateAdd("d", 30, Now())
        objTextFile.Close
    Else
        Set objTextFile = objFSO.OpenTextFile(strDirectory & "\" & strFileName, 1)
        While Not objTextFile.AtEndOfStream
            TTT = objTextFile.ReadLine
            If TTT Like "Start Time:*" Then
               strStart = Replace(TTT, "Start Time: ", "")
            ElseIf TTT Like "Expire Time:*" Then
               strExpired = Replace(TTT, "Expire Time: ", "")
            End If
        Wend
        If CDate(strStart) < Now() And CDate(strExpired) >= Now() Then
            MsgBox "(ตรวจสอบแล้วยังใช้งานได้) "
            objTextFile.Close
            Set objTextFile = objFSO.OpenTextFile(strDirectory & "\" & strFileName, 2, True)
            objTextFile.WriteLine "Start Time: " & Now()
            objTextFile.WriteLine "Expire Time: " & strExpired
            objTextFile.Close
        Else
            MsgBox "(หมดอายุแล้ว)"
            objTextFile.Close
            Docmd.Quit ' จะเอายังไงต่อก็เขียน
            'Exit Sub
        End If
    End If
    
    Set objTextFile = objFSO.OpenTextFile(strDirectory & "\" & strFileName, 1)
    While Not objTextFile.AtEndOfStream
        TTT = objTextFile.ReadLine
        If TTT Like "Start Time:*" Then
            strStart = Replace(TTT, "Start Time: ", "")
        End If
    Wend
    objTextFile.Close
    Dim iLastday As String
    If strExpired & "" = "" Then strExpired = DateAdd("d", 30, Now())
    iLastday = DateDiff("d", strStart, strExpired)
    If iLastday = 0 Then
        MsgBox "โปรแกรมนี้ใช้ได้ (วันสุดท้าย)"
    Else
        MsgBox "โปรแกรมนี้ใช้ได้อีก " & iLastday & " วัน"
    End If
End Sub
'-----------------End Code-----------------

- สมมุติต้องการสร้าง Text ไฟล์ที่พาธ C:\Temp ชื่อ Log.txt
- เรืยกคำสั่งบนฟอร์มที่ Event > On Open:
'----------------Start Code----------------
    Call LogFiles("C:\Temp", "Log.txt")
'-----------------End Code-----------------

ลักษณะนี้จะเป็นการตรวจสอบแล้วบันทึก
*หากใช้งานนับแต่วันเริ่มเปิดไฟล์เกิน 30 วัน โปรแกรมก็จะตัด
*หากผู้ใช้ทำการแก้ไขเวลาย้อนกลับ โปรแกรมก็จะตัดการใช้งานไปเลย

ปล. นี่เป็นแนวหลักๆแบบหยาบๆเท่านั้นนะครับ เพราะจริงๆแล้วคุณอาจต้องใช้การ Encode Decode มาใช้ด้วย โดยปกติแล้วแม้ว่าเราจะทำการ Compile ไฟล์ MS Access เป็น Accde หรือ mde ก็ตาม เราอย่านึกว่าคนอื่นจะไม่สามารถดูโค๊ด VBA ที่เราเขียนได้นะครับ เอาแบบพื้นฐานเลย นักแฮกเกอร์หรือคนที่เก่งเรื่องคอมหน่อยทุกคนจะใช้โปรแกรมจำพวก Debug ดู HEX ของไฟล์ต่างได้ การดู HEX ของตัวไฟล์ MS Access ที่เราเขียน บางส่วนเค้าก็จะสามารถเห็นข้อความประเภท String ที่เราเขียนได้ ในตัวอย่างที่ผมให้ไป เราจึงไม่ควรเขียนพาธแบบว่า C:\Temp\Log.txt อย่างนี้โดยตรง เพราะคนที่ใช้ Debug เป็นก็อาจสามารถเห็นและเดาได้ไม่ยากเลยว่าเราสร้างไฟล์ไว้ที่ไหน
ดังนั้นเราจึงไม่ควรเขียนข้อความอะไรที่สำคัญเช่น รหัสผ่าน, พาธไฟล์ที่ซ้อน กันแบบตรงๆ ไม่ว่าจะเป็นในตารางเอง หรือไฟล์เท็กซ์ หรือในส่วนของ VBE หน้าต่างเขียนโค๊ด เพราะจะดูได้ไม่ยาก เราจึงต้องสร้างฟังก์ชั่น Encode และ Decode ไว้ใช้ในตัวโปรแกรมเองด้วย เช่นแทนที่จะเขียนคำสั่งใน VBE ว่า
Call LogFiles("C:\Temp", "Log.txt")
ต้องเขียนเป็น
Call LogFiles(Decode("QzpcVGVtcA=="), Decode("TG9nLnR4dA=="))
โดยเราทำการเข้ารหัสคำว่า C:\Temp และ Log.txt มาจากที่อืนก่อน
เช่นเดียวกันกับการบันทึก วันเวลา ลงเท็กไฟล์ แทนที่เราจะบันทึกเป็น
18/6/2557 23:44:00
ก็ให้เข้ารหัสเป็น
Encode(18/6/2557 23:44:00)
ผลลัพธ์: U3RhcnQgVGltZTogMjEvNi8yNTU3IDIyOjM2OjQ1
แล้วไฟล์เท็กเองก็ไม่จำเป็นต้องตั้งชื่อหรือนามสกุลว่าเป็น txt ก็ได้

นี่คือคราวๆที่รู้ๆกันอยู่แล้วนะครับ ผมคงบอกได้ประมาณนี้ มันเป็นอีกศาสตร์นึงที่ต้องค่อยๆศึกษากันไปอ่ะครับ แล้วแต่ความเชียวชาญและประสบการณ์
12 @R18956
สุดยอดเลยครับ ตั้งหน้าตั้งตารออยู่หลายวัน ดูจาก code แล้วด้วยปัญญาอันน้อยนิดของเราคงไม่มีวันเขียนเองได้ ขอบคุณมากๆครับ จะนำมาประยุกต์ใช้ให้เกิดประโยชน์ต่อไป ^_^
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3034s