2008/08/04

自動關機 指令 shutdown.exe

通過調用Windows XP系統目錄下的shutdown.exe文件就可以了,
它的位置放在windows\system32中。這個文件就是Windows自帶的
關機程式只不過是被隱藏起來了不太好找到。

下面舉個例子來演示一下如何設置shutdown.exe命令:

1.假如您17:00下班您需要電腦在17:01分關機,可以選擇「開始→運行」,
輸入「at 17:01 Shutdown -s」,這樣,到了17:01分電腦就會出現
「系統關機」對話方塊,默認有30秒鍾的倒計時並提示你保存工作。
如果你想以倒計時的方式關機,可以輸入「Shutdown.exe -s -t 3600」,
這裡表示60分鍾後自動關機,「3600」代表60分鍾。
如果想讓Windows 2000也實現同樣的效果,可以把Shutdown.exe複製到系統目錄下。

2.設置好自動關機後,如果想取消的話,可以在運行中輸入「shutdown -a」。
另外輸入「shutdown -i」,則可以打開設置自動關機對話方塊,對自動關機進行設置。

3.Shutdown.exe的參數,每個都具有特定的用途,執行每一個都會產生不同的效果,
比如「-s」就表示關閉本地電腦,「-a」表示取消關機操作,下面列出了更多參數,
大家可以在Shutdown.exe中按需使用。

-f:強行關閉應用程式

-m ╲╲電腦名:控制遠程電腦

-i:顯示圖形用戶界面,但必須是Shutdown的第一個選項

-l:註銷當前用戶

-r:關機並重啟

-t時間:設置關機倒計時

-c "消息內容":輸入關機對話方塊中的消息內容(不能超127個字符)

2008/07/15

建立透明文件夾(看不見可以使用)

建立透明文件夾(看不見可以使用)

建立透明文件夾
第一步:新建一文件夾,命名時先按住[Alt]鍵的同時使用小鍵盤輸入0160數字。
這樣,就得到一個只有文件夾圖標沒有名稱的文件夾。
第二步:右擊文件夾,選「屬性」,打開對話框。切換至「自定義」,單擊「更改圖標」按鈕,彈出「為文件夾更改圖標」對話框。向右拖動下面的滑塊,選擇一個為空的圖標,一路點擊「確定」按鈕,即建立一無名稱、圖標的文件夾。
一般,照名稱排列文件和文件夾裡,透明文件夾會排在第一位。所以,建議在路徑較深的空文件夾來創建,以更隱蔽。
如果忘記文件夾所在位置,可按下[Alt+A]鍵,即可找到。

2008/05/26

對稱式加解

說明 : 對稱式加解密意即可將加密後的字串做還原的動作.
適用平台:.Net Framework 1.0,1.1,2.0
 
using System.Security.Cryptography;
using System.Text;
public string EnCode(string EnString)  //將字串加密
{
  byte[] Key = {123 , 123 , 123 , 123 , 123 , 123 , 123, 123};
  byte[] IV = {123 , 123 , 123 , 123 , 123 , 123 , 123 , 123};
  byte[] b = Encoding.UTF8.GetBytes(EnString);
   
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  ICryptoTransform ict = des.CreateEncryptor(Key , IV);
  byte[] outData = ict.TransformFinalBlock(b , 0 , b.Length);
  return Convert.ToBase64String(outData);  //回傳加密後的字串
}
public string DeCode(string DeString) //將字串解密
{
  byte[] Key = {123 , 123 , 123 , 123 , 123 , 123 , 123, 123};
  byte[] IV = {123 , 123 , 123 , 123 , 123 , 123 , 123 , 123};
  byte[] b = Convert.FromBase64String(DeString);
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  ICryptoTransform ict = des.CreateDecryptor(Key , IV);
  byte[] outData = ict.TransformFinalBlock(b , 0 , b.Length);
  return Encoding.UTF8.GetString(outData) ;//回傳解密後的字串
}
用此程式碼將"TestForEnCode"這字串加密後,就變為"KMdstO1vd6pgzf1nsk3CrA==",當然,解密後,也就變回"TestForEnCode"

