2009年1月22日 星期四

如何開機時 自動連網路磁碟機?

剛好碰上 Client 必須要同步備份 Server端 某資料夾,但是網路又經常斷線
所以趕快弄了一下,具體步驟如下:

環境:Windows XP
開啟-->執行-->輸入CMD Enter

------------------------------------------------
COPY CON GO.BAT
NET CONFIG SERVER /AUTODISCONNECT:-1
NET USE Z: /DEL
NET USE Z: \\192.168.0.1\DATASOURCE 密碼 /user:Administrator
『按一下鍵盤上方的 F6 按鍵』
-------------------------------------------------

完成後會產生一個 GO.BAT 的批次檔案
做個捷徑丟到 開始-->程式集-->啟動 裡面。

以後開機就會出現 Z 槽的網路磁碟機了。

下面說明一下用意:
NET CONFIG SERVER /AUTODISCONNECT:-1 (設定電腦閒置網路磁碟機不中斷)
NET USE Z: /DEL (連線之前先刪除,避免被使用)
NET USE Z: \\192.168.0.1\DATASOURCE (將區域網路上某個目錄 連接到 本機 Z 槽)

以上

我的寶貝猛男!!

有小孩的感覺真的很好,有時候工作累了,想一想他 就覺得很開心、愉快!






這個應該是 11 個月大的時候,
最喜歡翻箱倒櫃的,什麼東西都要翻出來。

令人無奈。。



















逗他笑的時候!

















別誤會了。。其實 他是想要人家抱他~











第一次騎小車車。。不過呢 車子是向後退的..

2009年1月21日 星期三

C# 刪除Process內程式

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string ProcessName = "notepad"; //大小寫有差,不需要副檔名
Process[] MyProcess = Process.GetProcessesByName(ProcessName);

if (MyProcess.Length != 0) //檢查是不是有找到
{
// listBox1.Items.Add(MyProcess[0].ProcessName); 如果有 Listbox1 可以顯示出來是砍了那個 Procss
MyProcess[0].Kill();
}


}

}
}

C# 將進行中程式結束關閉

自己試了一下,有點像是 Form 表單右上角的 X 一樣的功能。

System.Environment.Exit(System.Environment.ExitCode);

可以用在複數表單上來關閉。

有人知道比較詳細的部分嗎?

2009年1月15日 星期四

C# 資料庫比數計算

label5.Text = km.Tables[0].Rows.Count.ToString(); //取得資料比數

用來取得 資料庫比數

C# Timer 事件用法


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Interval = 1000; //這樣的用法會每 1 秒跑去 檢查條件
timer1.Start(); //開始跑
//timer1.Stop();
}


//由於 timer1.Interval = 1000 (1秒),所以每1秒會執行一次 Timer_Tick
private void timer1_Tick(object sender, EventArgs e)
{
DateTime qq = new DateTime();

//顯示現在日期、時間、秒數....
label6.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

}



C# Debug 利器,可以在『輸出』視窗觀看

System.Diagnostics.Debug.Print(qq.Hour.ToString()); //Debug 利器,輸出視窗
// () 內表示用法如同 Messbox 用法相同

如何將 Outlook 郵件 匯出 至 Outlook Express ?

因為最近 Outlook 發生了很多神奇的事情。。
例如 E-Mail 老是重複收到兩封。。
例如 每次開啟 Outlook 老是說我沒有正常關閉。。(我發誓我有!)

所以一狠心要把 Outlook 信件 整個轉移到 Outlook Express..

方法也很簡單,開啟 Outlook Express 後,點選 『檔案--> 匯入--> 郵件』



然後他會全部匯入。。當然你也可以針對某些 資料夾來匯入..

比較可惜的是,通訊錄的轉移沒辦法匯入,只能自己手動慢慢建立了。
看看網路上高手是不是有辦法。。。殘念!!


另外 我比較了一下容量大小,大約是 Outlook 有壓縮效果吧,比較小。

Outlook Express 1.6GB
Outlook 1.01GB

以上

Firefox 套件 『ScribeFire』可以直接發佈文章

剛剛爬文看到的,馬上下載來試用看看。。
這篇文章就是使用『ScribeFire'套件來發佈的。。

