- Jun 20 Fri 2014 09:39
-
失溫
- May 21 Wed 2014 10:13
-
教育
13歲的孩子在台上侃侃而談「駭客學習」,令無數家長、學生汗顏
http://xuexue.today/2014/05/08/young-hacker/
像這一類的文章,其實常出現,
http://xuexue.today/2014/05/08/young-hacker/
像這一類的文章,其實常出現,
- Feb 25 Wed 2009 15:40
-
[轉貼]不要從程式語言學習「物件導向」!
許多技術人員係從物件導向程式語言(OOP, Object-Oriented Programming Language)來學習物件導向,從 OOP 的角度來學習物件導向時,經常會把它當作是一種 "技術",當作 "技術" 時,你會想去 "用" 它,而若當你無法 "應用" 在現實面時,就會覺得 "不好用"、"難用" 、理論無法與現實結合" ...等。
把物件導向當作 "技術" 的最大的問題是:你永遠不知道為什麼你要使用物件導向!
幾年前,微軟的 COM 剛盛行時,有些是 "微軟技術代言人" 會在其技術文章裡提及:COM/3-tier/物件導向技術是增進系統效能(Performance)的最佳解決方案;採用上述提及的技術可以加速系統開發。甚至到現在,我仍常聽到:採用 EJB(Enterprise Java Bean) 是實現物件導向的最佳利器、可以讓開發者 "ReUse" 所設計的元件(Component)、節省開發者的開發時間。
嘿,這些 "似是而非" 的論調,幾年前從技術人員口中聽到是如此,現在聽到的還是如此,說真的,我是覺得,還真是一點自我的反思都沒有。我每次對這些技術人員的反駁就是:有什麼方式會比 Client/Server 直接連線至資料庫來處理還要快? 有什麼開發方式會比你使用 Client/Server 拉一拉表單,然後直接至資料庫 "撈" 資料還要便捷? 當然,技術人員的直覺反駁是,Client/Server 無法應付數百人以上同時間的交易處理,是啊,沒錯啊,Client/Server 有些假設點:同時上線使用者不超過 200 人、系統的需求不常變動。
但,重點是,系統效能與你採用 COM/EJB/物件導向有何關係? 那是屬於系統資源(Resource) 的控管處理,諸如 Resource Pooling 的機制、Transaction Management(還包括交易物件的設計)的處理,Database "Performance Tunging"、頻寬的資料傳輸量的處理... 等。
而採用物件導向/COM/EJB 可以節省系統開發? 那更是可笑! 採物件導向可更是耗費開發成本,開發人員每當一想到為什麼要在中間層對物件分門別類,然後實做一個功能要串上好幾個物件的傳遞才能完成工作,一直無法接受這種觀念,如同 Martin Fowler 所提:你永遠無法讓物件導向的新手們瞭解為什麼要採取這種分散式的設計,你只能要求他們如此做,幾年後,他們會突然頓悟,腦袋有如重生一般。所以,採取物件導向可是要花腦筋在軟體設計上,而且若是實做在所謂的實體元件的機制,如 COM+/EJB,那是為了系統分散與交易機制的處理的元件規格,所以,實做上可是更為麻煩,一點也不會減輕開發者的實做的負擔。
所以,為什麼要使用物件導向? 因為,物件導向是一種思維,是一種哲理,是一種典範,甚至是一種生活觀,你需要綜合相當多的知識,蘊化為 "智慧",來協助你如何應付與應對軟體的 "善變",並能提供具體的解決方案。嗯,這兩年突然對軟體設計某小一部分的哲理有一些 "頓悟" 後,每當看到許多系統因為粗製濫造而衍生出複雜的表象,眾多人們卻被淹沒在糾纏不清的問題與狀況時,而個人(外加 Ringle) 卻能 "一眼" 看出問題在哪裡,並且可以提出具體的解決方案,嘿,那可真是莫大的成就感與喜悅的呢。
學習物件導向的思維與哲理可是一條漫長之路。對我而言,我個人是已經選擇了這條 "自討苦吃" 之道,這條道路所要學習的廣度與深度,可是與圍棋之道一樣的深奧無比,每一個階段的學習與體悟,會讓你更接近與探索根本道理,但,似乎又永遠無法達到那個 "彼岸"。如同吳清源大師已經快 100 歲,仍舊每天研究圍棋;Ivar Jacobson 已經 80 餘歲,卻仍茲茲不倦地研究與發表軟體設計的論述一樣,這是終身職志,已經是融入每天的生活,永遠也研究不完的,甚至,還準備帶到下一輩子繼續來「修道」的。
所以,回頭來看物件導向程式語言,OOP 僅是實現(Implement)物件導向的工具,你會想透過 Java, VB.NET 等程式語言來實作如介面(Interface)、繼承(Inheritance)、多型(Polymorphishm) ...等設計。但問題是,OOP 無法告訴你 "What" and "Why" 介面、繼承、多型等這類屬於設計的哲理面(philosophy),甚至,也無法告訴你 "What is Object?"、"How to divide the Object?" ...,而這些哲理,根本不是為了重覆使用或增進效能,目的旨於,協助人們在面對複雜的現象時,應用 "本來就有" 的智慧哲理,來解決複雜的問題,而 OOP,是讓軟體人員解決問題時,所需使用使用到的 "工具",它就是工具,就是一種手段而已!
從 OOP 學習物件導向觀念是一種本末倒置的方向,那不會是一個好方法,若勉強說,利用 OOP 來 "驗證" 物件導向的一些設計想法,那到說得過去。那麼,從何處學習物件導向呢? 我這兩年,是透過 "觀察" 生活的周遭環境,逐漸來反思與體悟的。這與我多年來閱讀許多大量其它領域的書籍,除了軟體設計專業書籍外,包括學習類、成功潛能類、企管與專案管理、歷史 ...等,實在有莫大的幫助,對短期的軟體技能幫助不多,但對中長期在軟體設計的思考上,會突然在某一個時間點突破而後 "頓悟",這時再回頭看軟體專業各類的書籍,那可真是游刃有餘,輕鬆而能感受書中的作者所想表達的觀點與主題。
對初學者,若要更具體一點,要看相關這方面的書籍的話,除了上次介紹過 Grady Booch 的「Object-Oriented Analysis and Design」一書外,國外的一些書籍,例如 James Martin/James J. Odell 合著 「Object-Oriented Methods」 一書,除了內容淺顯易懂、又饒富物件思維之道外,書籍排版與印刷的精美,那更值得典藏的好書。有件事最好避免,國內坊間 OOP 的書籍,有談及物件導向觀念的,最好略過不要看,幫助不大,反而誤導成分居多。
有感而發,既然,Java and .NET 都已經昭然若揭,程式語言確然往物件導向的實做之路,那麼,軟體人員也確實需要俱足物件導向的設計觀念。隨著工具的易學易用,以及網際網路龐大的資料庫,成為實做 "how-to" 的最佳參考來源,使得實做得以更形簡單。那麼,軟體人員更需要將精力擺在物件導向的設計思維,才有可能應對越形複雜的系統,懂得如何以簡御繁。
所以呢,我個人準備把我這幾年的一些心得與體會,盡量利用日常生活面的例子,來解釋物件導向的一些基本觀念與術語,例如,什麼是物件/類別、什麼是介面/多型、什麼是封裝 ...等。我會將這些文章另行分類成 "物件基本觀"。對了,有一些議題我會採反問的方式來闡述一些個人的物件觀。例如,若你要問我,EJB 是不是物件導向? 我會說 "不是";然而 Client/Server 是否是物件導向?,我的答案卻是 "Yes"。 呵呵,先賣個關子,這些是蠻有趣也蠻引起爭議的話題,爾後我會著文說明我的看法與理由的。
- Feb 16 Mon 2009 16:39
-
[BCB] 防止程式重複執行
點選Project->View Source開啟下列程式碼加入紅色的部分就可以防止程式重複啟動
//---------------------------------------------------------------------------
#include
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE mutex;
const char ProgramName[]="project1";//應用程式名稱
try
{
mutex=CreateMutex(NULL,true,ProgramName);//設定互斥旗標
if(GetLastError()==ERROR_ALREADY_EXISTS)
//系統中已開啟過就不再啟動本程式
{
Application->MessageBox("請勿重複程式","project1", 64+0);
//加入重複的時候要做的動作
ReleaseMutex(mutex);
return 0;
}
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
ReleaseMutex(mutex);
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE mutex;
const char ProgramName[]="project1";//應用程式名稱
try
{
mutex=CreateMutex(NULL,true,ProgramName);//設定互斥旗標
if(GetLastError()==ERROR_ALREADY_EXISTS)
//系統中已開啟過就不再啟動本程式
{
Application->MessageBox("請勿重複程式","project1", 64+0);
//加入重複的時候要做的動作
ReleaseMutex(mutex);
return 0;
}
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
ReleaseMutex(mutex);
return 0;
}
//---------------------------------------------------------------------------
- Feb 16 Mon 2009 15:28
-
[BCB] MessageBox 的參數說明
int MessageBox(const char* Text, const char* Caption, int Flags);
Text : 您要顯示的訊息
Caption : MessageBox 的標題
Flags : 設定要顯示哪些東西
以下是 Flags 的設定值
0 (MB_OK) : OK按鈕
1 (MB_OKCANCEL) : OK, Cancel按鈕
2 (MB_ABORTRETRYIGNORE) : Abort, Retry, Ignore按鈕
3 (MB_YESNOCANCEL) : Yes, No, Cancel按鈕
4 (MB_YESNO) : Yes, No按鈕
5 (MB_RETRYCANCEL) : Retry, Cancel按鈕
16 : 圖示
32 : 圖示
48 : 圖示
64 : 圖示
0 : 將第一按鈕設為預設
256 : 將第二按鈕設為預設
512 : 將第三按鈕設為預設
Text : 您要顯示的訊息
Caption : MessageBox 的標題
Flags : 設定要顯示哪些東西
以下是 Flags 的設定值
0 (MB_OK) : OK按鈕
1 (MB_OKCANCEL) : OK, Cancel按鈕
2 (MB_ABORTRETRYIGNORE) : Abort, Retry, Ignore按鈕
3 (MB_YESNOCANCEL) : Yes, No, Cancel按鈕
4 (MB_YESNO) : Yes, No按鈕
5 (MB_RETRYCANCEL) : Retry, Cancel按鈕
16 : 圖示
32 : 圖示
48 : 圖示
64 : 圖示
0 : 將第一按鈕設為預設
256 : 將第二按鈕設為預設
512 : 將第三按鈕設為預設
- Feb 16 Mon 2009 15:14
-
[BCB]程式關閉提示
- Feb 13 Fri 2009 17:44
-
[BCB]視窗閃爍
在form上放一個timer,再加入以下的code~
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
FlashWindow(Form1->Handle, true); //form抬頭閃爍
FlashWindow(Application->Handle, true); //最小化閃爍
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
FlashWindow(Form1->Handle, true); //form抬頭閃爍
FlashWindow(Application->Handle, true); //最小化閃爍
- Oct 17 Fri 2008 17:15
-
曼德爾森VS中國牛奶
http://phtv.ifeng.com/phinfo/200809/0928_45_810365.shtml
9月28日 溫家寶:在鳳凰電視上看到曼德爾森喝中國牛奶很感動 溫家寶:我在鳳凰電視看到曼德爾森先生,不知道他今天在不在場,
他喝了一杯中國的牛奶,以表示他對中國產品的信心,我心裡非常感動。
因為他看到的不是眼前,而是未來。
- Oct 16 Thu 2008 11:06
-
對不起,我不會上網
有一個中年失業男子,找工作找了很久都找不到,結果看到微軟在徵清潔工,就前去應徵。微軟的人力資源主管在面試後問他:「你會不會上網?? 如果你有被錄取,我們會公佈在我們的網站上。」那男子回答:「對不起,我不會上網。」人力資源主管:「不會上網還想來微軟應徵,你有沒有搞錯??」說罷就把他趕了出去。
那男子失意之餘,摸摸自己身上僅有的十元美金,靈機一動在商店裡買了一大袋馬鈴薯,然後開始挨家挨戶地去拜訪且販售他的馬鈴薯,沒想到真的賣完了,且他賺了三十元美金。於是他就靠著這種挨家挨戶拜訪的方式,慢慢地開始了他的創業生涯,從數百元美金,到開設生鮮蔬果宅配公司,並建立了很大的連鎖賣場,從此他成了億萬富翁。
有一天有個保險業務員去找這位億萬富翁拉保險,保險業務員順口問了一句:「您會不會上網 ??我們公司的產品都在網路上有很詳細地介紹。」那位億萬富翁於是告訴了這位業務員:「我不會上網。」保險業務員很訝異地說:「您身為億萬富翁,掌裡這麼大的事業,竟然不會上網.............」
這位億萬富翁於是告訴業務員他當年到微軟應徵清潔工的故事,並說:「如果我當年會上網的話,我到現在還是個清潔工.....」
這個故事給了我們三個啟示:
一、要到微軟應徵最好要會上網,不然你連清潔工都無法錄取。
二、不會上網未必不能發達,還是有機會當億萬富翁。
三、你看到了這篇文章,表示你會上網, 那麼
你當清潔工的機會應該比變成億萬富翁大 ........
那男子失意之餘,摸摸自己身上僅有的十元美金,靈機一動在商店裡買了一大袋馬鈴薯,然後開始挨家挨戶地去拜訪且販售他的馬鈴薯,沒想到真的賣完了,且他賺了三十元美金。於是他就靠著這種挨家挨戶拜訪的方式,慢慢地開始了他的創業生涯,從數百元美金,到開設生鮮蔬果宅配公司,並建立了很大的連鎖賣場,從此他成了億萬富翁。
有一天有個保險業務員去找這位億萬富翁拉保險,保險業務員順口問了一句:「您會不會上網 ??我們公司的產品都在網路上有很詳細地介紹。」那位億萬富翁於是告訴了這位業務員:「我不會上網。」保險業務員很訝異地說:「您身為億萬富翁,掌裡這麼大的事業,竟然不會上網.............」
這位億萬富翁於是告訴業務員他當年到微軟應徵清潔工的故事,並說:「如果我當年會上網的話,我到現在還是個清潔工.....」
這個故事給了我們三個啟示:
一、要到微軟應徵最好要會上網,不然你連清潔工都無法錄取。
二、不會上網未必不能發達,還是有機會當億萬富翁。
三、你看到了這篇文章,表示你會上網, 那麼
你當清潔工的機會應該比變成億萬富翁大 ........
- Sep 26 Fri 2008 11:11
-
JavaScript∵WEB列印大全
http://www.aspsky.net/article/show.aspx?id=2845
WEB列印大全
作者:梅花雨
1、控制"縱打"、 橫打"和"頁面的邊距。
(1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"
// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>
(2)
<script language="javascript">
function printsetup(){
// 列印頁面設置
wb.execwb(8,1);
}
function printpreview(){
// 列印頁面預覽
wb.execwb(7,1);
}
function printit()
{
if (confirm('確定列印嗎?')) {
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="列印"
onclick="javascript:printit()">
<input type=button name=button_setup value="列印頁面設置"
onclick="javascript:printsetup();">
<input type=button name=button_show value="列印預覽"
onclick="javascript:printpreview();">
<input type=button name=button_fh value="關閉"
onclick="javascript:window.close();">
------------------------------------------------
關於這個元件還有其他的用法,列舉如下:
WebBrowser.ExecWB(1,1) 打開
Web.ExecWB(2,1) 關閉現在所有的IE視窗,並打開一個新視窗
Web.ExecWB(4,1) 保存網頁
Web.ExecWB(6,1) 列印
Web.ExecWB(7,1) 列印預覽
Web.ExecWB(8,1) 列印頁面設置屬性
Web.ExecWB(10,1) 查看頁面屬性
Web.ExecWB(15,1) 好像是撤銷,有待確認
Web.ExecWB(17,1) 全選
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 關閉表單無提示
2、分頁列印
<HTML>
<HEAD>
<STYLE>
P {page-break-after: always}
</STYLE>
</HEAD>
<BODY>
<%while not rs.eof%>
<P><%=rs(0)%></P>
<%rs.movenext%>
<%wend%>
</BODY>
</HTML>
3、ASP頁面列印時如何去掉頁面底部的路徑和頂端的頁碼編號
(1)ie的檔-〉頁面設置-〉講裏面的頁眉和頁腳裏面的東西都去掉,列印就不出來了。
(2)<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="YC">
<script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\Software\Microsoft\Internet Explorer\PageSetup"
'//設置網頁列印的頁眉頁腳為空
function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
end function
'//設置網頁列印的頁眉頁腳為預設值
function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b頁碼,&p/&P"
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"
end function
</script>
</HEAD>
<BODY>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/><p align=center>
<input type="button" value="清空頁碼" onclick=pagesetup_null()> <input type="button" value="恢復頁嗎" onclick=pagesetup_default()><br/>
</p>
</BODY>
</HTML>
4、浮動幀列印
<SCRIPT LANGUAGE=javascript>
function button1_onclick() {
var odoc=window.iframe1.document;
var r=odoc.body.createTextRange();
var stxt=r.htmlText;
alert(stxt)
var pwin=window.open("","print");
pwin.document.write(stxt);
pwin.print();
}
</SCRIPT>
4、用FileSystem元件實現WEB應用中的本地特定列印
<script Language=VBScript>
function print_onclick //列印函數
dim label
label=document.printinfo.label.value //獲得HTML頁面的資料
set objfs=CreateObject("Scripting.FileSystemObject") //創建FileSystem元件物件的實例
set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立與印表機的連接
objprinter.Writeline("__________________________________") //輸出列印的內容
objprinter.Writeline("| |")
objprinter.Writeline("| 您列印的資料是:"&label& " |")
objprinter.Writeline("| |")
objprinter.Writeline("|_________________________________|")
objprinter.close //斷開與印表機的連接
set objprinter=nothing
set objfs=nothing // 關閉FileSystem元件物件
end function
</script>
伺服器端腳本:
<%.........
set conn=server.CreateObject ("adodb.connection")
conn.Open "DSN=name;UID=XXXX;PWD=XXXX;"
set rs=server.CreateObject("adodb.recordset")
rs.Open("select ......"),conn,1,1
..........%> //與資料庫進行交互
HTML頁面編碼:
<HTML>
.........
<FORM ID=printinfo NAME="printinfo" >
<INPUT type="button" value="列印>>" id=print name=print > //調用列印函數
<INPUT type=hidden id=text1 name=label value=<%=.........%>> //保存伺服器端傳來的資料
.........
</HTML>
WEB列印大全
作者:梅花雨
1、控制"縱打"、 橫打"和"頁面的邊距。
(1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"
// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>
(2)
<script language="javascript">
function printsetup(){
// 列印頁面設置
wb.execwb(8,1);
}
function printpreview(){
// 列印頁面預覽
wb.execwb(7,1);
}
function printit()
{
if (confirm('確定列印嗎?')) {
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="列印"
onclick="javascript:printit()">
<input type=button name=button_setup value="列印頁面設置"
onclick="javascript:printsetup();">
<input type=button name=button_show value="列印預覽"
onclick="javascript:printpreview();">
<input type=button name=button_fh value="關閉"
onclick="javascript:window.close();">
------------------------------------------------
關於這個元件還有其他的用法,列舉如下:
WebBrowser.ExecWB(1,1) 打開
Web.ExecWB(2,1) 關閉現在所有的IE視窗,並打開一個新視窗
Web.ExecWB(4,1) 保存網頁
Web.ExecWB(6,1) 列印
Web.ExecWB(7,1) 列印預覽
Web.ExecWB(8,1) 列印頁面設置屬性
Web.ExecWB(10,1) 查看頁面屬性
Web.ExecWB(15,1) 好像是撤銷,有待確認
Web.ExecWB(17,1) 全選
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 關閉表單無提示
2、分頁列印
<HTML>
<HEAD>
<STYLE>
P {page-break-after: always}
</STYLE>
</HEAD>
<BODY>
<%while not rs.eof%>
<P><%=rs(0)%></P>
<%rs.movenext%>
<%wend%>
</BODY>
</HTML>
3、ASP頁面列印時如何去掉頁面底部的路徑和頂端的頁碼編號
(1)ie的檔-〉頁面設置-〉講裏面的頁眉和頁腳裏面的東西都去掉,列印就不出來了。
(2)<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="YC">
<script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\Software\Microsoft\Internet Explorer\PageSetup"
'//設置網頁列印的頁眉頁腳為空
function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
end function
'//設置網頁列印的頁眉頁腳為預設值
function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b頁碼,&p/&P"
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"
end function
</script>
</HEAD>
<BODY>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/><p align=center>
<input type="button" value="清空頁碼" onclick=pagesetup_null()> <input type="button" value="恢復頁嗎" onclick=pagesetup_default()><br/>
</p>
</BODY>
</HTML>
4、浮動幀列印
<SCRIPT LANGUAGE=javascript>
function button1_onclick() {
var odoc=window.iframe1.document;
var r=odoc.body.createTextRange();
var stxt=r.htmlText;
alert(stxt)
var pwin=window.open("","print");
pwin.document.write(stxt);
pwin.print();
}
</SCRIPT>
4、用FileSystem元件實現WEB應用中的本地特定列印
<script Language=VBScript>
function print_onclick //列印函數
dim label
label=document.printinfo.label.value //獲得HTML頁面的資料
set objfs=CreateObject("Scripting.FileSystemObject") //創建FileSystem元件物件的實例
set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立與印表機的連接
objprinter.Writeline("__________________________________") //輸出列印的內容
objprinter.Writeline("| |")
objprinter.Writeline("| 您列印的資料是:"&label& " |")
objprinter.Writeline("| |")
objprinter.Writeline("|_________________________________|")
objprinter.close //斷開與印表機的連接
set objprinter=nothing
set objfs=nothing // 關閉FileSystem元件物件
end function
</script>
伺服器端腳本:
<%.........
set conn=server.CreateObject ("adodb.connection")
conn.Open "DSN=name;UID=XXXX;PWD=XXXX;"
set rs=server.CreateObject("adodb.recordset")
rs.Open("select ......"),conn,1,1
..........%> //與資料庫進行交互
HTML頁面編碼:
<HTML>
.........
<FORM ID=printinfo NAME="printinfo" >
<INPUT type="button" value="列印>>" id=print name=print > //調用列印函數
<INPUT type=hidden id=text1 name=label value=<%=.........%>> //保存伺服器端傳來的資料
.........
</HTML>
- Aug 07 Thu 2008 14:03
-
C#∵ModalDialog

