2010年2月25日 星期四

微軟新注音輸入法2007&微軟新倉頡輸入法2007

本版本有移除選項,用不順就到控制台把它刪掉吧~

介紹

一、這輸入法是從 Office 2007 擷取出來所以才會這樣大,微軟官方沒有單出新注音2007。
二、這版的智慧輸入(常用字詞自動學習辨識)比新注音2003版改進不少,使用舊版的朋友可以試試看。
三、新輸入法 2007 解決了 2003 學習辭典與語音造成當機的問題。

新注音輸入程式的很多功能確實在2003已實現,但比較微軟拼音2003和2007的比較來說。新注音2007比2003的改進要大得多。
1.注音符號輸入模式也可以像羅馬拼音輸入模式一樣,可以透過內容設置不必輸入聲調符號了。
2.微軟新注音的句子轉換準確性更高了。
3.可以自由訂製用戶的語言介面。這對於非繁體作業系統的人士多了一個很好的選擇。
4.可以輸入幾乎所有的漢字字符。
5.首次支援直接輸出簡體漢字。這無形中對於簡體中文輸入法來說,又多了一個不錯的選擇。
6.輸出的簡體字是用的大陸字符集,繁體漢字用的是繁體的字符集。這對於微軟的拼音輸入法輸入的繁體漢字來說可謂是根本不同的支援。

微軟新注音輸入法2007
ime2007.rar
ime2007.r00

微軟新注音輸入法2003
TINTSETP.MSI

微軟新倉頡輸入法2003
CINTSETP.MSI

微軟輸入法整合器2003
SINTSETP.MSI

移除 Office 新輸入法 2007 的方法

於「開始」→「執行」,或由「命令提示字元 (cmd)」中,輸入以下字元

簡體拼音輸入法 2007:
msiexec.exe /X {90120000-0028-0804-0000-0000000FF1CE}

日文輸入法 2007:
msiexec.exe /X {90120000-0028-0411-0000-0000000FF1CE}

韓文輸入法 2007:
msiexec.exe /X {90120000-0028-0412-0000-0000000FF1CE}

繁體中文輸入法 2007:
msiexec.exe /X {90120000-0028-0404-0000-0000000FF1CE}

2010年2月24日 星期三

移除XP正版驗證WGA (Windows Genuine Advantage)

WGA(Windows Genuine Advantage)是微軟用來檢查你的Windows XP是不是正版的程式,而在很多時候是使用者不小心按了同意之下安裝的,如果你現在深受WGA之苦的話,最快的方法就是把這個不受歡迎的程式移除掉。

尤其是現在微軟正在大力推廣Windows 7,所以最近就會有一連串的「動作」強迫你轉換到Windows 7,這種的手法個人是很不認同但是也是沒有辦法啊!

由於WGA的程式被設計成最優先的載入順序(在你的電腦開機還沒有登入時WGA就已經在運作了),而且新版的也不讓你用「新增移除程式」來移除它,但是一樣用我一直在用的「DOS大法」就可以輕鬆移除,你看一下移除的步驟是不是跟殺毒很像啊?

用DOS移除WGA
還是老方法請你從【開始】→【所有程式】→【附屬應用程式】→【命令提示字元】開啟一個「DOS視窗」,首先輸入以下指令:
cd \windows\system32
del wgalogon*.*
del wgatray*.*
在你輸入第二行的指令之後,應該會有「WgaLogon.exe存取被拒」或「WgaLogon.dll存取被拒」的錯誤訊息出現,如果是「WgaLogon.exe存取被拒」請再下這一行指令:
ren WgaLogon.exe WgaLogon.old
如果是「WgaTray.exe存取被拒」請下這一行指令:
ren WgaTray.exe WgaTray.old
如果是「WgaLogon.dll存取被拒」請再下這一行指令:
ren WgaLogon.dll WgaLogon.bak
接下來要把正在執行的一個.dll檔註消,請輸入以下指令:
regsvr32 LegitCheckControl.dll /u
成功的話會出現移除成功的視窗

再接下來
del LegitCheckControl.dll
把這個.dll刪除,完成後關閉DOS視窗,重開機,你應該就不會再看到你是盜版的受害者這樣子的字眼了。全部的過程就像下面這一張圖裡面的步驟:

最後還有一個動作不執行也沒關係,一樣在DOS視窗:
cd \windows\system32
del Wga*.*
把剛才改名的檔案清掉,再來就是用CCleaner 電腦清道夫將登錄表清一清就大功告成了!

不要安裝WGA方法
經過以上的步驟之後應該就不會再出現WGA驗證錯誤的訊息了,但是還有可能會在電腦開機時出現以下的要求安裝WGA驗證程式的畫面,如果你直接按【取消】那每一次開機還是會跳出這個畫面來煩你。

步驟一:正確的拒絕方法是請你先按【下一步】
步驟二:再來選取「我不同意」的選項再按【下一步】
步驟三:最後才按【取消】
步驟四:這樣子你才能真正免於WGA驗證的困擾。

參考 http://gordon168.tw/?p=267

移除Office正版驗證OGA (Office Genuine Advantage)

起源
這是微軟用來驗證你電腦所使用的Office系列軟體是否為正版的程式,最近因為微軟更新了OGA的驗證機制,所以許多人的電腦都出現了「您所使用的Office不是正版」的警告訊息。