用起來很直接、很方便,可以不需要登入 Blog ..不需要輸入 帳號、密碼
只是會有點擔心 。。我的帳號、密碼不會外洩吧!! ^_^|||

試用一陣子看看吧!

2009年1月14日 星期三

C# 類別的優點(很像 巨集)

//類別的建構
class file
{
//類別的屬性
string filename="";

//建構子
public file( )
{
filename="c:\\1.txt";
}

public file(string fn)
{
filename=fn;
}

//方法的使用
public string open( )
{
string aa;
System.IO.StreamReader fn = new System.IO.StreamReader(filename, Encoding.Default);
while (fn.EndOfStream == false)
{
Application.DoEvents(); //這一行是強制 逐步執行
aa = aa + fn.ReadLine();
}
return aa;
}

public string write()
{

}


}


file xx= new file("c:\66.txt" );
msgbox( xx.open());

C# 類別、建構子、方法

//類別的建構
class ABC
{
//類別的屬性
int c=0;
int d=0;
string e="";

//建構子(名稱一定和 類別名稱相同)
public ABC( )
{
d=1;
c=2;
}

public ABC(int i )
{
d=1;
c=i;
}

public ABC(int i,string j , int k )
{
c=i;
e=j;
d=k;
}

//方法的使用
public string PLAY( )
{
c++;
d++;
return d;
}

public string PLAY2(int i )
{
c=c+i;
return c.tostring;
}
}

ABC xx = new ABC(4 );
msgbox( xx.PLAY2(6 ));

C# 順序載入檔案(FORM)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;


namespace _20090105_開機順序載入程式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}

//當開啟"表單後",自動讀入檔案 將 setup.ini 內容讀至 listbox1
private void Form1_Activated(object sender, EventArgs e)
{

System.IO.StreamReader fn = new System.IO.StreamReader("setup.ini", Encoding.Default);
while (fn.EndOfStream == false)
{
Application.DoEvents(); //這一行是強制 逐步執行
string aa = fn.ReadLine();
listBox1.Items.Add(aa);
System.Threading.Thread.Sleep(500);

//開始執行 讀入Listbox1 內檔案路徑
System.Diagnostics.Process km = new System.Diagnostics.Process();
km.StartInfo.FileName = aa.ToString();
km.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (km.StartInfo.FileName != "")
{
km.Start();
}

//Delay 的用法,比Timer 方便,直接就可以停止,待時間結束 往下一行
System.Threading.Thread.Sleep(3000);
}
fn.Close();
this.Close(); //關閉表單
}

}
}

C# 順序載入檔案(主控台)

using System;
using System.Collections.Generic;
using System.Text;

namespace _20090107_開機自動開啟_setup.ini_程式_主控台模式_
{
class Program
{
static void Main(string[] args)
{
System.IO.StreamReader fn = new System.IO.StreamReader("setup.ini", Encoding.Default);
while (fn.EndOfStream == false)
{

string aa = fn.ReadLine();

System.Threading.Thread.Sleep(500);

//開始執行 讀入Listbox1 內檔案路徑
System.Diagnostics.Process km = new System.Diagnostics.Process();
km.StartInfo.FileName = aa.ToString();
km.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (km.StartInfo.FileName != "")
{
km.Start();
}

//Delay 的用法,比Timer 方便,直接就可以停止,待時間結束 往下一行
System.Threading.Thread.Sleep(3000);
}
fn.Close();
//Console.WriteLine("pause"); //就是 Messbox
}
}
}

C# 順序載入檔案開啟

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;


namespace _20090105_開機順序載入程式
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

//Delay 的用法,比Timer 方便,直接就可以停止,待時間結束 往下一行
// System.Threading.Thread.Sleep(3000);

}

private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;


}


private void button2_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox2.Text = openFileDialog1.FileName;
}

private void button3_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox3.Text = openFileDialog1.FileName;
}

private void button4_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox4.Text = openFileDialog1.FileName;
}

private void button5_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox5.Text = openFileDialog1.FileName;
}