2008/03/14

使用OWC11 畫出統計圖表

出處

先在設計畫面的工具列新增三個項目(三個都在COM元件內).

Microsoft Office Chart 11.0
Microsoft Office PivotTable 11.0
Microsoft Office Spreadsheet 11.0

之後拉一個Microsoft Office Chart 11.0到Form上.
一個Timer
3個RadioButton.
rdb_chChartTypeLine
rdb_chChartTypeLine3D
rdb_chChartTypeLineMarkers

以下即為程式碼原始碼.

using Microsoft.Office.Interop.Owc11;
ChartChartTypeEnum _Type;
private void Form1_Load(object sender, EventArgs e)
{
    showChart(ChartChartTypeEnum.chChartTypeLine);
}

private void showChart(ChartChartTypeEnum Type)
{
    try
    {
        axChartSpace1.Clear();
        ChChart objChart = axChartSpace1.Charts.Add(0);

        objChart.Type = Type;
        objChart.HasLegend = true;
        objChart.HasTitle = true;
        objChart.Title.Caption = "數量統計";
        objChart.Axes[0].HasTitle = true;
        objChart.Axes[0].Title.Caption = "月份";
        objChart.Axes[1].HasTitle = true;
        objChart.Axes[1].Title.Caption = "個";

        objChart.SeriesCollection.Add(0);
        objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,
        +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "3C");

        objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
        +(int)ChartSpecialDataSourcesEnum.chDataLiteral,
        "Jan" + '\t' + "Feb" + '\t' + "Mar" + '\t' + "Apr" + '\t' + "May" + '\t' + "Jun" + '\t');
        Random r = new Random(DateTime.Now.Second);
        string w1 = r.Next(300).ToString();
        string w2 = r.Next(300).ToString();
        string w3 = r.Next(300).ToString();
        string w4 = r.Next(300).ToString();
        string w5 = r.Next(300).ToString();
        string w6 = r.Next(300).ToString();
        objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
        (int)ChartSpecialDataSourcesEnum.chDataLiteral,
        w1 + '\t' + w2 + '\t' + w3 + '\t' + w4 + '\t' + w5 + '\t' + w6 + '\t');

        objChart.SeriesCollection.Add(1);
        objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames,
        +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "Daily Needs");

        objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories,
        +(int)ChartSpecialDataSourcesEnum.chDataLiteral,
        "Jan" + '\t' + "Feb" + '\t' + "Mar" + '\t' + "Apr" + '\t' + "May" + '\t' + "Jun" + '\t');
        string b1 = r.Next(300).ToString();
        string b2 = r.Next(300).ToString();
        string b3 = r.Next(300).ToString();
        string b4 = r.Next(300).ToString();
        string b5 = r.Next(300).ToString();
        string b6 = r.Next(300).ToString();

        objChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues,
        (int)ChartSpecialDataSourcesEnum.chDataLiteral,
        b1 + '\t' + b2 + '\t' + b3 + '\t' + b4 + '\t' + b5 + '\t' + b6 + '\t');
    }
    catch (Exception ex)
    {
        timer1.Enabled = false;
        MessageBox.Show(ex.Message);
    }
    finally
    {
        _Type = Type;
    }
}

