[C#] Get Winform Computer Configuration Information To Output To A Text File.

Hi mọi người, sau một thời gian không viết bài chia sẽ về thủ thuật C#, hôm nay lại đi lang thang trên internet Hùng đã thấy có một bài chia sẽ về thủ thuật về "WINFORM" này cũng khá hay về thông tin máy tính bạn đang sữ dụng.

Với thủ thuật này bạn có thể xem thông tin "WINDOWN" của bạn đang sữ dụng, và nó sẽ hiện thông tin phần cứng trên windows của các bạn để các bạn kiểm tra sơ bộ xem. :D
Trong tools này kiểm tra cấu hình laptop, máy tính là việc làm cần thiết khi bạn muốn biết chính xác các phần cứng được trang bị trên máy.
Để kiểm tra thông tin cấu hình máy tính Windows bạn có thể dùng lệnh dxdiag trên cmd, xem qua Properties của PC hoặc dùng phần mềm hỗ trợ.
Trong bài viết dưới đây, mình sẽ hướng dẫn các bạn những cách kiểm tra, xem cấu hình phần cứng trên máy tính nhanh chóng, đơn giản nhất nhưng vẫn đảm bảo cung cấp đủ thông tin máy tính cần thiết, có thể thực hiện được cả trên Windows 10, 8/8.1, Windows 7, XP.
Với class này, các bạn sẽ dễ dàng lấy cấu hình phần cứng của máy Client xuất ra Text File, rồi có thể gởi file text này về Server chẳng hạn.
Class SystemInfoHelper.cs rất dài, nên các bạn download ở dưới source code bài viết của mình nhé.
FULL CODE
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace systeminfo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private const int WM_SYSCOMMAND = 274; private const int SC_MAXIMIZE = 61488;

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]

        public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);       
        private async void btnGetsystemInfo_Click(object sender, EventArgs e)
        {
            btnGetsystemInfo.Text = "Please waiting...";
            btnGetsystemInfo.Enabled = false;
           await SystemInfoHelper.WriteFileText("info.txt");
            ProcessStartInfo startInfo = new ProcessStartInfo("notepad.exe", "info.txt");
            startInfo.WindowStyle = ProcessWindowStyle.Maximized;
            var proc = Process.Start(startInfo);
            proc.WaitForInputIdle();
            SetParent(proc.MainWindowHandle, panel1.Handle);
            btnGetsystemInfo.Text = "Get System Info";
            btnGetsystemInfo.Enabled = true;
        }
    }
}

Bên trên là sơ bộ đoạn code cho mọi người áp dụng nha :D
DOWNLOAD DEMO + SOURCE

DOWNLOAD DEMO / SOURCE

Password Default : HungCoder.Com
Chúc các bạn thành công.

[Blogger]Hide Password Under Blogger Comments.

Hi mọi người, hôm nay HungCoder.Com sẽ hướng dẫn cho mọi người một thủ thuật khá hay của blogger, đó là ẩn mật khẩu dưới bình luận. Tức là khi các bạn bình luận thì mật khẩu sẽ hiện ra dưới bình luận đó cho các bạn luôn, mà không phải đởi admin hay người khác chia sẽ mật khẩu cho các bạn.