而事實上OGA並不是必裝的更新選項,但是有許多人的電腦卻莫名其妙的裝了這個更新,而結果剛開始是提出上述的警告,到最後甚至會在你的Word, Excel文件上面加註這是由一個不是正版程式所產生的文件,這一招真的就很狠了,你如果有一份被「註記」的文件那應該是不好意思給別人吧?

如果你每次開機都會出現這個錯誤訊息:「Office Genuine Advantage發生問題,必須關閉,謹此致歉。」

那你應該是莫名其妙裝了Office Genuine Advantage。

如何移除Office Genuine Advantage
方法一不管你是如何安裝OGA的,要移除它方法跟移除WGA驗證裡面的類似,請你先關閉使用中的Office程式,再由【開始】→【所有程式】→【附屬應用程式】→【命令提示字元】開啟一個「DOS視窗」,首先輸入以下指令:
cd c:\windows\system32
dir oga*.*
看是不是可以看到OGAEXEC.exe, OGAAddin.dl 和 OGACheckControl.dll 這三個oga開頭的檔案?如果看不到這三個檔案請不要再往下面執行了,因為一定會出現錯誤。

看不到的原因應該是你目前的工作目錄不對,工作目錄就是cd c:\windows\system32這一行指令的目的,但是如果你的Windows是安裝在D磁碟那就要改成cd d:\windows\system32,如果你的系統目錄不叫windows也請你改成你自己設定名稱。

如果沒錯的話請你在DOS視窗先執行下列指令:
regsvr32 /u OGACheckControl.dll
系統會告訴你已經成功解除OGACheckControl.dll

最後再用DOS指令
del oga*.*
完成後電腦重開機就可以將OGA解證解除了,方法很簡單吧?

注意事項:
如果你「」dir oga*.*出現的不只有三個檔案,那就要一個一個的砍檔,DOS指令不會的話用Windows檔案總管也可以,否則誤砍檔案我可不負責喔!

如果真的都不行那就來暴力一點的:請用Ubuntu Live CD這一篇的方法用Ubuntu光碟片開機,再直接把那三個檔案砍了就一定可以了。

方法二
請由【開始】→【執行】有「開啟」後面的欄位中貼上下面的程式碼
msiexec.exe /uninstall {B2544A03-10D0-4E5E-BA69-0362FFC20D18}
然後按下【確定】執行…

接下來照著畫面上的指示移除Office正版驗證就可以了。

參考 http://gordon168.tw/?p=329

如何取得目前程式執行的根目錄

若在 asp.net 裡想取得根目錄的實體位置,可以寫成
string path = Server.MapPath("/");

若在 Windows Forms可以寫成
string path = Application.StartupPath ;

若在 Console Application 可以寫成
string path=System.AppDomain.CurrentDomain.BaseDirectory;

如果您想寫一支 dll 專案,供上述專案類型參考並叫用, 而您想在 dll 取得目前該專案的根目錄, 則可以寫成
string path=System.AppDomain.CurrentDomain.BaseDirectory;

是可以在上述三種專案裡同時正確執行。

C# TextBox 全選問題

TextBox 全選問

private void textBox1_Enter(object sender, EventArgs e)
{
textBox1.SelectAll();
}
private void textBox1_MouseClick(object sender, EventArgs e)
{
textBox1.SelectAll();
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1 .GotFocus += new EventHandler(textBox1_Enter);
textBox1.MouseClick +=new MouseEventHandler(textBox1_MouseClick);
}


http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/bb792ca0-386c-4737-980a-0a3a4e2d190f

[C#] 鍵盤 KeyChar 值的取得

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{
char Key_Char = e.KeyChar;//判斷按鍵的 Keychar
MessageBox.Show(((int)(Key_Char)).ToString());//轉成整數顯示
}

C# textBox1,只能輸入0~9,一個小數點,Backspace ,ENTER

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar == (char)Keys.Back||e.KeyChar==(char)Keys.Enter)
{
return;
}

if (e.KeyChar == '.')
{
foreach (char i in textBox1.Text)//判定textBox1是否有小數點
{
if (i == '.')
e.Handled = true;//有
}
return;
}

if (e.KeyChar < '0' || e.KeyChar > '9' )
{
e.Handled = true;
}
}

2010年2月21日 星期日

【VB.NET】亂數

Dim RndNum As Random
RndNum.Next() '產生大於等於0,小於2,147,483,647之亂數
RndNum.Next(10) '產生大於等於0,小於10之亂數
RndNum.Next(10, 20) '產生大於等於10,小於20之亂數
RndNum.NextDouble() '產生大於或等於 0.0,且小於 1.0雙精度浮點數
RndNum.NextBytes(bytes) '以亂數填入指定位元組陣列的元素

2010年2月11日 星期四

MSSQL 無法執行分散式查詢 或 跨主機查詢資料庫時

在使用跨主機查詢資料庫遇到的問題,SELECT之後出現

SQL Server 已封鎖元件 'XXX XXX XXXXXXXX' 的 XXXXXXX 'xxx xxx xxxxxxx'之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'XXX XXXX XXXXXX的使用。如需有關啟用 'XXX XXX XXXXXX'的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。



SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請參閱《SQL Server 線上叢書》中的<介面區組態>(Surface Area Configuration)。