private void rdb_chChartTypeLine_CheckedChanged(object sender, EventArgs e)
{
    if (rdb_chChartTypeLine.Checked)
    {
        showChart(ChartChartTypeEnum.chChartTypeLine);
        return;
    }
    if (rdb_chChartTypeLine3D.Checked)
    {
        showChart(ChartChartTypeEnum.chChartTypeLine3D);
        return;
    }
    if (rdb_chChartTypeLineMarkers.Checked)
    {
        showChart(ChartChartTypeEnum.chChartTypeLineMarkers);
        return;
    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    showChart(_Type);
}

2008/03/07

PIC TEST

2000823249239778958_rs

2008/03/06

[C#]動態陣列 使用 ArrayList

來源


using System;
using System.Collections; //記得要宣告的
public class SamplesArrayList
{
    public static void Main()
    {
        // Creates and initializes a new ArrayList.
        ArrayList myAL = new ArrayList();
        myAL.Add("Hello");
        myAL.Add("World");
        myAL.Add("!");
        // Displays the properties and values of the ArrayList.
        Console.WriteLine( "myAL" );
        Console.WriteLine( " Count: {0}", myAL.Count );
        Console.WriteLine( " Capacity: {0}", myAL.Capacity );
        Console.Write( " Values:" );
        PrintValues( myAL );
    }
    public static void PrintValues( IEnumerable myList )
    {
        foreach ( Object obj in myList )
        Console.Write( " {0}", obj );
        Console.WriteLine();
    }
}

//This code produces output similar to the following:
//myAL
//Count: 3
//Capacity: f
//Values: Hello World !

[C#]從陣列中移除一行值

原始連結


static void Main(string[])
{
//array 是固定的,不能動態去變更大小
//只能重新宣告一個新的陣例才能達到你 Remove 的需求
//一般如果是動態的,會用 ArrayList 或是 List<> 來做
string[] aryStr = { "A", "B", "C", "D" };
int removeIndex = 2;//把 C 移掉
// ======= sample 1 ==> 改用 List<string> ====
List<string> list = new List<string>();
foreach (string str in aryStr)
{
list।Add(str);
}
list।RemoveAt(removeIndex);
string[] aryStrRemoveByList = list।ToArray();
foreach (string str in aryStrRemoveByList)
{
Console।WriteLine(str);
}
Console।WriteLine(new String('=', 20));
// ======== sample 2 自已寫Method去轉,不過還是要new新的
string[] aryStrRemoveByArray = new string[aryStr।Length - 1];
int count = 0;
for (int i = 0; i < aryStr।Length; i++)
{
if (i != removeIndex)
{
aryStrRemoveByArray[count] = aryStr[i];
count++;
}
}
foreach (string str in aryStrRemoveByArray)
{
Console।WriteLine(str);
}
}

2008/02/25

C# DateTime 日期格式轉換

C#有個DateTime的物件用來處理日期的其中DateTime.ParseExact 方法(System)方法可以將日期和時間的指定字串表示轉換為其對等的DateTime
字串表示的格式必須完全符合指定的格式。
再搭配DateTime.ToString (IFormatProvider)
方法使用格式資訊,將這個執行個體的值轉換為它的對等字串表示。


// 將字串日期轉整數
// 日期字串
// 整數日期格式
private static int ParseDate(string _date)
{
    //這裡定義所有日期格式
    string[] dateFormats = { "yyyy/MM/dd", "yyy/MM/dd", "yy/MM/dd", "y/MM/dd",
    "yyyy-MM-dd", "yyy-MM-dd", "yy-MM-dd", "y-MM-dd",
    "yyyy/M/dd","yyy/M/dd","yy/M/dd","y/M/dd",
    "yyyy-M-dd","yyy-M-dd","yy-M-dd","y-M-dd",
    "yyyy/MM/d","yyy/MM/d","yy/MM/d","y/MM/d",
    "yyyy-MM-d","yyy-MM-d","yy-MM-d","y-MM-d",
    "yyyy/M/d","yyy/M/d","yy/M/d","y/M/d",
    "yyyy-M-d","yyy-M-d","yy-M-d","y-M-d"};
    try
    {
        //這裡來處理傳入的格式是否為日期格式,只需要簡單一行
        DateTime datetime = DateTime.ParseExact(_date, dateFormats, null, DateTimeStyles.AllowWhiteSpaces);
        int iToken = _date.IndexOf("-", 0);
        if (iToken == -1)
        iToken = _date.IndexOf("/",0);
        string iYear = _date.Substring(0, iToken);
        switch (iYear.Length)
        {
            //這裡是利用datetime.ToString(IFormatProvider)
            //的方法傳出自己想要的統一格式
            case 1:
            return Int32.Parse(datetime.ToString("yMMdd"));
            case 2:
            return Int32.Parse(datetime.ToString("yyMMdd"));
            case 3:
            return Int32.Parse(datetime.ToString("yyyMMdd"));
            case 4:
            return Int32.Parse(datetime.ToString("yyyyMMdd"));
        }
        return 0;
    }
    catch (Exception)
    {
        return 0;
    }
}

甚至時間也可以這樣來做

// 將字串時間轉換為整數時間
// 時間字串(HH:mm:ss
// HHmmss整數格式
private static int ParseTime(string _time)
{
    string[] timeFormats = { "HH:mm:ss", "HH:mm:s","HH:m:ss", "HH:m:s",
    "H:mm:ss","H:mm:s","H:m:ss","H:m:s"};
    try
    {
        DateTime datetime = DateTime.ParseExact(_time, timeFormats, null,DateTimeStyles.AllowWhiteSpaces);
        return Int32.Parse(datetime.ToString("HHmmss"));
    }
    catch(Exception)
    {
        return 0;
    }
}

2008/02/21

C# 日期 轉 農曆

System.Globalization 這個命名空間很有趣,竟然有 TaiwanCalendar 與 TaiwanLunisolarCalendar 類別!

TaiwanCalendar 是指台灣使用的曆法,也就是「民國年」的計算法。


DateTime now = DateTime.Now;
TaiwanCalendar tc = new TaiwanCalendar();

int year = tc.GetYear(now);
MessageBox.Show(year.ToString());
// Output : 96

int month = tc.GetMonth(now);
// Output : 12

int daysOfMonth = tc.GetDaysInMonth(year, month);
MessageBox.Show(daysOfMonth.ToString());
// Output : 4

TaiwanLunisolarCalendar 是指台灣使用的陰陽曆(農曆)。和 TaiwanCalendar 相同,但可以使用西元年份計算,而日期和月份則使用陰陽曆計算,真的很省事!

TaiwanLunisolarCalendar tlc = new TaiwanLunisolarCalendar();

// 取得目前支援的農曆日曆到幾年幾月幾日( 2051-02-10 )
tlc.MaxSupportedDateTime.ToShortDateString();

// 取得今天的農曆年月日
txtContent.Text =
tlc.GetYear(DateTime.Now).ToString() + "-" +
tlc.GetMonth(DateTime.Now).ToString() + "-" +
tlc.GetDayOfMonth(DateTime.Now).ToString();

C# 計算日期 是 星期幾

基姆拉爾森計算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
在公式中d表示日期中的日數,m表示月份數,y表示年數。
注意:在公式中有個與其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10則換算成:2003-13-10來代入公式計算。
代碼如下:


//y-年,m-月,d-日期
string CaculateWeekDay(int y,int m, int d)
{
if(m==1) m=13;
if(m==2) m=14;
int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
string weekstr="";
switch(week)
{
case 1: weekstr="星期一"; break;
case 2: weekstr="星期二"; break;
case 3: weekstr="星期三"; break;
case 4: weekstr="星期四"; break;
case 5: weekstr="星期五"; break;
case 6: weekstr="星期六"; break;
case 7: weekstr="星期日"; break;
}
return weekstr;
}
調用方法:
Label2।Text=CaculateWeekDay(2004,12,9);

取得一年中某一個月天數,EX 2008/01
label4।Text = DateTime.DaysInMonth(2008,1).ToString();

先取得2月在減1天,就是1月的最後一天了.
//今天
DateTime.Now.Date.ToString();
//昨天
DateTime.Now.AddDays(-1).ToString();
//明天
DateTime.Now.AddDays(1).ToString();

//本週第1天及最後1天 (要注意的是這裡的每一週是從週日始至週六止)
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek).ToString();

//上週, 一個周是7天,上週就是本週再減去7天
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek - 7).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek - 7).ToString();

//下周
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek + 7).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek + 7).ToString();


//巧用C#裡ToString的字符格式化
//本用第1天及最後1天
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToString();

//上個月第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToString();
//下個月第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToString();

//今年第1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToString();
//今年最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToString();

//去年第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToString();

//明年第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToString();

//本季,一年四個季度,一個季度三個月
//先把日期推到本季度第一個月,然後這個月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
//本季度的最後一天就是下季度的第一天減一
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString();
//下季
DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString();
//上季
DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString();