วันอาทิตย์ที่ 4 มกราคม พ.ศ. 2558

VB.net sample Analog Clock

ตัวอย่างโค้ดโปรแกรม นาฬิกาเข็ม
โค้ดไม่ยากขอไม่อธิบายให้ยืดยาว โหลดไปดูกันเองละกันครับ
โปรเจ็กนี้เขียนด้วย Visual Studio 2013 และ .Net 4.0





โค้ดโปรแกรม

Public Class Form1
    Dim Minute1 As Bitmap
    Dim Second1 As Bitmap
    Dim HourP As Bitmap
    Dim Height1, Width1 As Integer

    Friend WithEvents Timer1 As New System.Windows.Forms.Timer
    Friend WithEvents PictureBox1 As New System.Windows.Forms.PictureBox

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Size = New Size(316, 338)
        Me.Timer1.Interval = 1000
        Me.Timer1.Enabled = True
        Me.PictureBox1.BackColor = System.Drawing.SystemColors.ActiveCaptionText
        Me.PictureBox1.Location = New System.Drawing.Point(-1, 0)
        Me.PictureBox1.Name = "PictureBox1"
        Me.PictureBox1.Size = New System.Drawing.Size(300, 300)
        Me.PictureBox1.TabIndex = 0
        Me.PictureBox1.TabStop = False
        Me.PictureBox1.BackColor = Color.White
        Me.Controls.Add(PictureBox1)
        Me.Label1.BackColor = Color.Black
        Me.Label1.ForeColor = Color.Yellow
        Me.Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) _
              Handles Timer1.Tick

        Height1 = PictureBox1.Size.Height
        Width1 = PictureBox1.Size.Width
        Dim TM As Bitmap = New Bitmap(Height1, Width1)
        Dim G As Graphics = Graphics.FromImage(TM)
        PictureBox1.Controls.Clear()
        Dim x1 As Integer = Height1 / 2
        Dim y1 As Integer = Width1 / 2
        G.TranslateTransform(x1, y1)

        'หน้าปัด
        Dim PenBlack As New Pen(Brushes.Black, 5)
        Dim PenGreen As New Pen(Brushes.Green, 4)

        For i As Integer = 1 To 60
            G.ResetTransform()
            G.TranslateTransform(x1, y1)
            G.RotateTransform(i * 6)
            G.DrawLine(PenGreen, 0, -131, 0, -135)
        Next
        For i As Integer = 1 To 12
            G.ResetTransform()
            G.TranslateTransform(x1, y1)
            G.RotateTransform(i * 30)
            G.DrawLine(PenBlack, 0, -115, 0, -145)
        Next


        Dim HPen As New Pen(Color.Blue, 20) 'เข็มสั้น
        G.ResetTransform()
        G.TranslateTransform(x1, y1)
        G.RotateTransform(((Now.Hour * 30) + (Now.Minute * 0.5)))
        G.DrawLine(HPen, 0, 20, 0, -100)

        Dim MinPen As New Pen(Color.Orange, 10) 'เข็มยาว
        G.ResetTransform()
        G.TranslateTransform(x1, y1)
        G.RotateTransform((((Now.Minute * 60) + Now.Second) * 0.1))
        G.DrawLine(MinPen, 0, 20, 0, -140)

        Dim SecPen As New Pen(Color.Red, 4) 'เข็มวินาที
        G.ResetTransform()
        G.TranslateTransform(x1, y1)
        G.RotateTransform((Now.Second * 6))
        G.DrawLine(SecPen, 0, 20, 0, -138)

        Dim PointPen As New Pen(Color.Black, 2) 'หมุด
        Dim PointPenRed As New Pen(Color.Red, 12)
        G.ResetTransform()
        G.TranslateTransform(x1, y1)
        G.DrawEllipse(PointPenRed, -2, -2, 4, 4)
        G.DrawEllipse(PointPen, -2, -2, 4, 4)

        PictureBox1.Image = TM

        Label1.Text = Now.Hour & "." & Now.Minute & "." & Now.Second
    End Sub
End Class


ดาว์นโหลดโปรเจ็ก

ในบางครั้งเข็มมันก็ไม่จำเป็นต้องตรงเสมอไป เปลี่ยนจาก DrawLine เป็น DrawCurve แทนซะก็สวยไปอีกแบบ

VB.net สร้าง Form วิ่งตาม Mouse

บทความนี้ใช้ Visual Studio 2013 และ .Net 4.0

โดยเราจะใช้ Properties MousePosition ของคลาส System.Windows.Forms.Control ในการเก็บค่าตำแหน่งของเมาส์

สร้างโปรเจ็กขึ้นมาเป็น VisualBasic Windows Forms .Net4.0 ตั้งชื่อโปรแกรมว่าอะไรก็ได้

สร้าง Control ขั้นมาสอง Control คือ PictureBox และ Timer


กำหนด Properties ต่างๆ ดังนี้

Form1:
BackColor = Green
FormBorderStyle = None
Size = 80,80
TransparencyKey = Green