路徑:
英文版:【開始】→【程式集】→【Microsoft SQL Server 2005】→【 Configuration Tools】→【SQL Server Surface Area Configuration】
中文版:開始 → 程式集 → Microsoft SQL Server 2005 → 組態工具 → SQL Server 介面區組態

設定:
英文版:點選“Surface Area Configuration for Featrues”後,再點選MSSQLSERVER↘Database Engine↘Ad Hoc Remote Querise,在右邊即會看到《Enable OPENROWSET and OPENDATASOURCE support選項》,預設是沒有勾選的。將其勾選後,再按Apply,確定即可。
中文版:選【功能的界面區組態】勾選 【啟用 OPENROWSET 和 OPENDATASOURCE 支援】




SQL 2000的話

若你確認需要啟用或是停用介面區組態上的功能,請參考以下的步驟:
使用 SQL Server Management Studio 中的「Facet」來設定啟用和停用 SQL Server 功能。
1. 使用 SQL Server Management Studio,連接到目標的 SQL Server。
2. 在 [物件總管] 中,點選目標伺服器,滑鼠右鍵,選擇「Facet」。
3. 在「檢視 Facet」視窗,在右邊的「Facet」區域,選擇「介面區組態」。
4. 在右下角的「Facet屬性」區域,選擇所需要啟用或是停用的功能。

在「介面區組態」部分,可以設定的功能有:
1. 「AdHocRemoteQueriesEnabled」
是否要啟用「特定分散式查詢(Ad Hoc Distributed Queries)」。根據預設,SQL Server 不允許使用 OPENROWSET 和 OPENDATASOURCE 進行特定分散式查詢。當啟用選項時,SQL Server 就會允許特定存取。當此選項未設定或設定為 0 時,SQL Server 就不允許特定存取。

2. 「ClrIntegrationEnabled」
使用「clr enabled」選項來指定 SQL Server 是否能執行使用者組件。
WOW64 伺服器必須重新啟動之後,對此設定的變更才能生效。對於其他伺服器類型,則不需要重新啟動。

3. 「DatabaseMailEnabled」
是否要啟用「Database Mail XP」選項
設定立即生效,伺服器不必停止再重新啟動。

4. 「OleAutomationEnabled」
是否要啟用啟用「OLE Automation Procedures」選項。
使用 Ole Automation Procedures 選項可指定 OLE Automation 物件是否可在 Transact-SQL 批次內部啟動。您也可以使用以原則為基礎的管理或 sp_configure 預存程序來設定這個選項。
啟用 OLE Automation Procedures 時,對 sp_OACreate 的呼叫會啟動 OLE 共用執行環境。

5. 「RemoteDacEnabled」
是否啟用「remote admin connections」選項。
SQL Server 會提供專用管理員連接 (DAC)。
DAC 可讓系統管理員存取執行中的伺服器,如此一來,即使伺服器遭到鎖定或在異常狀態中執行,而且未回應 Database Engine 連接時,也能執行診斷功能或 Transact-SQL 陳述式,或針對伺服器上的問題進行疑難排解。
依預設,只能從伺服器上的用戶端使用 DAC。

根據預設,DAC 只會接聽回送 IP 位址 (127.0.0.1)、通訊埠 1434。

6. 「ServiceBrokerEndpointActive」
依預設,SQL Server 的執行個體不包含 Service Broker 端點。
因此,Service Broker 預設不會透過網路傳送或接收訊息。您必須建立 Service Broker 端點,以在 SQL Server 執行個體以外傳送或接收訊息。

端點是 SQL Server 物件,代表 SQL Server 透過網路進行通訊的能力。每個端點都支援特定類型的通訊。例如,HTTP 端點可讓 SQL Server 處理特定的 SOAP 要求。Service Broker 端點會設定 SQL Server,以透過網路傳送和接收 Service Broker 訊息。

Service Broker 端點提供了傳輸安全性和訊息轉送的選項,並在特定 TCP 通訊埠編號上進行接聽。

7. 「SoapEndpointsEnabled」
是否啟用「SOAP 端點」選項。

8. 「SqlMailEnabled」
使用「SQL Mail XPs」選項,啟用此伺服器的 SQL Mail。設定立即生效,伺服器不必停止再重新啟動。
SQL Mail 已經在 SQL Server 2005版本,被 Database Mail所取代。

未來的 Microsoft SQL Server 版本將移除這項功能。
請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。. 若要從 Microsoft SQL Server 傳送郵件,請使用 Database Mail。

9. 「WebAssistantEnabled」
是否可以執行「Web 助理預存程序(Web Assistant Procedures)」來產生 HTML 程式碼。
在 SQL Server 2005部分已經被取代。

10. 「XPCmdShellEnabled」
是否啟用xp_cmdshell 選項。

此為是 SQL Server 2005 所推出的新功能,為伺服器的組態選項,可讓系統管理員控制 xp_cmdshell 擴充預存程序是否可在系統上執行。
根據預設,xp_cmdshell 選項會在新安裝上停用,而且可以使用以原則為基礎的管理或執行 sp_configure 系統預存程序來啟用。

讓網頁自動更新時間

方法:將以下程式放至<body></body>

<Script Language="JavaScript">
<!-- document.write ("Last Updated:"+document.lastModified); -->
</Script>

網頁的更新和瀏覽量有關,那是不是表示常更新的會比較容易讓搜尋引擊找到呢?

JavaScrip HttpRequest物件及屬性

