[C#] กำหนดให้โปรแกรมของเรา Run As Administrator

C# Logo

ในบางครั้งเราต้องเขียนโปรแกรมเพื่อจัดการข้อมูลที่สำคัญ และต้องมีสิทธิในการแก้ไข เช่น Registry หรือ ไฟล์ของระบบของ Windows เป็นต้น ซึ่งสิทธิที่ใช้ในการจัดการนี้ คือ Administrator นั้นเอง ปกติแล้วเราจะคลิกขวาแล้วให้โปรแกรม Run As Administrator คราวๆนี้ ถ้าเราพัฒนาโปรแกรมขึ้นมา แล้วให้รันเป็น Administrator โดยมีวิธีการ ดังนี้

[MSSQL] SQL กับการบวก/ลบวันที่

วันนี้ผมได้งานจากที่่ทำงานมาให้เขียน Query เพื่อแจ้งเตือนสินค้าที่หมดอายุล่วงหน้าตามวันที่กำหนดไว้ ระหว่างวันที่กำหนดจนถึงจำนวนวันที่แจ้งเตือนล่วงหน้า โดยเอาผลัลพธ์ที่ได้มาจัดโปรโมชั่นลดแลกแจกแถมกัน (สมมติว่าเป็น 7 วัน) โดยผมค่อยๆแนะนำไปทีละขั้นตอน ดังนี้ เตรียมข้อมูล กำหนดโครงสร้างตาราง ดังรูป ใส่ช้อมูลเตรียมลงไป ดังรูป

[SQL Server] SELECT เมื่อพบข้อมูลวันที่เป็น 1990-01-01 ให้แสดงเป็น String ว่าง

ปัญหาที่ได้เจอวันนี้ คือ SELECT ข้อมูลวันที่ ที่บาง Record เก็บข้อมูลไม่ได้มีการเก็บข้อมูลวันที่ แต่ผลลัพธ์ที่ได้กลับเป็น 01-Jan-1990 (SQL Server ใจดีใส่ให้) ถ้าหาก User มาเห็นคงตกใจ คิดว่าระบบงานของเราเกิด Defect ชิ้นใหญ่แน่นอน เตรียมข้อมูล กำหนดโครงสร้างตาราง ดังรูป ใส่ข้อมูลคร่าวๆลงไป ดังรูป ความต้องการ แสดงข้อมูลยอด BUY/SELL โดยต้องแสดง TX_ID, PRODUCT_NAME, TX_UNIT, TX_TYPE, TX_TradeDate และ TX_IsConfirm ต้องการให้แถวที่มีข้อมูล Date ข้อมูลวันที่เป็น 1990-01-01 ระบบต้องไม่แสดงผลเป็น 1990-01-01 แต่แสดงผลเป็น String ว่างแทน ภาพด้านล่างแสดงตัวอย่างปัญหาที่ SELECT ข้อมูลมาแล้ว เกิดมา 1990-01-01 ติดมา

[BookFair56] เดินงาน ลุยผู้คน

งานสัปดาห์หนังสือปึ สอง ห้า ห้า หก รถแข่งเลโก้ อยากได้มาก ฮ่าๆ ลองถ่ายสวยงาม หนังสือมิติชน หนุ่มเมืองจันทร์ น้องหมาตรวจตราแข็งขัน ท้องฟ้าวันนั้นสวยงามมาก อีกมุมหนึ่งของงานหนังสือ หนังสือที่ได้คิดว่าราคา 2,700 – 2,800 บาท หรือป่าว ผิดแล้ว ทั้งหมดนี้ซื้อมาด้วยราคา 1,226.50 บาท ^__^

[C#] Windows OEM Information Editor (WorkShop)

C# Logo

จากบทความทั้งสามบทความ หลายคนคงงง และไม่รู้จะเริ่มต้นอย่างไร วันนี้ผมมีตัวอย่างโปรแกรมมาทำเป็น Workshop กันครับ เป็นโปรแกรมที่ใช้เพิ่ม หรือแก้ไขข้อมูล OEM ของ Windows นะครับ OEM คือ อะไร OEM ย่อมาจาก Origianl Equipment Manufacturer คือ การรับจ้างผลิตสินค้าให้กับแบรนด์ต่าง ๆ ตามแบบที่ลูกค้ากำหนด โดยใช้การผลิตของเรารวมถึงเครื่องจักรที่ใช้ในการผลิตด้วย มักจะเป็นโรงงานเปิดใหม่ ๆ หรือโรงงานที่ไม่เน้นการสร้างแบรนด์ของตนเอง และโรงงานที่ไม่มีความชำนาญในการออกแบบผลิตภัณฑ์ Windows OEM คือ อะไร Windows OEM คือ สิทธิการใช้งาน Windows ที่จำหน่ายให้กับผู้ผลิตและผู้ประกอบคอมพิวเตอร์ สำหรับการติดตั้งไปพร้อมกับการจำหน่ายเครื่องคอมพิวเตอร์ โดยมีข้อมูลผู้ผลิต, โมเดล เป็นต้น ซึ่งสามรถดูได้จาก คลิกขวา My Computer เลือก property ดังรูป ปกติแล้วข้อมูล OEM เก็บอยู่ที่ไหน สำหรับ Windows 32 Bit ข้อมูล OEM เก็บอยู่ที่ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation สำหรับ Windows 64 Bit ข้อมูล OEM เก็บอยู่ที่ HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\OEMInformation ข้อมูล OEMInformation

[C#] อ่าน/เขียน Registry ตอนที่ 3 (จัดการ Registry Value)

C# Logo

จากบทความที่สอง เราได้เห็นตัวอย่างการจัดการ Keys และ Subkeys กันแล้ว ต่อไปบทความนี้สอนการใช้งานจริง โดยผมได้เพิ่มคำสั่งที่จำเป็นเพิ่มเติม เพื่อการทำงานที่มีประสิทธิภาพมากยิ่งขึ้น โดยผมได้แยกกรณีที่จำเป็นต้องใช้ ดังนี้ กรณีที่ 1 : อ่าน Value จาก Registry โดยมีขั้นตอนการทำงาน เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ อ่านค่า Value แต่ละอันออกมา ปิดการเชื่อมต่อ กรณีที่ 2 : เขียน Value และสร้าง Value โดยมีขั้นตอนการทำงาน เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ โดยต้องมีการอนุญาติให้เขียนข้อมูลด้วย เขียนค่า Value แต่ละอันออกมา โดยมีแต่ละแบบให้ศึกษา ดังนี้ แบบที่ 1: มี Registry Value ระบบอัปเดตค่าใหม่ลงไป ได้แก่ MANUFACTURER และ MODEL แบบที่ 2: ไม่มี Registry Value ระบบ จะสร้าง Registry Value ขึ้นมาใหม่ และเก็บค่าลงไป ได้แก่ APPNAME และ APPDEV ปิดการเชื่อมต่อ กรณีที่ 3 : ลบ Value โดยมีขั้นตอนการทำงาน เปิดการเชือมต่อกับ Hives และ Subkey ต่างๆ โดยต้องมีการอนุญาติให้เขียนข้อมูลด้วย ทำการลบ Value นั้น แบบที่ 1: ลบแบบปกติ แบบที่ 2: ลบ และกำหนดให้ระบบไม่แจ้ง Exception กรณีที่ไม่เจอ Registry Value นั้น…

[C#] อ่าน/เขียน Registry ตอนที่ 2 (จัดการ Keys และ SubKeys)

C# Logo

จากบทความแรก ผมได้พาผู้อ่านได้รู้จักกับ Registry และคำสั่งพื้นฐานกันมาบ้างแล้ว คราวนี้ผมสอนทำตัวอย่างที่ใช้จัดการ Keys และ Subkeys กันนะครับ(ใช้คำสั่งชุดเดียวกัน) โดยแยกเป็นกรณีต่างๆ ดังนี้ กรณีที่ 1: สร้าง SubKeys หรือ Keys ใช้คำสั่ง CreateSubKey ตามตัวอย่าง Code ดังนี้ กรณีที่ 2: เปิดและเชื่อมต่อ SubKeys หรือ Keys  ใช้คำสั่ง OpenSubKey ถ้าหากไม่มี SubKeys หรือ Keys นั้นอยู่จริง คำสั่งนี้ Return ค่า null ตาม Code ดังนี้ กรณีที่ 3: ลบ SubKeys หรือ Keys ใช้คำสั่ง DeleteSubKey ซึ่งสามารถเขียนได้ 2 แบบ ได้ตาม Code ด้านล่าง หมายเหตุ ถ้าหากต้องการลบ SubKeys และ Keys ย่อยๆ ให้ใช้คำสั่ง DeleteSubKeyTree แทน

[C#] อ่าน/เขียน Registry ตอนที่ 1 (แนะนำ+คำสั่งพื้นฐาน)

C# Logo

หลายครั้งที่โปรแกรมของเราต้องการเขียนข้อมูลลงในส่วนที่ลับที่สุด อาทิ เช่น เก็บข้อมูลการลงโปรแกรมครั้งแรก เพื่อข้อมูลวันที่ผู้ใช้ลงงานลงโปรแกรมครั้งแรก และเอามาจับเวลา กรณีที่เป็น shareware วันนี้ผมได้เขียนบทความอ่าน / เขียน Registry คร่าวๆ คำเตือน การแก้ไขข้อมูลใน Registry นั้นความเสี่ยง ก่อนจะทำการแก้ไขอะไร ควรทำการ Backup ข้อมูลให้เรียบร้อยก่อน Registry คือ อะไร Registry คือ คลังข้อมูลของ Windows ที่เก็บค่า config ต่างๆ ของระบบทั้ง Hardware และ Software โดยมีการจัดเก็บในรูปแบบลำดับขั้น(Hierarchical Database) หรืออาจจะมองเป็นต้นไม้ได้

[Java] NaN คือ อะไร

บ่อยครั้งที่เราเขียนโปรแกรมที่เกี่ยวกับการคำนวณตัวเลขต่างๆ ไปๆมาๆ เกิด Exception ตัวอย่าง เช่น สาเหตุของปัญหานี้ คือ การคำนวณแล้วเกิด NaN ซึ่งเป็น NumberFormatException อยากรู้ว่าน้อง NaN คือ อะไร สามารถอ่านต่อได้เลยครับ

[Java] การรับค่าผ่าน command line โดยใช้ Eclipse

Q: เคยสงสัยหรือไม่ ว่า public static void main(String[] args) ตรงที่ตัวแดงไว้ มีไว้ทำอะไร A: มีไว้ เพื่อทำการรับค่าจากส่วนของ command line(หน้าจอดำๆ ของMS Dos) เพราะ java ในยุคแรกๆต้องรันผ่านหน้าจอ Dos  โดยตัว String[] args นั้นไม่จำเป็นต้องเขียนก็ได้ แต่ถ้าไม่ระบุ (String[] args) method main มันจะกลายเป็นแค่ method ทั่วๆไป เพราะ jvm specification ระบุ signature ไว้ว่ามันจะวิ่งไปทำงานที่ main ที่รับ parameter เป็น String[] เท่านั้น Q: แล้วถ้าต้องรับค่าจาก command line แต่ใช้ Eclipse หละ A: ทดสอบทำตามขั้นตอนนี้เลย สร้าง project และ class ขึ้นมาตามปกติ จากนั้นcopy code ด้านล่างนี้ไปแปะ แล้วจัดการimport package และ ประกาศตัวแปรให้ถูกต้อง public class ExceptionDemo { public static void main(String[] args) { double a, b, c; a = Double.parseDouble(args[0]); //ทำการแปลงค่าจาก arg[0] ให้เป็น double b = Double.parseDouble(args[1]); //ทำการแปลงค่าจาก arg[1] ให้เป็น double c = Double.parseDouble(args[2]); //ทำการแปลงค่าจาก arg[2] ให้เป็น double JOptionPane.showMessageDialog(null, a+”\n”+b+”\n”+c);…