Thủ thuật này nói là Hùng tìm ra chứ thực tế thì lang thang trên internet thấy có người chia sẽ cũng khá hay nên Hùng quyết định chôm về chia sẽ lại cho mọi người để mọi người biết và áp dụng cho blog kiếm bình luận trên trang blog của mình :D
Bước 1 : Các bạn thêm đoạn code bên dưới vào sau thẻ <body> hoặc </body> :
<style>span.blog-admin:after{content:"Pass giải nén: HungCoder.Com";font-size:14px;color:#7542a8;display:block;margin-top:10px}.comment-replies span.blog-admin:after{display:none}</style>

Bước 2 : Các bạn thêm đường link sau vào ngay sau đoạn css trên là xong.
 <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=6129383310615304214' rel='stylesheet'/>

Các bạn thay mật khẩu và ID Blogger ở phần mình bôi đỏ trên code để áp dụng thủ thuật nhé.


DEMO


Chúc các bạn thành công với thủ thuật đơn giản này.
Nguồn : Biết Không.

[BUY] Buy Google Adsense Content (30 days)

Chào mọi người, chán quá mọi người ạh Hùng Coder vừa reg được em Google Adsense này đc 30 days và ngâm nó trong khoảng thời gian ấy mà thấy tiền về không là bao nhiêu :< mà Hùng Coder lại tốn rất nhiều gạo để nuôi em nó :D, thấy tình hình này không ổn cho lắm nên hôm nay Hùng quyết định bán em nó để thanh toán một ít nợ nần trong thời gian nuôi em nó :>

Nhìn lên hình ảnh các bạn cũng thấy đấy, nguồn thu nhật nó bấp bênh quá :D không có khả quan gì. Blog của Hùng lâu lâu cũng viết bài chứ không phải im hơi lặng tiếng suốt thời gian vừa qua, mặc dù là có viết bài không nhiều nhưng cũng có cái gọi là blog vẫn đang còn hoạt động cho anh GOOLE nó khỏi xét duyệt blog chết để banner tài khoản GOOGLE ADSENSE của Hùng...
Trong thời gian khi vừa đăng ký được em GOOGLE ADSENSE này Hùng cũng đã tìm hiểu kỷ về cách thức hoạt động của em nó với người dùng như thế nào cho hợp lý, nhưng do thời gian Hùng còn rất hạn chế trong việc chăm sóc em nó và cũng không có nhiều thời gian viết bài để nâng niu em nó tốt hơn trong mắt người dùng.
Nên hôm nay Hùng quyết định bán em nó cho người chủ tốt hơn. Để giúp em nó thành công hơn trong thời gian tiếp theo. :s
Ai mua thì có thể inbox trực tiếp cho Hùng luôn nhé : Lê Hùng Hoặc Hùng

[C#] Save the state of Winform controls to the Windows Registry

Hi anh em coder, lang thang tìm kiếm thủ thuật tạo bản quyền cho chương trình thì lại thấy thủ thuật này cũng khá hay, nó cũng gần giống như tools bản quyền 30 ngày của Hùng. Nhưng với thủ thuật này thì rất dễ bị các cracker bẻ khóa :D
Với thủ thuật này nó cũng đơn giản như chương trình bản quyền 30 ngày trên của Hùng thôi. Nó cũng lưu dữ liệu vào "REGISTRY" trên "WINDOWS"
Khi các bạn mở ứng dụng lên, muốn lưu lại các thuộc tính như trạng thái, kích thước, text, value của các control vào Registry.
Giống như các bạn chơi game, thì thường có chức năng save trạng thái lại.
Bình thường mình có rất nhiều các để lưu vào cơ sở dữ liệu database, text file...
Trong bài này mình sẽ hướng dẫn các bạn lưu và đọc các thông số trạng thái này vào Windows Registry.

Ở hình ảnh trên là các thuộc tính mình lưu vào Registry.
Khi mình nhập và các các thông tin xong thì ở sự kiện Form_Closing chúng ta sẽ lưu chúng lại vào registry.
Và khi mở form load thì chúng ta sẽ đọc các thuộc tính đó lại vào các control của mình.
Đầu tiên, các bạn tạo cho mình một class RegistryHelper.cs với nội dung như sau:
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SaveSettingRegistry
{
    class RegistryHelper
    {
        // Remove all settings for this app.
        public static void ClearSettings(string app_name)
        {
            RegistryKey reg_key =
                Registry.CurrentUser.OpenSubKey("Software", true);
            reg_key.DeleteSubKeyTree(app_name);
        }

        // Save a value.
        public static void SaveSetting(string app_name,
            string name, object value)
        {
            RegistryKey reg_key =
                Registry.CurrentUser.OpenSubKey("Software", true);
            RegistryKey sub_key = reg_key.CreateSubKey(app_name);
            sub_key.SetValue(name, value);
        }

        // Get a value.
        public static object GetSetting(string app_name, string name, object default_value)
        {
            RegistryKey reg_key = Registry.CurrentUser.OpenSubKey("Software", true);
            RegistryKey sub_key = reg_key.CreateSubKey(app_name);
            return sub_key.GetValue(name, default_value);
        }

        // Load all of the saved settings.
        public static void LoadAllSettings(string app_name, Form frm)
        {
            // Load form settings.
            frm.SetBounds(
                (int)GetSetting(app_name, "FormLeft", frm.Left),
                (int)GetSetting(app_name, "FormTop", frm.Top),
                (int)GetSetting(app_name, "FormWidth", frm.Width),
                (int)GetSetting(app_name, "FormHeight", frm.Height));
            frm.WindowState = (FormWindowState)GetSetting(app_name,
                "FormWindowState", frm.WindowState);

            // Load the controls' values.
            LoadChildSettings(app_name, frm);
        }

        // Load all child control settings.
        public static void LoadChildSettings(string app_name, Control parent)
        {
            foreach (Control child in parent.Controls)
            {
                // Restore the child's value.
                switch (child.GetType().Name)
                {
                    case "TextBox":
                    case "ListBox":
                    case "ComboBox":
                        child.Text = GetSetting(app_name, child.Name, child.Text).ToString();
                        break;
                    case "CheckBox":
                        CheckBox chk = child as CheckBox;
                        chk.Checked = bool.Parse(GetSetting(app_name,
                            child.Name, chk.Checked.ToString()).ToString());
                        break;
                    case "RadioButton":
                        RadioButton rad = child as RadioButton;
                        rad.Checked = bool.Parse(GetSetting(app_name,
                            child.Name, rad.Checked.ToString()).ToString());
                        break;
                    case "VScrollBar":
                        VScrollBar vscr = child as VScrollBar;
                        vscr.Value = (int)GetSetting(app_name, child.Name, vscr.Value);
                        break;
                    case "HScrollBar":
                        HScrollBar hscr = child as HScrollBar;
                        hscr.Value = (int)GetSetting(app_name, child.Name, hscr.Value);
                        break;
                    case "NumericUpDown":
                        NumericUpDown nud = child as NumericUpDown;
                        nud.Value = decimal.Parse(GetSetting(app_name, child.Name, nud.Value).ToString());
                        break;
                    case "CheckedListBox":
                        CheckedListBox lst = child as CheckedListBox;
                        for (int i = 0; i < lst.Items.Count; i++)
                        {
                            // Default is false.
                            string item_name = child.Name + "(" + i.ToString() + ")";
                            bool is_checked = bool.Parse(GetSetting(app_name, item_name, "False").ToString());
                            lst.SetItemChecked(i, is_checked);
                        }
                        break;

                        // Add other control types here.
                }

                // Recursively restore the child's children.
                LoadChildSettings(app_name, child);
            }
        }

        // Save all of the form's settings.
        public static void SaveAllSettings(string app_name, Form frm)
        {
            ClearSettings(app_name);

            // Save form settings.
            SaveSetting(app_name, "FormWindowState", (int)frm.WindowState);
            if (frm.WindowState == FormWindowState.Normal)
            {
                // Save current bounds.
                SaveSetting(app_name, "FormLeft", frm.Left);
                SaveSetting(app_name, "FormTop", frm.Top);
                SaveSetting(app_name, "FormWidth", frm.Width);
                SaveSetting(app_name, "FormHeight", frm.Height);
            }
            else
            {
                // Save bounds when we're restored.
                SaveSetting(app_name, "FormLeft", frm.RestoreBounds.Left);
                SaveSetting(app_name, "FormTop", frm.RestoreBounds.Top);
                SaveSetting(app_name, "FormWidth",
                    frm.RestoreBounds.Width);
                SaveSetting(app_name, "FormHeight",
                    frm.RestoreBounds.Height);
            }

            // Save the controls' values.
            SaveChildSettings(app_name, frm);
        }

        // Save all child control settings.
        public static void SaveChildSettings(string app_name,
            Control parent)
        {
            foreach (Control child in parent.Controls)
            {
                // Save the child's value.
                switch (child.GetType().Name)
                {
                    case "TextBox":
                    case "ListBox":
                    case "ComboBox":
                        SaveSetting(app_name, child.Name, child.Text);
                        break;
                    case "CheckBox":
                        CheckBox chk = child as CheckBox;
                        SaveSetting(app_name, child.Name,
                            chk.Checked.ToString());
                        break;
                    case "RadioButton":
                        RadioButton rad = child as RadioButton;
                        SaveSetting(app_name, child.Name,
                            rad.Checked.ToString());
                        break;
                    case "VScrollBar":
                        VScrollBar vscr = child as VScrollBar;
                        SaveSetting(app_name, child.Name, vscr.Value);
                        break;
                    case "HScrollBar":
                        HScrollBar hscr = child as HScrollBar;
                        SaveSetting(app_name, child.Name, hscr.Value);
                        break;
                    case "NumericUpDown":
                        NumericUpDown nud = child as NumericUpDown;
                        SaveSetting(app_name, child.Name, nud.Value);
                        break;
                    case "CheckedListBox":
                        CheckedListBox lst = child as CheckedListBox;
                        for (int i = 0; i < lst.Items.Count; i++)
                        {
                            // Default is false.
                            if (lst.GetItemChecked(i))
                            {
                                string item_name = child.Name + "(" + i.ToString() + ")";
                                SaveSetting(app_name, item_name, "True");
                            }
                        }
                        break;
                        // Add other control types here.
                }

                // Recursively save the child's children.
                SaveChildSettings(app_name, child);
            }
        }
    }
}

Và trên Form1.cs, chúng ta gọi vào hai sự kiện event Form_Load Form_Closing để sử dụng:
namespace SaveSettingRegistry
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.FormClosing += Form1_FormClosing;
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            RegistryHelper.SaveAllSettings(Application.ProductName, this);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            RegistryHelper.LoadAllSettings(Application.ProductName, this);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            RegistryHelper.ClearSettings(Application.ProductName);
        }
    }
}