MSXML元件提供一個HttpRequest物件, 它能讓使用者傳送HTTP請求到Web Server, 並取得伺服器的回應.

建立HttpRequest物件步驟:

var xmlHttp=new ActiveObject("Microsoft.XMLHTTP") ==> Javascript

Set xmlHttp=CreateObject("Microsoft.XMLHTTP") ==>VBScript

HTTPRequest物件的屬性
readyState 目前狀態的長整數, 值4 表示請求處理完成
responseBody 取得伺服器的回應, 傳回位元組陣列
responseStream 取得伺服器的回應, 傳回Istream的資料流物件
responseText 取得伺服器的回應, 傳回字串
responseXML 取得伺服器的回應, 傳回XML DOM物件
status 取得HTTP狀態碼, 例如200, 302等
statusText 取得HTTP狀態訊息字串, 例如: OK
onreadystatechange 執行ReadyState屬性改變的事件處理並設定處理程序

HttpRequest物件的方法
abort( ) 取消目前的HTTP請求
getAllResponseHeaders( ) 取得全部HTTP Header的內容
getResponseHeader(HeaderName) 取得指定HTTP Header名稱的內容
open(method, url, async, userid, pwd) 開啟HTTP請求
send() 傳送HTTP請求到伺服器
serRequestHeader(HeaderName, value) 使用者自定得HTTP Header資料

ASP.NET VB 修改和刪除 Cookie

有時候您可能要修改 Cookie,或許是變更其值或延長其到期時間 (請記住,您無法讀取到期日,因為瀏覽器並未傳送到期日資訊至伺服器)。

當然,您實際上並非直接變更 Cookie。雖然您可以從 Request.Cookies 集合取得 Cookie 並加以管理,但 Cookie 本身仍存在使用者硬碟中。因此修改 Cookie 事實上是以新的值建立新的 Cookie,然後將此 Cookie 傳送至瀏覽器來覆寫用戶端上的舊版本。

下列範例顯示如何變更儲存使用者造訪網站次數的 Cookie 值:
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
counter = 0
Else
counter = CInt(Request.Cookies("counter").Value)
End If
counter += 1
Response.Cookies("counter").Value = counter.ToString
Response.Cookies("counter").Expires = DateTime.Now.AddDays(1)

Dim ctrCookie As HttpCookie
Dim counter As Integer
If Request.Cookies("counter") Is Nothing Then
ctrCookie = New HttpCookie("counter")
Else
ctrCookie = Request.Cookies("counter")
End If
counter = CInt(ctrCookie.Value) + 1
ctrCookie.Value = counter.ToString
ctrCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(ctrCookie)
刪除 Cookie

刪除 Cookie —實際將它從使用者的硬碟中移除 — 也是修改的一種。您不可以直接移除 Cookie,因為此 Cookie 在使用者的電腦中。不過,您可以讓瀏覽器為您刪除 Cookie。技巧在於以上述方式修改 Cookie (也就是使用相同名稱建立新的 Cookie),但是將 Cookie 的到期日設定為比今天還早。當瀏覽器檢查 Cookie 到期日時,瀏覽器就會捨棄已經過時的 Cookie。

因此,刪除任何一個 Cookie 與建立 Cookie 的方法相同,只是使用比今天還早的日期。下列範例比刪除單一 Cookie 還有趣 — 其中顯示刪除目前網域中所有 Cookie 的一種方法:
Dim i As Integer
Dim cookieName As String
Dim limit As Integer = Request.Cookies.Count - 1
For i = 0 To limit
aCookie = Request.Cookies(i)
aCookie.Expires = DateTime.Now.AddDays(-1)
Response.Cookies.Add(aCookie)
Next
修改或刪除子機碼

修改個別子機碼與建立子機碼的方法相同:
Response.Cookies("userInfo")("lastVisit") = DateTime.Now.ToString
Response.Cookies("userInfo").Expires = DateTime.Now.AddDays(1)
更複雜的問題是如何個別刪除子機碼。您不僅是重設 Cookie 的到期時間,因為那會移除整個 Cookie 而不是單一子機碼。解決方法是管理保存子機碼的 Cookie Values 集合。首先從 Request.Cookies 物件中取得 Cookie 以重新建立 Cookie。然後呼叫 Values 集合的 Remove 方法,將要刪除的子機碼名稱傳送給 Remove 方法。然後和平常一樣,您可以將修改過的 Cookie 加入 Response.Cookies 集合中,將修改完成的 Cookie 傳回給瀏覽器。

下列程式碼顯示如何刪除子機碼。在此範例中,以變數來指定要移除的子機碼名稱。
Dim subkeyName As String
subkeyName = "userName"
Dim aCookie As HttpCookie = Request.Cookies("userInfo")
aCookie.Values.Remove(subkeyName)
aCookie.Expires = DateTime.Now.AddDays(1)
Response.Cookies.Add(aCookie)<SPAN style="DISPLAY: none" id=1255069907985S _fck_bookmark="true"> </SPAN>

JavaScript Javascript 幾秒後自動更新頁面 (自動執行)

setTimeout的格式:
window.setTimeout( " JavaScript 程式碼 " , 時間間隔 );
timer = self.setTimeout("history.go(0)",30000); //30秒更新

時間間隔的時間單位是 1 / 1000 秒

如果不只一行程式碼,則在兩行中間加上分號 (;)
window.setTimeout( " Code1 ; Code2 " , 時間間隔 );