private void button6_Click(object sender, EventArgs e)
{
button1.Dispose();
button2.Dispose();
button3.Dispose();
button4.Dispose();
button5.Dispose();
//設置 Timer 的相關資料
System.Timers.Timer tmr = new System.Timers.Timer(10000); //設置間隔時間為10000毫秒
tmr.Elapsed += new System.Timers.ElapsedEventHandler(ok_next); //到達時間的時候執行事件
tmr.AutoReset = false; //設置是執行一次(false)還是一直執行(true)
tmr.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件

//無秒數 Run P1
System.Diagnostics.Process p1 = new System.Diagnostics.Process();
p1.StartInfo.FileName = textBox1.Text.ToString();
p1.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (p1.StartInfo.FileName != "")
{
p1.Start();
}

}

public void ok_next(object source, System.Timers.ElapsedEventArgs e)
{
//Run P2
System.Diagnostics.Process p2 = new System.Diagnostics.Process();
p2.StartInfo.FileName = textBox2.Text.ToString();
p2.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (p2.StartInfo.FileName != "")
{
p2.Start();
}

System.Timers.Timer tmr1 = new System.Timers.Timer(10000); //設置間隔時間為10000毫秒
tmr1.Elapsed += new System.Timers.ElapsedEventHandler(ok_next1); //到達時間的時候執行事件
tmr1.AutoReset = false; //設置是執行一次(false)還是一直執行(true)
tmr1.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件
}

public void ok_next1(object source, System.Timers.ElapsedEventArgs e)
{
//Run P3
System.Diagnostics.Process p3 = new System.Diagnostics.Process();
p3.StartInfo.FileName = textBox3.Text.ToString();
p3.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (p3.StartInfo.FileName != "")
{
p3.Start();

}

System.Timers.Timer tmr2 = new System.Timers.Timer(10000); //設置間隔時間為10000毫秒
tmr2.Elapsed += new System.Timers.ElapsedEventHandler(ok_next2); //到達時間的時候執行事件
tmr2.AutoReset = false; //設置是執行一次(false)還是一直執行(true)
tmr2.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件

}

public void ok_next2(object source, System.Timers.ElapsedEventArgs e)
{
//Run P4
System.Diagnostics.Process p4 = new System.Diagnostics.Process();
p4.StartInfo.FileName = textBox4.Text.ToString();
p4.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (p4.StartInfo.FileName != "")
{
p4.Start();
}

System.Timers.Timer tmr3 = new System.Timers.Timer(10000); //設置間隔時間為10000毫秒
tmr3.Elapsed += new System.Timers.ElapsedEventHandler(ok_next3); //到達時間的時候執行事件
tmr3.AutoReset = false; //設置是執行一次(false)還是一直執行(true)
tmr3.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件

}

public void ok_next3(object source, System.Timers.ElapsedEventArgs e)
{

//Run P5
System.Diagnostics.Process p5 = new System.Diagnostics.Process();
p5.StartInfo.FileName = textBox5.Text.ToString();
p5.StartInfo.UseShellExecute = true; //非執行檔也可以使用,若false則指定 執行檔才能執行
if (p5.StartInfo.FileName != "")
{
p5.Start();
}

//MessageBox.Show("全數執行完畢", "AUTO", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

}
}

C# 資料庫查詢 資料表紀錄

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _20090107_BCS_資料庫_表單模式_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//直接撈 TABLE表
private void button2_Click(object sender, EventArgs e)
{

using (SqlConnection aaa = new SqlConnection("Data Source=10.1.1.253;Initial Catalog=BCS;User ID=sa;Password=fuchi4728")) //開啟連線
{
aaa.Open(); //打開
//string q1 = "SELECT * ";
//string q2= " FROM IWK_ACT ";
//string q3 = " WHERE S_NO LIKE 'FT5508A08C0186%'";
//string q5 = q1 + q2 + q3;
string q5 = textBox1.Text;

SqlDataAdapter cc = new SqlDataAdapter(q5.ToString(), aaa);
DataSet km = new DataSet();
cc.Fill(km);
dataGridView1.AutoGenerateColumns = true;
DataGridView kk = new DataGridView();
kk.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.DataSource = km.Tables[0];
MessageBox.Show("查詢完了");


}

}
}
}