DOWNLOAD SOURCE

Chúc các bạn thành công
Nguồn : LapTrinhVB.Net.

[Tâm Sự] Domain BomKhung.Com Comeback ?

Hi mọi người, Hùng hoạt động blog cũng đã hơn 9 năm rồi nhưng không chuyên sâu về blogger nhiều, Hùng làm blog đơn giản lúc đó chỉ muốn cất giữ những thứ mình đang tìm hiểu về "HACKING", "CODER" ..v.v. Nhưng đến năm 2015 Hùng đã đầu tư cho bản thân một em domain trùng với tên ở nhà của Hùng đó là "BỜM" nhưng do tính Hùng lúc đó "KHÙNG" lắm nên lấy domain là "BOMKHUNG.COM" luôn =)))

Ban đầu dùng domain thì thấy thích hơn khi sữ dụng domain mặc định của blogger. Nhưng sau một thời gian thì lại thấy không hay, mặc dù domain đó Hùng đã đi đặt backlink sau các site lớn ở việt nam và thế giới nên độ seo của domain đó cũng có chút ảnh hưởng dù nhỏ nhưng cũng là công sức của Hùng lúc bấy giờ. :D. Nhưng đến năm 2016 Hùng có một chút biến cố nên quên gia hạn domain và bay mất domain "BomKhung.Com" (Bị một anh người nhật chiếm mất) nên đành vô vọng đợi domain đó nhá ra và mình sẽ mua lại em nó :D, trong thời gian chờ đợi đó Hùng đã mua rất nhiều domain có gắn liền với tên miền củ đó ví dụ như : "BomKhung.Info", "BomKhung.Net", "BomKhung.Xyz" ..v.v nhưng những domain này lại không ảnh hưởng tới seo và từ khóa cho lắm nên Hùng bỏ luôn và cuối cùng là em "HungCoder.Com". Mặc du với domain này Hùng chưa thực sự đi backlink nhiều và tối ưu seo cho e nó vì thời gian Hùng không có nhiều để ngồi máy tính nhiều như lúc xưa nữa nên đành gác qua một bên, khi nào rảnh mới tối ưu và đi backlink tốt cho em nó :D, và cũng buồn chân buồn tay tìm kiếm lại domain lúc xưa và thấy em nó đã được thả và Hùng nhanh tay mua lại. Mà bây giờ Hùng không biết sữ dụng em nó để làm gì đây nữa ^^ hay đơn giản chỉ để domain đó làm sitelink cho "HungCoder.Com" anh em nhỉ :D