setTimeout( )並不會一直循環的呼叫,只會執行一次

若要一直循環執行,請改用
setInterval的格式:
timer = window.setInterval("Credload()", 1000);

泛型處理常式(Generic Handler .ashx) 抓 Session

<%@ WebHandler Language="C#" Class="Handler2" %>

using System;
using System.Web;
using System.Web.SessionState;

public class Handler2 : IHttpHandler, IReadOnlySessionState{

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Session.Add("XXX", 104);
context.Response.Write(context.Session["XXX"]);

}

public bool IsReusable {
get {
return false;
}
}
}

[JavaScript][document] 開啟瀏覽器視窗後最大化視窗

//視窗最大化

//將視窗左上端點位置移到螢幕最左上角
top.window.moveTo(0, 0);

//視窗大小重新調整
if (document.all)
{
top.window.resizeTo(screen.availWidth, screen.availHeight);
}
else if (document.layers || document.getElementById)
{
if (top.window.outerHeight < screen.availHeight || top.window.outerWidth < screen.availWidth)
{
top.window.outerHeigh = screen.availHeight;
top.window.outerWidth = screen.availWidth;
}
}

JavaScript 寫入, 讀取, 刪除 Cookie 值

function SetCookie(name,value,expiry,path,domain,secure){
var NameString = name + "=" + value;
var ExpiryString = (expiry == null) ? "" : " ;expires = "+ expiry.toGMTString();
var PathString = (path == null) ? "" : " ;path = "+ path;
var DomainString = (path == null) ? "" : " ;domain = "+ domain;
var SecureString = (secure) ?";secure" :"";
document.cookie = NameString + ExpiryString + PathString + DomainString + SecureString;
}

function GetCookie(name) {
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}

