歡迎跟我連絡
免安裝程式...哈哈 歡迎聊天
2012年10月26日 星期五
2010年10月28日 星期四
Delete Key in Mac OS
用慣PC的人,一下子要換成Mac的話,有些地方會不大習慣…像在用MacBook Pro的時候,就覺得Mac的delete鍵和Windows的Delete功能不一樣!Mac的delete像是Windows的Backspace,只能向左刪除;如果你要在Mac裡做向右刪除的動作,得透過組合鍵:「fn+delete」。
還有一個Home與End鍵的問題,因為MacBook Pro的鍵盤也沒有這兩個鍵,同樣得透過組合鍵來達到類似的效果;「fn+←」是Mac的Home鍵,讓游標移到該行的最左邊;「fn+→」是Mac的End鍵,讓游標移到該行的最右邊。
另一個是輸入法的切換。Windows用「Ctrl+Shift」切換不同的輸入法,Mac則是使用「option+command+space」切換輸入法。如果要切換中英文的話,Windows是「Ctrl+space(空白鍵)」,Mac則是「command+space」。
2010年5月5日 星期三
Google 換新衣
2009年12月11日 星期五
身分證ID產生程式
最近有網友跟我詢問身分證ID的產生方式(他的學校作業),特地寫了一隻小程式分享大家.
選擇出生地及性別的方式
身分證ID驗證規則,請參考我的另一篇文章
http://nelsonliublog.blogspot.com/2009/08/blog-post_12.html
或是 我的接案網頁
http://deepbrainstudio.blogspot.com/2009/08/blog-post.html
請不要拿去做壞事喔,不然我會很傷心的...
檔案下載 :
執行檔[MD5 : fee39a74124153a167a4aa77588e6b66]
Source Code[MD5 : f0a48f7d076f5eeab9a3d5269c77f245]
2009年11月2日 星期一
2009年9月14日 星期一
iRinger - iPhone鈴聲編輯工具
2009年9月2日 星期三
網頁內含圖檔下載程式
蠻久以前寫的一個小程式,介紹給大家...
程式目的:下載網頁內含的JPG檔到C:\MY_PIC內
(當然你也可以透過IE右鍵另存圖片...哈哈)
程式原理:利用WebBrowser控制項,讀取網頁HTML Document,然後利用正則表達式,找出HTML內所有的圖檔路徑並下載.
正則表達式:
(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
程式Layout說明:
以下列網頁為例:
http://dcview.com.tw/gallery/showmsg.asp?msgid=774265&place=1&posit=1
重要程式碼節錄
解析網頁
ArrayList FilesArrayList = new ArrayList();
MatchCollection FilesMachCollection = Regex.Matches(myWB.DocumentText, textBox2.Text, RegexOptions.Compiled);
for (int i = 0; i < FilesMachCollection.Count; i++)
{
FilesArrayList.Add(FilesMachCollection[i].ToString());
}
其中textBox2.Text = (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?
下載圖檔
string myPath = @"C:\MY_PIC\";
using (WebClient client = new WebClient())
{
if (!Directory.Exists(myPath))
{
Directory.CreateDirectory(myPath);
a = 0;
}
else
{
a = Directory.GetFiles(myPath).Length + 1; //計算下一圖檔檔名序號
}
progressBar1.Maximum = 100;
progressBar1.Minimum = 0;
progressBar1.Value = 0;
for (int i = 0; i < listBox1.Items.Count; i++)
{
Application.DoEvents();
string fileName = myPath + a.ToString().PadLeft(10, '0') + ".JPG";
client.DownloadFile(listBox1.Items[i].ToString(), fileName);
Application.DoEvents();
double nowValue = (100 * (i + 1)) / listBox1.Items.Count;
progressBar1.Value = (int)nowValue;
Application.DoEvents();
a++;
}
}
執行檔[MD5 : 3076129e886d503a20022ae7cabeda8e]
Source Code[MD5 : 03800d5e8d311eeb7bf48193fbb3c709]
2009年8月20日 星期四
螢幕結取與鍵盤HOOK 程式修正
剛剛測試了一下程式,發現記憶體越吃越兇...
於是修正一下程式
打開Source Code Form1.cs 修正底下(粗體字部分 請新增即可)
private void timer_Capture_Tick(object sender, EventArgs e)
{
Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
string FileName = Path.Combine(textBox_FolderName.Text,string.Format(@"{0}.jpg", DateTime.Now.Ticks.ToString()));
bmpScreenshot.Save(FileName, System.Drawing.Imaging.ImageFormat.Png);
bmpScreenshot.Dispose();
gfxScreenshot.Dispose();
}
private void timer_checkESC_Tick(object sender, EventArgs e)
{
Application.DoEvents();
GC.Collect();
if (StopFlg)
EndProcess();
}
不想修改者,這裡直接下再使用...
程式[MD5 : baac548d02f802c73640f5feda7a53a6]
鍵盤 Hook的應用
上篇文章提到Keyboard Hook,一般都會以為只能用在一些Hack程式(鍵盤側錄...),但是有很多程式是需要這個Keyboard Hook的支援,特別是那些失去Focus時候的應用程式,無法用KeyDown Event捕捉使用者的訊息,所以想要透過鍵盤的操控(快速鍵)達到"開始" ”停止" “擷取"……都可以透過這個方式達到目的.
底下是我寫的一個範例:
用途:全螢幕擷取程式,使用者可以設定圖檔存放處,擷取頻率...
當使用這按下[開始],程式最小化開始進行擷取,一直當使用者按下[Esc]就立即停止擷取,並將程式帶至桌面前景...
重要程式片段:
private void button_Start_Click(object sender, EventArgs e)
{
if (m_HookHandle == 0)
{
using (Process curProcess = Process.GetCurrentProcess())
using (ProcessModule curModule = curProcess.MainModule)
{
m_KbdHookProc = new HookProc(Form1.KeyboardHookProc);
m_HookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, m_KbdHookProc, GetModuleHandle(curModule.ModuleName), 0);
}
if (m_HookHandle == 0)
{
MessageBox.Show("呼叫 SetWindowsHookEx 失敗!");
return;
}
StartProcess();
}
}
private static int KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam)
{
// 當按鍵按下及鬆開時都會觸發此函式,這裡只處理鍵盤按下的情形。
bool isPressed = (lParam.ToInt32() & 0x80000000) == 0;
if (nCode < 0 || !isPressed)
{
return CallNextHookEx(m_HookHandle, nCode, wParam, lParam);
}
// 取得欲攔截之按鍵狀態
KeyStateInfo escKey = KeyboardInfo.GetKeyState(Keys.Escape);
if (escKey.IsPressed)
{
System.Diagnostics.Debug.WriteLine("ESC Pressed!");
bool ret = UnhookWindowsHookEx(m_HookHandle);
if (ret == false)
{
MessageBox.Show("呼叫 UnhookWindowsHookEx 失敗!");
return 0;
}
m_HookHandle = 0;
StopFlg = true;
return 0;
}
return CallNextHookEx(m_HookHandle, nCode, wParam, lParam);
}
程式 [MD5 : 3bf4c56247725d8437605e17189626ef]
Source Code [MD5 : 6301e4c7e651ffa46959259adbd21447]
2009年8月18日 星期二
鍵盤 Keyboard Hook
一個簡單的鍵盤Hook程式...
基本上都是Win32API兜出來的...
SetWindowsHookEx() , UnhookWindowsHookEx() , CallNextHookEx() , GetCurrentThreadId() ,GetModuleHandle()
目前只針對 Ctrl , Alt , Shift , F8 進行觸發後紀錄...
有興趣的人可以自行修改,底下有Source Code
Source Code ( MD5 : 7c32ae81d92a624111c655ea2a2bc196 )
Google Maps開放台灣版街景地圖
Google地圖所提供的Street View是一種用「實地拍攝的街景照片」組合成一個360度、虛擬實境的街景地圖,在2008年底台灣就曾出現Google的街景攝影車穿梭在巷弄間拍照,現在,這個台灣版的Street View功能終於在Google地圖中出現囉!
目前只有大台北地區有街景畫面,包括台北市區、中和、永和、淡水、陽明山、新店...等等地區,預計不久的將來其他縣市應該也會陸續推出。到時候我們就可以直接在Google Maps上用很直覺的方式找路、找店家、找寶藏…囉。
第1步 開啟Google地圖網站,在地圖中找到台北縣市的位置。此時注意看左邊工具列上方會有一個「人形圖示」出現,當人形圖示變成橘色時,表示目前位置有Street View的地圖可瀏覽。如果人形圖示是呈現灰色狀態,則表示該地點沒有Street View街景地圖可用。
第2步 用滑鼠左鍵按住人形圖示不放,再拖拉到地圖中。當我們拖拉人形圖示時,原本的地圖會出現藍色的線條,有藍色線條的地方表示已經有街景畫面可瀏覽。請將人形圖示放到你要瀏覽的地點上面,再放掉滑鼠左鍵。
第3步 接著便會自動開啟該地點的接街景畫面,我們可以在地圖上用滑鼠左鍵按住不放,然後360度的上下左右四處旋轉、到處看看。
街景圖中會用黃色線條標示目前的路名(目前資訊還不是很完整),線條上方還會出現白色的箭頭,用滑鼠按一下箭頭便可前進、後退,順著路瀏覽沿途的風光景色。
更詳細的說明
Google Maps 地圖網站:http://maps.google.com.tw/
Google Map中文官網 : http://maps.google.com/help/maps/streetview/
簡易MD5驗證程式
因為部落格中開始會有一些自己寫的程式或檔案可以提供下載並使用MD5驗證機制,所以就寫了一支簡單的MD5驗證程式提供使用...
使用介紹:
程式: [MD5 : c3130b3057182ad2b4be4626cb16fd18]
Source Code : [MD5 : 52613fc671c60e086ca05a1cc14b4792]
2009年8月16日 星期日
MP3 Tag 修改程式
想必各位一定都有聽MP3的習慣,但是有時候MP3 Player所顯示的資訊是錯誤的,或者是亂碼,怎麼辦???
這時候你就會需要MP3 Tag修改軟體.
MP3的 TAG大概是這樣組成的
MP3 TagBody (檔案的最後128 Bytes為TAG) 編碼方式 :
(0—2) 3 bytes ==> "TAG"三個字,如果不是"TAG",則為MPEG File
(3—32) 30 bytes ==> 標題 (Title)
(33—62) 30 bytes ==> 演唱/奏者,藝術家 (Artist)
(63—92) 30 bytes ==> 專輯名稱 (Album)
(93—96) 4bytes ==> 發行年份 (PubYear)
(97—126) 30 bytes ==> 註釋/附加/備註信息 (Comment)
(127) 1 byte ==> 音樂型態 (Music Type)
根據上面的編碼原則,寫的一個Parser Class
MP3TagParser Class
應用程式畫面
Source Code
2009年8月14日 星期五
2009年6月19日 星期五
HTML 2 PDF
難免有時候遇到網站關閉,以前可以輕易找到的參考資料,現在卻不見了...
爲此苦惱嗎?
以我來說,看到好的極具日後參考價值的網頁,我都會作保存的動作,不外乎是利用瀏覽器另存新檔的功能,就是SnagIt整個網頁照相存檔,但是今天找到一個不錯的網頁儲存工具 HTML->PDF
可以利用這個網頁,將HTML轉成PDF提供檢視及存檔
只需將想要轉換的網址輸入即可,視網頁的複雜程度,可能需要等一下子就OK了....
2008年8月9日 星期六
使用WebBrower透過Google自動查詢
今天來利用.Net Framework提供的WebBrower,來玩點小遊戲
開啟一個新專案,拉一個webBrowser1佈建到你的Form中,在加一個Button在你的Form中
然後在public partial class Form1加入這段程式碼:
private bool ButtonClick=false; //避免程式一直查詢檢查用變數
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Url = new Uri("http://www.google.com"); //設定Google網址
ButtonClick = true;
}
//網也完全載入後觸發此DocumentCompleted Event
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (ButtonClick)
{
HtmlDocument myDoc = webBrowser1.Document;
//關鍵所在,必須知道Search textbox的name是"q"(利用IE->檢視-> 原始檔可以慢慢找到)
HtmlElement myTextBox = myDoc.GetElementById("q"); //找到Search textbox
//關鍵所在,必須知道Google搜尋 Button的name是"btnG"(利用IE->檢視-> 原始檔可以慢慢找到)
HtmlElement myButton = myDoc.GetElementById("btnG"); //找到Google搜尋 Button
object myObj = "Embedded";
myTextBox.InnerText = "Embedded"; //在Search textbox填入查詢字眼
myButton.InvokeMember("click", null); //按下Google搜尋 Button
ButtonClick = false;
}
}
這樣就可以做到自動查詢了...
延伸想法:
如此一來,是不是可以透過這個方式直接登錄一些網站,不用自己keyin帳號密碼呢?...哈哈
2008年7月19日 星期六
如何將「Google動態地圖」嵌入到部落格或網頁中?
工具網站: Embed Google 'My Maps'
參考文章:如何將「Google動態地圖」嵌入到部落格或網頁中? By重灌狂人
蠻實用的一個工具網站,隨便點一點,透過Google Maps API產生嵌入程式碼,然後貼到你得BLOG,就OK了
這是我住的地方啦...
嚴重警告:請勿將此座標輸入廵弋飛彈控制電腦中...-_-"
2008年7月17日 星期四
2008年7月7日 星期一
Obfuscator (混淆器)
各為將來有機會寫程式賣錢的話,但是對方不打算買Source Code(買Source Code要付出數倍價錢),
然後透過反組譯程式取得你的 Source Code(.NET 程式 相當容易被反組譯)
可以透過Obfuscator (混淆器),複雜化你的程式碼,反組譯後,讓對方一頭霧水,想要Source Code乖乖付錢吧!
例如
using System;
struct Module1
{
private string str = "Hello World! Today is:";
private System.DateTime today = Now;
void Main()
{
Console.WriteLine(str + System.Convert.ToString(today));
}
}
透過Obfuscator後
.class private auto ansi sealed beforefieldinit Module1
extends [mscorlib]System.Object
{
.custom instance void [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.
StandardModuleAttribute::.ctor() = ( 01 00 00 00 )
.field private static string str
.field private static valuetype [mscorlib]System.DateTime today
.method private specialname rtspecialname static
void .cctor() cil managed
{
.maxstack 8
IL_0000: ldstr "Hello World! Today is:"
IL_0005: stsfld string ConsoleApplication1.Module1::str
IL_000a: call valuetype [mscorlib]System.DateTime [Microsoft.VisualBasic]Microsoft.
VisualBasic.DateAndTime::get_Now()
IL_000f: stsfld valuetype [mscorlib]System.DateTime ConsoleApplication1.Module1::today
IL_0014: nop
IL_0015: ret
} // end of method Module1::.cctor
.method public static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
.maxstack 8
IL_0000: nop
IL_0001: ldsfld string ConsoleApplication1.Module1::str
IL_0006: ldsfld valuetype [mscorlib]System.DateTime ConsoleApplication1.Module1::today
IL_000b: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.StringType::
FromDate(valuetype [mscorlib]System.DateTime)
IL_0010: call string [mscorlib]System.String::Concat(string,
string)
IL_0015: call void [mscorlib]System.Console::WriteLine(string)
IL_001a: nop
IL_001b: nop
IL_001c: ret
} // end of method Module1::Main
} // end of class Module1
夠酷吧....
這裡有免費軟體提供:http://www.xmlfox.com/freeware_obfuscator.htm
2008年6月26日 星期四
"System Volume Information" 資料夾
「System Volume Information」資料夾,中文名稱可以翻譯為「系統卷冊訊息」。這個資料夾裡就儲存於著系統還原的制作備份訊息。
「系統還原」是Windows XP最實用的功能之一,它採用「抓圖 」的方式記錄下系統在特定時間的狀態訊息,也就是所謂的「還原點」,然後在需要的時候根據這些訊息加以還原。還原點分為兩種:一種是系統自動新增的,包括系統檢查點和安裝還原點;另一種是用戶自己根據需要新增的,也叫手動還原點。隨著用戶使用系統時間的增加,還原點會越來越多,導致硬碟空間越來越少,最後還要被警告「磁牒空間不足」
如你硬碟少於設置空間...還原點功能將自動停止..意謂可能經常空間緊張,後面雖發生問題要嘗試恢復還原,事實它並沒備份下來..
如何移除:
1、在「我的電腦」圖示上點右鍵,選項內容
2、選項系統還原選擇項
3、將「在所有驅動器上關閉系統還原」打勾確定後即可
4、關閉「系統還原」後,就可以將該驅動器根目錄下的「System Volume Information」資料夾移除。
如何檢視:
System Volume Information 資料夾是一個隱藏的系統檔案夾,"系統還原"工具使用該檔案夾來儲存於它的訊息和還原點。您的電腦的每個分區上都有一個 System Volume Information 資料夾。出於疑難排除的目的,您可能需要獲得對該檔案夾的檢視。
要獲得對 System Volume Information 資料夾的檢視呢?
使用 FAT32 文件系統的 Windows XP Professional 或 Windows XP Home Edition
1. 按下開始,然後按下我的電腦。
2. 在工具功能表上,按下資料夾選項。
3. 在檢視選擇項上,按下"顯示隱藏文件或資料夾"。
4. 清除"隱藏受保護的作業系統文件(推薦)"複選框。在提示您確定更改時,按下是。
5. 按下確定。
6. 雙按以開啟根目錄中的 System Volume Information 資料夾。 