C# 資料庫查詢 基本指令用法

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace _20090107_BCS_資料庫_表單模式_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//單獨撈的時候
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection aaa = new SqlConnection("Data Source=10.1.1.253;Initial Catalog=BCS;User ID=sa;Password=fuchi4728")) //開啟連線
{
//做之前清資料
int dd_count = 0;
listBox1.Items.Clear();


aaa.Open(); //打開
SqlCommand ss = new SqlCommand("SELECT * FROM IWK_ACT WHERE S_NO='FT5508A08C0188U2426503'", aaa); //命令
SqlDataReader dd = ss.ExecuteReader(); //讀取
while (dd.Read())
{

listBox1.Items.Add(dd["S_NO"] + " " + dd["FUNCTION_"]);
dd_count++;
}
MessageBox.Show("查詢完了");
label1.Text = dd_count.ToString();
}



}



}
}

C# 讀檔、開檔、存檔

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace 讀入TXT檔案至TEXTBOX
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)
{
//先清空之前的資料
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();

//檔案對話方塊,只選檔案而已,沒有讀入
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;
if (openFileDialog1.FileName.IndexOf("DCN") == -1)
{
MessageBox.Show("死小古,你選錯檔案了\n\n你應該選擇由 DCN 開頭的檔案", "你選錯了");
return;
}
int qq1 = 0;
int qq2 = 0;
//按下按鈕 讀入檔案 將 textbox1內容 讀至 listbox1
System.IO.StreamReader fn = new System.IO.StreamReader(textBox1.Text, Encoding.Default);
while (fn.EndOfStream == false)
{

string aa = fn.ReadLine();

listBox1.Items.Add(aa);
//判ok到 listbox2
if (aa.IndexOf("PANEL ID OK") >= 0)
{
listBox2.Items.Add(aa);
qq1++;

}
//判NG到 listbox3
if (aa.IndexOf("Panel ID Not Found") >= 0)
{
listBox3.Items.Add(aa);
qq2++;
}
}
fn.Close();
//將數量秀出
label4.Text = qq1.ToString();
label5.Text = qq2.ToString();
}
//將 Listbox3 NG內容 存至固定位置.


private void button2_Click(object sender, EventArgs e)
{

//選擇目錄
saveFileDialog1.ShowDialog();
textBox3.Text = saveFileDialog1.FileName;

if (textBox3.Text == "")
{
MessageBox.Show("請選擇目錄,小古!");
return;
}

//Save
System.IO.StreamWriter fn = new System.IO.StreamWriter(textBox3.Text);
for (int fu = 0; fu < path =" new" text =" path.SelectedPath;" text ="=" qq1 =" 0;" qq2 =" 0;" qq3 =" 0;" qq4 =" 0;" text =" qq1.ToString();" text =" qq2.ToString();">= 0)
{
listBox1.Items.Add(xx);
//將listbox1 內檔案順序開到 listbox2 (OK),listbox3(NG)
System.IO.StreamReader fcc = new System.IO.StreamReader(xx, Encoding.Default);
while (fcc.EndOfStream == false)
{

string bb = fcc.ReadLine();

//判ok到 listbox2
if (bb.IndexOf("PANEL ID OK") >= 0)
{
listBox2.Items.Add(bb);
qq3++;

}
//判NG到 listbox3
if (bb.IndexOf("Panel ID Not Found") >= 0)
{
listBox3.Items.Add(bb);
qq4++;
}
}
fcc.Close();
//將數量秀出
label4.Text = qq3.ToString();
label5.Text = qq4.ToString();
}
}
}
}
}

[OTHER] 解決 硬碟變成 RAW 格式的方法





最近碰到一個問題,某作業站是


需要持續寫入大量資料做儲存,


儲存的方式是利用區域網路連接


到網路硬碟,剛好這個硬碟又壞了。
























將硬碟裝上其他電腦之後,開完機 一看狀態果然變成 RAW 了。。。




上 Google 爬文一下,發現有很多都是介紹


使用 EasyRecovery 這套軟體。。




安裝後,執行救援。。。因為硬碟很大,有500 GB 跑了一天終於跑完了。。


結果不能抓檔案(殘念!!),原因是因為試用版。。




最後找到 黑X版 EasyRecovery 6.10 簡體版本,終於成功救援。




不過要記得,掃瞄的模式是要選成 『高級』的模式才有辦法救援,簡單模式下雖然可以找的到


檔案,可是卻無法下載。