2010年2月8日 星期一

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

2010年1月31日 星期日

C# 抓取每月天數

        int Month = 1;
Label1.Text = "";

if (TextBox1.Text != "")
{
for (int i = 0; i < 12; i++)
{
int daymun = DateTime.DaysInMonth(int.Parse(TextBox1.Text), Month);
Label1.Text += "" + TextBox1.Text + "年" + Month.ToString() + "月,共" + daymun.ToString() + "天<BR>";
Month = Month + 1;
}
}
結果
2010年1月,共31天
2010年2月,共28天
2010年3月,共31天
2010年4月,共30天
2010年5月,共31天
2010年6月,共30天
2010年7月,共31天
2010年8月,共31天
2010年9月,共30天
2010年10月,共31天
2010年11月,共30天
2010年12月,共31天

2010年1月20日 星期三

如何在window2003上架設https(CA伺服器)

隨著Windows Server 2003作業系統的推出,Windows平臺的安全性和易用性大大增強,然而,在預設情況下,IIS使用HTTP協定以明文形式傳輸資料,沒有採取任何加密措施,使用者的重要資料很容易被竊取,如何才能保護局域網中的這些重要資料呢?

現在就介紹一下如何使用SSL增強IIS伺服器的通信安全。

一、什麼是SSL

SSL(Security Socket Layer)全稱是加密通訊端協議層,它位於HTTP協定層和TCP協定層之間,用於建立用戶與伺服器之間的加密通信,確保所傳遞資訊的安全性,同時SSL安全機制是依靠數位憑證來實現的。

SSL基於公用金鑰和私人金鑰,用戶使用公用金鑰來加密資料,但解密資料必須使用相應的私人金鑰。

使用SSL安全機制的通信過程如下:
用戶與IIS伺服器建立連接後,伺服器會把數位憑證與公用金鑰發送給用戶,用戶端生成工作階段金鑰,
並用公共金鑰對工作階段金鑰進行加密,然後傳遞給伺服器,伺服器端用私人金鑰進行解密,這樣,用戶端和伺服器端就建立了一條秘密頻道,只有SSL允許的用戶才能與IIS伺服器進行通信。

提示:SSL網站不同於一般的Web網站,它使用的是“HTTPS”協定,而不是普通的“HTTP”協議。
因此它的URL(統一資源定位器)格式為“https://網站名稱”。

二、安裝憑證服務伺服器

要想使用SSL安全機制功能,首先必須為Windows Server 2003系統安裝證書服務。

進入“控制台”,執行“新增或刪除程式”,接著進入“新增/刪除Windows元件”對話方塊,勾選“Certificate Services”選項,點擊“下一步”按鈕,接著選擇CA類型。

這裡選擇“獨立根目錄CA”,點擊“下一步”按鈕,為自己的CA伺服器取個名字,設置證書的有效期限,最後指定證書資料庫和證書資料庫日誌的位置,就可完成證書服務的安裝。

三、建立SSL網站

1.產生憑證文件

完成了證書服務的安裝後,
就可以為要使用SSL安全機制的網站產生憑證文件。

點擊“控制台→管理工具”,執行“網際網路資訊服務 (IIS) 管理員”,
在管理員視窗中展開“網站”目錄,
在預設網站(或要使使用SSL的網站)上點右鍵,
選擇“內容”,
在網站屬性對話方塊中切換到“目錄安全設定”標籤頁,
然後點擊“伺服器憑證”按鈕。

在“伺服器憑證精靈”對話方塊中,
點擊“下一步”按鈕,
選擇“建立新憑證”,
點擊“下一步”按鈕,
選擇“準備要求,但於稍後傳送”。
在“名稱”輸入框中為該證書取名,然後在“位元長度”下拉清單中選擇金鑰的位長。
接著設置證書的公司和單位、網站公用名稱和地理資訊,
最後指定憑證文件檔(certreq.txt)的保存位置。
這樣就完成了產生憑證文件。


2.向CA(憑證服務伺服器)申請憑證

完成上述設置後,還要把建立的憑證文件檔提交給證書伺服器。
在伺服器端的IE流覽器位址欄中輸入“http://localhost/CertSrv/default.asp”。

在“Microsoft 憑證服務”歡迎視窗中點擊“要求憑證”連結,
接下來在證書申請類型中點擊“進階憑證要求”連結,
然後在進階憑證要求視窗中點擊“用BASE64編碼的CMC或PKCS#10....”連結,
再打開剛剛生成的“certreq.txt”檔,將其中的內容複製到“已儲存的要求”輸入框後,
點擊“提交”按鈕即可。

3.CA(憑證服務伺服器)核發憑證

點擊“控制台→系統管理工具”,執行“憑證授權單位”。
在主視窗中展開樹狀目錄,點擊“擱置的要求”項,
找到剛才申請的證書,然後在上點擊右鍵,選擇“所有工作→發行”。

發行成功後,點擊樹狀目錄中的“已發出的憑證”,
按兩下剛才頒發的證書,在彈出的“證書”對話方塊的“詳細資料”標籤頁中,
點擊“複製到檔案”按鈕,彈出憑證匯出精靈,連續點擊“下一步”按鈕,
並在“匯出檔案格式”對話方塊中,選Base-64編碼,
點擊“下一步”,指定檔案名,最後點擊“完成”。

4.將憑證安裝到網站上

重新進入IIS管理器的“目錄安全性”標籤頁,
點擊“伺服器憑證”按鈕,彈出“擱置的證書要求”對話方塊,
選擇“處理擱置的要求並安裝憑證”選項,點擊“下一步”按鈕,
指定剛才匯出的伺服器憑證檔的位置,
接著設置SSL埠,使用默認的“443”即可,
最後點擊“完成”按鈕。

在“目錄安全性”標籤頁,點擊安全通訊欄的“編輯”按鈕,
勾選“必須使用安全通道(SSL)”選項,最後點擊“確定”按鈕即可啟用SSL。

在完成了對SSL網站的配置後,使用者只要在IE流覽器中輸入“https://網站名稱”就能訪問該網站。

在IE8會出現此網站出示的安全性憑證並非由信任的憑證授權單位所發行錯誤。