[Visual Basic] Check internet connection

Hi mọi người, với thủ thuật "GET IP ADRESSBAR" này thì đã có chia sẽ rất nhiều trên "INTERNET", nhưng hôm nay Hùng chia sẽ lại cho mọi người, sợ mọi người quên thủ thuật này :D

Thủ Thuật này giúp người dùng sữ dụng VB.Net kiểm tra xem có internet không.
Trong code này mình có sữ dụng 2 hàm (Boolean) để kiểm tra kết nối.
1,Check internet connection using Computer.Network.Ping("google.com")
2,Check internet connection Using stream = client.OpenRead("http://www.google.com")

FULL CODE
Public Class Form1
    Function IsConnected() As Boolean
        'Checks the internet connection
        If My.Computer.Network.Ping("google.com").ToString = True Then
            Label1.Text = ("Connected")
            Label1.ForeColor = Color.Green
        Else
            Label1.Text = ("No Connection")
            Label1.ForeColor = Color.Red
        End If
        Return True
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Timer1.Tick
        'Check if there is an internet connection is available.
        IsConnected()
    End Sub
    
    'Another function to check for internet connectivity
    Public Function CheckForInternetConnection() As Boolean
        Try
            Using client = New WebClient()
                Using stream = client.OpenRead("http://www.google.com")
                    Return True
                End Using
            End Using
        Catch
            Return False
        End Try
    End Function
    

Chúc các bạn thành công với thủ thuật này.