function DelCookie(name){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

[JavaScript] setInterval 和 setTimeout 的區別

1.setInterval 裡設定的程式只會被重複觸發,直到執行了 clearInterval 為止

2.setTimeout 裡設定的程式只會被觸發一次

3.setInterval 和 setTimeout 都是利用時間去觸發某個動作的執行;並且下一行程式不會因為時間設定的長短而被延遲或影響;也就是說當 setInterval 和 setTimeout 那行程式被執行的時候,那個觸發的動作就被交給 window 物件去處理了,其他的程式會被繼續執行,不會受到影響

4.setInterval 和 setTimeout 在執行時都會產生 timerID 以便在某些狀況下需要用 clearInterval 和 clearTimeout 去取消那些觸發的動作

2010年2月8日 星期一

ASP.NET VB 如何讀取文字檔

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show(GetTextString)
End Sub
    Private Function GetTextString() As String
Dim value As String = ""
Dim a As String = ""
Dim MySF As StreamReader = New StreamReader("c:\1.txt", System.Text.Encoding.Default)

'value = MySF.ReadToEnd() '讀取全部會包含換行符號
Do While Not MySF.EndOfStream
value &= MySF.ReadLine '讀取單行
Loop
Return value
End Function

ASP.NET VB 如何用.NET發mail

'這裡需要一個Button

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim newMail As New System.Net.Mail.MailMessage
Dim ToAddress(,) As String = {{"to@yahoo.com.tw", "to"}, {"to@msa.hinet.net", "to"}}
Dim CCAddress(,) As String = {{"cc@yahoo.com.tw", "cc"}, {"cc@msa.hinet.net", "cc"}}
Dim BccAddress(,) As String = {{"bcc@yahoo.com.tw", "bcc"}, {"bcc@msa.hinet.net", "bcc"}}
Dim AttachFile() As String = {"C:\temp\123.xls", "C:\temp\456.xls"}
Dim smtpMail As New System.Net.Mail.SmtpClient

With newMail
.From = New System.Net.Mail.MailAddress("from@msa.hinet.net", "from") '寄件者
.Body = "Hello Every Body!!" '內文
.Subject = "測試資料!!" '主旨
.BodyEncoding = System.Text.Encoding.GetEncoding("BIG5") '編碼方式

For i As Int32 = 0 To ToAddress.GetUpperBound(1) '收信人
.To.Add(New System.Net.Mail.MailAddress(ToAddress(i, 0), ToAddress(i, 1)))
Next
For i As Int32 = 0 To CCAddress.GetUpperBound(1) '副本
.CC.Add(New System.Net.Mail.MailAddress(CCAddress(i, 0), CCAddress(i, 1)))
Next
For i As Int32 = 0 To BccAddress.GetUpperBound(1) '密件副本
.Bcc.Add(New System.Net.Mail.MailAddress(BccAddress(i, 0), BccAddress(i, 1)))
Next
For i As Int32 = 0 To BccAddress.GetUpperBound(1) '夾檔
.Attachments.Add(New System.Net.Mail.Attachment(AttachFile(i)))
Next
.IsBodyHtml = True '是否為HTML格式
.Priority = Net.Mail.MailPriority.Normal '優先權
End With
Try
smtpMail.Host = "msa.hinet.net"
smtpMail.SendAsync(newMail, "TEST")
Catch ex As Exception
MsgBox(ex.InnerException)
End Try
End Sub

C# 檢查是否為數字 或 字串

可以用在 Textbox 上來檢查 使用者 輸入的時候 是 純文字 或 純數字
   public bool CheckIsNumber(string s)
{
char[] tmp = s.ToCharArray();
for (int i = 0; i < tmp.Length; i++)
{
if ((int)tmp[i] < 48 || (int)tmp[i] > 57)
return false;

}
return true;
}
                 實做:
if (CheckIsNumber(textBox2.Text) == true)
{
MessageBox.Show("你輸入的是 純數字");
}
else
{
MessageBox.Show("請輸入 數字!!");
}
轉自http://kuomingwang.blogspot.com/2009/03/c.html

2010年2月7日 星期日

如何讓IE7中(window.close)關閉瀏覽器時不出現詢問

window.opener=null;
window.close();
但是這個在IE7卻無效了,要改成用以下的方式

window.open('','_self','');
window.close();

所以在ASP.NET中,既可以這樣做:

ASP.NET VB
Page.ClientScript.RegisterStartupScript(Me.GetType, "Test Close Window", "<script>window.open('','_self','');window.close();</script>")

ASP.NET C#
ScriptManager.RegisterStartupScript(this, this.GetType(), "ALERT", "alert('Test Close Window');window.open('','_self','');window.close();", true);

參考網頁http://www.dotblogs.com.tw/topcat/archive/2008/03/31/2365.aspx

MSSQL 跨資料庫主機查詢

連結SQL資料庫
select * from OPENDATASOURCE('SQLOLEDB','Data Source=sa;User ID=sa;Password=')...xxx

完整語法 SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=主機位置;User ID=帳號;Password=密碼').資料庫名稱.DBO.Table名稱

連結 Access 資料庫
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="C:\xxx\xx.mdb";Jet OLEDB:Database Password=')...xxx

ps.注意!! C:\xxx\xx.mdb 指的是 在伺服器上的實體路徑,而不是你本機的路徑喔!!(當然,如果你是在本機資料庫伺服器上測的話,哪就是本機路徑了)

參考網站 http://cp0501.blogspot.com/2008/02/blog-post.html

如何備份MSSQL並透過批次檔自動上傳至FTP

在SQL的 Client可以下 SQL Command ,就能透過 SQL 語法來產生備份檔

BACKUP DATABASE [mydb] TO DISK = N'C:\mydb.bak' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10

然後再透過系統的自動排程,自動執行以下批次內容,上傳到遠端主機

open 192.168.1.100 (你的 ftp server ip)
userid (ftp 的帳號)
password (ftp 密碼)
binary
put C:\BACKUP\SQLDB.BAK
bye

2010年2月3日 星期三

Windows Media Player 網頁播放器參數

網頁播放器的參數含義 Windows Media Player 網頁播放器 參數含義(默認0為否,-1或1為是)

<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="286" height="225">
<param name="AudioStream" value="-1">
<param name="AutoSize" value="-1">
<!--是否自動調整播放大小-->
<param name="AutoStart" value="-1">
<!--是否自動播放-->
<param name="AnimationAtStart" value="-1">
<param name="AllowScan" value="-1">
<param name="AllowChangeDisplaySize" value="-1">
<param name="AutoRewind" value="0">
<param name="Balance" value="0">
<!--左右聲道平衡,最左-9640,最右9640-->
<param name="BaseURL" value>
<param name="BufferingTime" value="15">
<!--緩衝時間-->
<param name="CaptioningID" value>
<param name="ClickToPlay" value="-1">
<param name="CursorType" value="0">
<param name="CurrentPosition" value="0">
<!--當前播放進度 -1 表示不變,0表示開頭 單位是秒,比如10表示從第10秒處開始播放,值必須是-1.0或大於等於0-->
<param name="CurrentMarker" value="0">
<param name="DefaultFrame" value>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="0">
<!--視頻1-50%, 0-100%, 2-200%,3-全屏 其它的值作0處理,小數則採用四捨五入然後按前的處理-->
<param name="Enabled" value="-1">
<param name="EnableContextMenu" value="-1">
<!-是否用右鍵彈出菜單控制-->
<param name="EnablePositionControls" value="-1">
<param name="EnableFullScreenControls" value="-1">
<param name="EnableTracker" value="-1">
<!--是否允許拉動播放進度條到任意地方播放-->
<param name="Filename" value="/blog/01.wma" valuetype="ref">
<!--播放的文件地址-->
<param name="InvokeURLs" value="-1">
<param name="Language" value="-1">
<param name="Mute" value="0">
<!--是否靜音-->
<param name="PlayCount" value="10">
<!--重複播放次數,0為始終重複-->
<param name="PreviewMode" value="-1">
<param name="Rate" value="1">
<!--播放速率控制,1為正常,允許小數-->
<param name="SAMIStyle" value>
<!--SAMI樣式-->
<param name="SAMILang" value>
<!--SAMI語言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="SendOpenStateChangeEvents" value="-1">
<param name="SendWarningEvents" value="-1">
<param name="SendErrorEvents" value="-1">
<param name="SendKeyboardEvents" value="0">
<param name="SendMouseClickEvents" value="0">
<param name="SendMouseMoveEvents" value="0">
<param name="SendPlayStateChangeEvents" value="-1">
<param name="ShowCaptioning" value="0">
<!--是否顯示字幕,為一塊黑色,下面會有一大塊黑色,一般不顯示-->
<param name="ShowControls" value="-1">
<!--是否顯示控制,比如播放,停止,暫停-->
<param name="ShowAudioControls" value="-1">
<!--是否顯示音量控制-->
<param name="ShowDisplay" value="0">
<!--顯示節目信息,比如版權等-->
<param name="ShowGotoBar" value="0">
<!--是否啟用上下文菜單-->
<param name="ShowPositionControls" value="-1">
<!--是否顯示往前往後及列表,如果顯示一般也都是灰色不可控制-->
<param name="ShowStatusBar" value="-1">
<!--當前播放信息,顯示是否正在播放,及總播放時間和當前播放到的時間-->
<param name="ShowTracker" value="-1">
<!--是否顯示當前播放跟蹤條,即當前的播放進度條-->
<param name="TransparentAtStart" value="-1">
<param name="VideoBorderWidth" value="0">
<!--顯示部的寬部,如果小於視頻寬,則最小為視頻寬,或者加大到指定值,並自動加大高度.此改變只改變四周的黑框大小,不改變視頻大小-->
<param name="VideoBorderColor" value="0">
<!--顯示黑色框的顏色, 為RGB值,比如ffff00為黃色-->
<param name="VideoBorder3D" value="0">
<param name="Volume" value="0">
<!--音量大小,負值表示是當前音量的減值,值自動會取絕對值,最大為0,最小為-9640-->
<param name="WindowlessVideo" value="0">
<!--如果是0可以允許全屏,否則只能在窗口中查看-->
</object>

上面的這個播放器是老式的那種,6.4版本!新式播放器是在MediaPlayer9.0以後出現的,也就是說只有裝了9.0或9.0以上的播放器才能正常使用的。


-------------------------------------------------------------------------------

下面是新式播放器代碼,相對以前的來說要簡單很多:
<object id="player" height="64" width="260" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!--是否自動播放-->
<param NAME="Balance" VALUE="0">
<!--調整左右聲道平衡,同上面舊播放器代碼-->
<param name="enabled" value="-1">
<!--播放器是否可人為控制-->
<param NAME="EnableContextMenu" VALUE="-1">
<!--是否啟用上下文菜單-->
<param NAME="url" value="/blog/1.wma">
<!--播放的文件地址-->
<param NAME="PlayCount" VALUE="1">
<!--播放次數控制,為整數-->
<param name="rate" value="1">
<!--播放速率控制,1為正常,允許小數,1.0-2.0-->
<param name="currentPosition" value="0">
<!--控件設置:當前位置-->
<param name="currentMarker" value="0">
<!--控件設置:當前標記-->
<param name="defaultFrame" value="">
<!--顯示默認框架-->
<param name="invokeURLs" value="0">
<!--腳本命令設置:是否調用URL-->
<param name="baseURL" value="">
<!--腳本命令設置:被調用的URL-->
<param name="stretchToFit" value="0">
<!--是否按比例伸展-->
<param name="volume" value="50">
<!--默認聲音大小0%-100%,50則為50%-->
<param name="mute" value="0">
<!--是否靜音-->
<param name="uiMode" value="mini">
<!--播放器顯示模式:Full顯示全部;mini最簡化;None不顯示播放控制,只顯示視頻窗口;invisible全部不顯示-->
<param name="windowlessVideo" value="0">
<!--如果是0可以允許全屏,否則只能在窗口中查看-->
<param name="fullScreen" value="0">
<!--開始播放是否自動全屏-->
<param name="enableErrorDialogs" value="-1">
<!--是否啟用錯誤提示報告-->
<param name="SAMIStyle" value>
<!--SAMI樣式-->
<param name="SAMILang" value>
<!--SAMI語言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
</object>

-------------------------------------------------------------------------------


Real Player 網頁播放器 參數含義

參數:autostart 屬性:True或是False 作用:指定是否自動播放指定的源文件
參數:backgroundcolor 屬性:任何用符號「#」開頭的16進制數值或是任何預定義的顏色作用:指定圖像窗口的背景顏色
參數:center 屬性:True或是False 作用:指定片斷使用初始編碼大小播放,並且在圖像窗口的中央。
參數:classid 屬性:"clsid:CFCDAA03-8BE4-1lcf-B84B0020AFBBCCFA:** 作用:用於指定ActiveX控件的唯一的字符串標示,可以認出嵌入的RealPalyer播放器。
參數:console 屬性:任何字符串作用:可以將各種不同的RealPlayer控制聚集在網頁上,這樣它們可以交互使用或是保持獨立,而且互相不影響
參數:controls 屬性:ImageWindow,All,ControlPanel,PlavButton,PlayOnlyButton, PauseButton,StopButton,FFCtrl,RWCtrl,MuteCtrl,MuteVolume,VolumeSlider, PositionSlider,TACCtrl,HomeCtrl,InfoVolumePanel,InfoPanel,StatusBar, StatusField,PositionField 作用:可以讓你指定那些控制是可見的。
參數:height 屬性:任何整數值作用:指定RealPlayer元素的高度,單位:像素
參數:id 屬性:任何字符串作用:為標籤中的RealPlayer元素指定名字。
參數:imagestatus 屬性:True或是False 作用:指定是否在圖像窗口中顯示狀態信息,默認值是true
參數:loop 屬性:True或是False 作用:可以讓你指定片斷是否無限循環
參數:maintainaspect 屬性:True或是False 作用:默認RealPlayer拉伸所有的片斷來充滿整個圖像窗口。
參數:name 屬性:任何字符串作用:為標籤中的RealPlayer元素指定名字(在標籤中使用id)
參數:nojava 屬性:True或是False 作用:避免啟動Java虛擬機
參數:nolabels 屬性:True或是False 作用:可以禁止顯示標題或是版權信息(realplayer5.0以上時,它是垃圾...)
參數:nologo 屬性:True或是False 作用:避免RealPlayer啟動時在圖像窗口中顯示
參數:numloop 屬性:任何整數值作用:讓你能夠指定文件片循環的次數,不需要參數loop
參數:prefetch 屬性:True或是False 作用:指定在播放前,RealPlayer是否可以獲得流描述信息,默認值是False
參數:region 屬性:任何字符串作用:同SMIL一起使用。允許你指定使用HTML代替SMIL
參數:scriptcallbacks 屬性:用逗號分割的列表作用:指定瀏覽器的回調監控(好高級的東東!)
參數:shuffle 屬性:True或是False 作用:同多文件片的ram文件或是SMIL文件一起使用。可以讓RealPlayer隨機播放列表中的文件
參數:src 屬性:任何合法的相對或是完整的URL 作用:指定播放的文件或是源文件的地址
參數:type 屬性:字符串作用:為嵌入插件指定MIME類型
參數:width 屬性:任何整數值作用:指定RealPlayer元素的寬度

controls的屬性含義...

組件:imagewindow
作用:視頻顯示區域

組件:All
作用:嵌入RealPlaver的所有按鈕、滑動條和信息面板

組件:ControlPanel
作用:顯示所有的控制按鈕,以及位置滑動條和揚聲器圖標,和調節聲音大小的滑動條

組件:PlayButton
作用:顯示播放(play)按鈕和暫停(pause)按鈕

組件:PlayOnlyButton
作用:僅顯示播放按鈕

組件:PauseButton
作用:僅顯示暫停按鈕

組件:StopButton
作用:僅顯示停止(stop)按鈕

組件:FFCtrl
作用:僅顯示快進(fastforward)按鈕

組件:RWCtrl
作用:僅顯示回放(rewind)按鈕

組件:MuteCtrl
作用:僅顯示揚聲器圖標,用作靜音按鈕

組件:MuteVolume
作用:顯示小的揚聲器圖標(用於靜音)和其上的用於調節音量的滑動條

組件:VolumeSlider
作用:僅顯示豎直的音量滑動條

組件:PositionSlider
作用:顯示水平的位置滑動條

組件:tacctrl
作用:顯示水平的消息框,輪流顯示標題、作者以及版權信息

組件:HomeCtrl
作用:顯示小的Real標識

組件:infoVolumePanel
作用:顯示黑的消息框,用綠色顯示標題、作者以及版權信息,在右手方有揚聲器圖標和聲音調節滑動條

組件:infoPanel
作用:同上面一樣,但是沒有靜音按鈕和聲音調節滑動條

組件:StatusBar
作用:顯示水平的消息框,顯示片斷信息,比如片斷的時間,網絡狀況等等

組件:StatusField
作用:同StatusBar類似,但是只顯示消息區域,顯示網絡消息,比如顯示「Re-buffenng...」

組件:PositionField
作用:小的黑的消息框,顯示整個文件片斷長度以及當前幀在片內的位置

嵌入RealOne播放器
<object ID="rPlayer" CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT="100%" WIDTH="100%">
<param name="_ExtentX" value="23627">
<param name="_ExtentY" value="15187">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="0">
<param name="SRC" value="http://www.blogerhome.com/address.asp?num=24009987&id=10019">
<param name="CONTROLS" value="ImageWindow">
<param name="CONSOLE" value="Clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000">
</object>
嵌入MediaPlayer播放器
<object id="MediaPlayer" width="478" height="300" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.
cab#Version=6,1,5,217" type="application/x-oleobject" standby="Loading Microsoft Windows Media Player components..." classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" VIEWASTEXT>
<param name="DisplayBackColor" value="0">
<param name="DisplayForeColor" value="16777215">
<param name="DisplayMode" value="0">
<param name="DisplaySize" value="-1">
<param name="Filename" value="mms://www.yd631.com/視頻文件.wmv">
<!-- 此處設置播放的視頻連接 -->
<param name="ShowControls" value="0">
</object>

文章來源:http://blog.xuite.net/alltrend/homepage/22863659

使用半透明的Div遮蓋表單防止重複送出(Submit)範例

一般表單當送出後,需要執行比較長的時間,往往畫面留著,有些使用者等不及會再按看看,造成表單重複送出。其實這個問題可以用一個絕對位置的div搭配簡單的JavaScript就可以把表單遮蓋,讓等待的人按不到按鈕。
div>  
測試
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="divBlock.style.display='';" />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<div id="divBlock"
style="border-style: solid; border-width: 1px; z-index: 1; position: absolute; top: 3px; left: 4px; height: 142px; width: 262px; background-color: #808080;filter: Alpha(Opacity=80);display:none;">
<font color="yellow" size="7">處理中......</font>
</div>

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click   
Dim y As Integer
Dim c As Integer = 0
'跑一個比較久的迴圈
For y = 0 To 1000000000
c += 1
Next
Me.Label1.Text = c.ToString & "--" & Now.ToString
End Sub
轉自 http://itgroup.blueshop.com.tw/topcat/aspx?n=convew&i=4113