PictureBox1:
BackColor = Green
Dock = Fill
Image = เลือกรูปที่ท่านต้องการ
ในตัวอย่างผมใช้รูปกาตูนละกัน
SizeMode = Zoom

Timer1:
inteval = 10

กด F7 เพื่อเปิดหน้า View Code
ประกาศตัวแปล LocalMousePosition เป็นชนิท Point  ดังนี้
Dim LocalMousePosition As Point
สร้าง Event Timer1.Tick และชุดคำสั่งดังนี้
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) _
        Handles Timer1.Tick
        LocalMousePosition = Control.MousePosition
        Me.Location = New Point(LocalMousePosition.X - (Me.Width / 2), _
                                LocalMousePosition.Y - (Me.Height / 2))
    End Sub
 สร้าง Event PictureBox1.MouseClick ขั้นมาโดยมีคำสั่งดังนี้
    Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) _
        Handles PictureBox1.MouseClick
        If e.Button = Windows.Forms.MouseButtons.Right Then
            Me.Close()
        Else
            If Timer1.Enabled Then
                Timer1.Enabled = False
            Else
                Timer1.Enabled = True
            End If
        End If
    End Sub
โค้ดทั้งหมดจะเป็นดังนี้


ดาว์นโหลดโปรเจ็ก Source Code

เซฟและคลิกปุ่ม Start Debuging เพื่อรันโปรแกรมทดสอบ
คลิกที่รูปภาพเพื่อให้ Timer1 เริ่มทำงาน ทดสอบลากเมาส์
คลิกที่รูปอีกครั้งเพื่อให้ Timer1 หยุดทำงาน
คลิกขวาที่รูปเพื่อปิดโปรแกรม




วันจันทร์ที่ 27 ตุลาคม พ.ศ. 2557

ProcessStartInfo Class

การเรียกใช้งาน Process โดยมี arguments ใน VB.net

Imports System
Imports System.Diagnostics
Imports System.ComponentModel

Namespace MyProcessSample
    Class MyProcess
            ' Opens the Internet Explorer application.
            Public Sub OpenApplication(myFavoritesPath As String)
            ' Start Internet Explorer. Defaults to the home page.
            Process.Start("IExplore.exe")

            ' Display the contents of the favorites folder in the browser.
            Process.Start(myFavoritesPath)
        End Sub 'OpenApplication

        ' Opens urls and .html documents using Internet Explorer.
        Sub OpenWithArguments()
            ' url's are not considered documents. They can only be opened
            ' by passing them as arguments.
            Process.Start("IExplore.exe", "www.northwindtraders.com")

            ' Start a Web page using a browser associated with .html and .asp files.
            Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
            Process.Start("IExplore.exe", "C:\myPath\myFile.asp")
        End Sub 'OpenWithArguments

        ' Uses the ProcessStartInfo class to start new processes,
        ' both in a minimized mode.
        Sub OpenWithStartInfo()
            Dim startInfo As New ProcessStartInfo("IExplore.exe")
            startInfo.WindowStyle = ProcessWindowStyle.Minimized

            Process.Start(startInfo)

            startInfo.Arguments = "www.northwindtraders.com"

            Process.Start(startInfo)
        End Sub 'OpenWithStartInfo

        Shared Sub Main()
            ' Get the path that stores favorite links.
            Dim myFavoritesPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

            Dim myProcess As New MyProcess()

            myProcess.OpenApplication(myFavoritesPath)
            myProcess.OpenWithArguments()
            myProcess.OpenWithStartInfo()
        End Sub 'Main
    End Class 'MyProcess
End Namespace 'MyProcessSample

ที่มา Microsoft

วันเสาร์ที่ 18 ตุลาคม พ.ศ. 2557

How to Create an OS X 10.10 Yosemite USB Installer


How to Create an OS X 10.10 Yosemite USB Installer

1. Format and Prepare USB Drive
Plug the drive into a Mac running OS X10.7 or higher and launch Disk Utility

In Disk Utility, Select the USB Flash drive from the list on the left.

Note: That you want to select the drive and not the volume. We’re using a SanDisk Cruzer flash drive, so in our case we choose 16.01 GB SanDisk Cruzer Media and not the default “No Name” volume.

With the USB drive selected, choose Partition tab on the right side of the window.

The partition scheme and volume properties of your flash drive will vary depending on manufacturer and previous configuration. In our case, our drive is brand new and formatted as a FAT volume with a Master Boot Record partition scheme. This won’t work for Yosemite, so we need to change it.

In the drop-down menu under Partition Layout, choose 1 to create a single new partition. Then click Option, choose GUID Partition Table, and click OK to save the change. Under Partition Information, Chang Format to Mac OS Extended (Journaled) and give the drive the name “Untitled” (this allows your drive to work with the Terminal commands below; you can rename the drive when the process is complete).

Press Apply to restructure the USB volume with the new parameters.

Note: that this will erase all contents of the USB drive so, as mentioned above, be sure to back up any files on the drive or use a blank drive to begin with.

2. Create the Bootable Yosemite USB Installer with Terminal

Now that your USB flash drive is ready, we can complete the process of creating a bootable Yosemite USB installer with a simple Terminal command.

Open Terminal from /Applications/Utilities and then enter the following command:


sudo /Applications/Install\ OS\ X\ Yosemite\ Beta.app/Contents/Resources/createinstallmedia –volume /Volumes/Untitled –applicationpath /Applications/Install\ OS\ X\ Yosemite\ Beta.app –nointeraction


sudo [drag-drop createinstallmedia] –volume [Flash drive path] –applicationpath [drag-drop Yosemite app path] –nointeraction


Press the Return key on your keyboard to execute the command, and enter your admin password when requested. This will create a bootable Yosemite USB installer using OS X’s createinstallmedia tool, which can take quite a while depending on the speed of your flash drive.

Let the tool do it’s thing and don’t interrupt the process until you see Terminal output Done and return your window to the user prompt. When it’s complete, your USB installer will be mounted to your Desktop and you can now rename this drive (highlight it on the Desktop and press Return)

Win7 เปลี่ยนภาพพื้นหลังหน้า Login Screen



สิ่งที่เราต้องมี อย่างเดียวเลยก็คือ ภาพที่ต้องการนำมาใช้ ซึ่งภาพนั้นจะมีความกว้างสูง(Resolution)เท่าไรก็ได้ แต่ขนาดไฟล์นั้นต้องไม่เกิน 245kb

จะแบ่งเป็นสองส่วนหลักๆ เริ่มจากส่วนแรกคือตั้งค่า Registry

1. เปิดใช้งานภาพพื้นหลังของ Login Screen โดยไปที่ปุ่ม Start และพิมพ์ในช่องค้นหา(หรือจะกด WinKey+R ก็ได้) ว่า "regedit" แล้วกด Enter


2. คลิกขวาที่ HKEY_LOCAL_MACHINE เลือก Fine... พิมพ์ "oembackground" แล้วกด Fine Next


3. ดับเบิ้ลคลิกที่คีย์ OEMBackground ที่ช่อง Value ให้เป็น 1 และ Base ให้เป็น Decimal คลิก OK


หมายเหตุ: เป็นอันจบขั้นตอนการตั้งค่า Registry การตั้งเป็น 1 หมายถึงเปิดใช้งาน Background ถ้าตั้งเป็น 0 ระบบก็จะใช้พื้นหลังที่ติดมากับวินโดว์เหมือนเดิม

ส่วนที่สอง การนำภาพที่เตรียมไว้มาทำเป็นพื้นหลัง

ภาพที่ใช้นั้นต้องมีขนาดไฟล์ไม่เกิน 245kb จากตัวอย่างใช้ภาพขนาด 237kb


1. เปลี่ยนชื่อไฟล์ภาพที่ต้องการให้เป็น "backgroundDefault.jpg"

2. เปิดโฟลเดอร์ C:/Windows/System32/oobe ขึ้นมา (ถ้าหาไม่เจอก็กด WinKey+R และพิมพ์ลงไปเลย)

3. สร้างโฟลเดอร์ใหม่ขึ้นมาภายในโฟลเดอร์ oobe โดยให้ชื่อโฟลเดอร์ว่า "info"


4. เข้าไปในโฟลเดอร์ info และสร้างโฟลเดอร์ใหม่ขึ้นมาโดยให้ชื่อว่า "backgrounds"


5. นำไฟล์ภาพ "backgroundDefault.jpg" ที่เราเตรียมไว้ ใส่ลงไปในโฟลเดอร์ backgrounds เป็นอันเสร็จขึ้นตอน


กดปุ่ม WinKey+L เพื่อชมผลงาน


ชอบบทความก็กด Like เป็นกำลังใจให้ด้วยนะครับ ^_^

วันอังคารที่ 14 ตุลาคม พ.ศ. 2557

เลื่อน Form ที่ไม่มี Titlebar (Move Form without Titlebar)

เลื่อน Form ที่ไม่มี Titlebar (Move Form without Titlebar)


บางครั้งเราก็ต้องการสร้างฟอร์มที่ไม่มี Titlebar แต่ก็อยากให้มันสามารถ แดรกเมาส์เลื่อนไปเลื่อนมาได้ ตัวอย่างโค้ด

'Declare the variables
Dim drag As Boolean
Dim mousex As Integer
Dim mousey As Integer

Private Sub Form1_MouseDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) _
    Handles Me.MouseDown
        drag = True 'Sets the variable drag to true.
        mousex = Windows.Forms.Cursor.Position.X - Me.Left 'Sets variable mousex
        mousey = Windows.Forms.Cursor.Position.Y - Me.Top 'Sets variable mousey
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) _
    Handles Me.MouseMove
        'If drag is set to true then move the form accordingly.
       If drag Then
           Me.Top = Windows.Forms.Cursor.Position.Y - mousey
           Me.Left = Windows.Forms.Cursor.Position.X - mousex
       End If
End Sub

Private Sub Form1_MouseUp(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.MouseEventArgs) _
    Handles Me.MouseUp
        drag = False 'Sets drag to false, so the form does not move according to the code in MouseMove
End Sub