<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6648236360472666945</id><updated>2012-05-07T02:51:46.812+08:00</updated><category term='網路交易'/><category term='CardGame'/><category term='Program'/><category term='網路遊戲'/><category term='星海爭霸2'/><category term='PSP'/><category term='NDS 攻略'/><category term='料理筆記'/><category term='VB.NET'/><category term='Apple'/><category term='SFC'/><category term='摩爾莊園'/><category term='Ajax'/><category term='C++'/><category term='Chrome'/><category term='DnD'/><category term='NDS資訊'/><category term='Mac'/><category term='Software'/><category term='精靈幻境系列'/><category term='Writing'/><category term='RO OpenKore'/><category term='FC'/><category term='PS'/><category term='星海爭霸2地圖'/><category term='摩爾勇士'/><category term='Culdcept'/><category term='生活相關'/><category term='遊戲設計'/><category term='RO'/><category term='限時免費APP'/><category term='BioInfo'/><category term='MHP3'/><category term='博弈遊戲'/><category term='LoL'/><category term='星海爭霸2雜錦'/><category term='Music'/><category term='RO JA.NET'/><category term='3DS'/><category term='遊戲新聞'/><category term='軟體相關'/><category term='模擬器'/><category term='雜談錄'/><category term='Java'/><category term='iOS開發'/><category term='動畫專區'/><category term='特價折扣'/><category term='ROM'/><category term='Php'/><category term='WebGame'/><category term='JavaScript'/><category term='遊戲王'/><category term='Blog'/><category term='魔法風雲會'/><title type='text'>GameLifeX</title><subtitle type='html'>　不只是遊戲，是生活</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/-/VB.NET'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/search/label/VB.NET'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6648236360472666945.post-3386740649553786969</id><published>2008-09-25T21:29:00.000+08:00</published><updated>2008-09-25T21:30:47.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>用PostMessage如何自動控制記事本？</title><content type='html'>Private   Declare   Function   FindWindow   Lib   "user32"   Alias   "FindWindowA"   (ByVal   lpClassName   As   String,   ByVal   lpWindowName   As   String)   As   Long &lt;br /&gt;  Private   Declare   Function   PostMessage   Lib   "user32"   Alias   "PostMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long &lt;br /&gt;  Private   Declare   Function   GetClassName   Lib   "user32"   Alias   "GetClassNameA"   (ByVal   hwnd   As   Long,   ByVal   lpClassName   As   String,   ByVal   nMaxCount   As   Long)   As   Long &lt;br /&gt;  Private   Declare   Function   ShowWindow   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   nCmdShow   As   Long)   As   Long &lt;br /&gt;  Const   SW_SHOWNORMAL   =   1 &lt;br /&gt;  Const   WM_CLOSE   =   &amp;amp;H10 &lt;br /&gt;  Const   WM_KEYDOWN   =   &amp;amp;H100 &lt;br /&gt;  Const   gcClassnameMSWord   =   "OpusApp" &lt;br /&gt;  Const   gcClassnameMSExcel   =   "XLMAIN" &lt;br /&gt;  Const   gcClassnameMSIExplorer   =   "IEFrame" &lt;br /&gt;  Const   gcClassnameMSVBasic   =   "wndclass_desked_gsk" &lt;br /&gt;  Const   gcClassnameNotePad   =   "Notepad" &lt;br /&gt;  Const   gcClassnameMyVBApp   =   "ThunderForm" &lt;br /&gt;  &lt;br /&gt;  Private   Declare   Function   GetWindow   Lib   "user32"   (   _ &lt;br /&gt;            ByVal   hwnd   As   Long,   _ &lt;br /&gt;            ByVal   wCmd   As   Long)   As   Long &lt;br /&gt;  Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (   _ &lt;br /&gt;            ByVal   hwnd   As   Long,   _ &lt;br /&gt;            ByVal   wMsg   As   Long,   _ &lt;br /&gt;            ByVal   wParam   As   Long,   _ &lt;br /&gt;            lParam   As   Any)   As   Long &lt;br /&gt;  &lt;br /&gt;  Private   Const   GW_CHILD   =   5 &lt;br /&gt;  Private   Const   WM_SETTEXT   =   &amp;amp;HC &lt;br /&gt;  &lt;br /&gt;  Private   Sub   Command1_Click() &lt;br /&gt;  Dim   WinWnd   As   Long,   Ret   As   String,   RetVal   As   Long,   lpClassName   As   String &lt;br /&gt;  Dim   txthWnd   As   Long &lt;br /&gt;  &lt;br /&gt;          WinWnd   =   FindWindow(vbNullString,   "1.txt   -   記事本") &lt;br /&gt;          ShowWindow   WinWnd,   SW_SHOWNORMAL &lt;br /&gt;          lpClassName   =   Space(256) &lt;br /&gt;          &lt;br /&gt;          '這才是那個文本框的句柄！！！！ &lt;br /&gt;          txthWnd   =   GetWindow(WinWnd,   GW_CHILD) &lt;br /&gt;          'GetClassName   txthWnd,   strCLSName,   10 &lt;br /&gt;          'Debug.Print   strCLSName &lt;br /&gt;          '你可以把上面兩句不註釋了，看看得到是不是Edit在   立即窗口 &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;          PostMessage   txthWnd,   WM_KEYDOWN,   65,   0&amp;amp; &lt;br /&gt;          '這兩種方法都可以 &lt;br /&gt;          SendMessage   txthWnd,   WM_SETTEXT,   0,   ByVal   "A" &lt;br /&gt;          &lt;br /&gt;          'PostMessage   WinWnd,   WM_KEYDOWN,   65,   &amp;amp;H1110001   '失敗 &lt;br /&gt;          'PostMessage   WinWnd,   WM_CHAR,   "A",   0&amp;amp;   '失敗 &lt;br /&gt;          'PostMessage   WinWnd,   WM_CLOSE,   0&amp;amp;,   0&amp;amp;   '可實現 &lt;br /&gt;  End   Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6648236360472666945-3386740649553786969?l=gamelifex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/3386740649553786969/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://gamelifex.blogspot.com/2008/09/postmessage.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/3386740649553786969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/3386740649553786969'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/2008/09/postmessage.html' title='用PostMessage如何自動控制記事本？'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6648236360472666945.post-6808163788828048204</id><published>2008-09-25T04:01:00.001+08:00</published><updated>2008-09-25T04:03:45.941+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>VB.NET 的 vbKey</title><content type='html'>vbKey這類的常數，只有在VB6.0才可以被呼叫&lt;br /&gt;&lt;br /&gt;在VB.NET 請用 &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;keys &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(找超久)&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;keys.A 表示鍵盤的 A (以前的vbKeyA)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;以此類推...&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6648236360472666945-6808163788828048204?l=gamelifex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/6808163788828048204/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vbnet-vbkey.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/6808163788828048204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/6808163788828048204'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vbnet-vbkey.html' title='VB.NET 的 vbKey'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6648236360472666945.post-5040963531594256439</id><published>2008-09-25T03:46:00.001+08:00</published><updated>2008-09-25T03:46:59.785+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>SendMessage函數完全使用手冊</title><content type='html'>&lt;span style="font-weight: bold;"&gt;SendMessage函數完全使用手冊&lt;/span&gt;&lt;br /&gt;首先 我們瞭解一下Windows的消息機制。Windows是一個消息驅動式系統，Windows消息提供應用程序與應用程序之間，應用程序與Windows系統之間進行通信的手段。&lt;br /&gt;舉個例子，打開記事本程序，該程序有一個 「文件「菜單。 那麼，在運行該程序的時候，如果用戶單擊「文件菜單「裡的「新建「命令，這個動作將被Windows所捕捉，Windows經過分析得知這個動作應該由我們打開的記事本程序所來處理，然後Windows就發送個消息譬如我們編程的時候有時用到的 WM_COMMAND的消息給記事本，然後記事本就把這個消息處理掉。 這個過程就是消息處理。&lt;br /&gt;接下來，我們把SendMessage的完整形式講一下SendMessage&lt;br /&gt;Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long&lt;br /&gt;別名&lt;br /&gt;SendMessageA&lt;br /&gt;說明&lt;br /&gt;調用一個窗口的窗口函數，將一條消息發給那個窗口。除非消息處理完畢，否則該函數不會返回&lt;br /&gt;&lt;br /&gt;SendMessage所包含4個參數&lt;br /&gt;hwnd 32位的窗口句柄窗口可以是任何類型的屏幕對象，因為Win32能夠維護大多數可視對象的句柄&lt;br /&gt;wMsg 用於區別其他消息的常量值，這些常量可以是Windows單元中預定義的常量，也可以是自定義的常量wParam 通常是一個與消息有關的常量值，也可能是窗口或控件的句柄&lt;br /&gt;lParam 通常是一個指向內存中數據的指針。由於WParm、lParam和Pointer都是32位的，因此，它們之間可以相互轉換&lt;br /&gt;wMsg函數&lt;br /&gt;WM_CREATE 創建一個窗口&lt;br /&gt;WM_DESTROY 當一個窗口被破壞時發送&lt;br /&gt;WM_MOVE 移動一個窗口&lt;br /&gt;WM_SIZE 改變一個窗口的大小&lt;br /&gt;WM_ACTIVATE 一個窗口被激活或失去激活狀態&lt;br /&gt;WM_SETFOCUS 一個窗口獲得焦點&lt;br /&gt;WM_KILLFOCUS 一個窗口失去焦點&lt;br /&gt;WM_ENABLE 一個窗口改變成Enable狀態&lt;br /&gt;WM_SETREDRAW 設置窗口是否能重畫&lt;br /&gt;WM_SETTEXT 應用程序發送此消息來設置一個窗口的文本&lt;br /&gt;WM_GETTEXT 應用程序發送此消息來複製對應窗口的文本到緩衝區&lt;br /&gt;WM_GETTEXTLENGTH 得到與一個窗口有關的文本的長度（不包含空字符）&lt;br /&gt;WM_PAINT 要求一個窗口重畫自己&lt;br /&gt;WM_CLOSE 當一個窗口或應用程序要關閉時發送一個信號&lt;br /&gt;WM_QUERYENDSESSION 當用戶選擇結束對話框或程序自己調用ExitWindows函數&lt;br /&gt;WM_QUIT 用來結束程序運行&lt;br /&gt;WM_QUERYOPEN 當用戶窗口恢復以前的大小位置時，把此消息發送給某個圖標&lt;br /&gt;WM_ERASEBKGND 當窗口背景必須被擦除時（例在窗口改變大小時）&lt;br /&gt;WM_SYSCOLORCHANGE 當系統顏色改變時，發送此消息給所有頂級窗口&lt;br /&gt;WM_ENDSESSION 當系統進程發出 WM_QUERYENDSESSION消息後，此消息發送給應用程序，通知它對話是否結束&lt;br /&gt;WM_SHOWWINDOW 當隱藏或顯示窗口是發送此消息給這個窗口&lt;br /&gt;WM_ACTIVATEAPP 發此消息給應用程序哪個窗口是激活的，哪個是非激活的&lt;br /&gt;WM_FONTCHANGE 當系統的字體資源庫變化時發送此消息給所有頂級窗口&lt;br /&gt;WM_TIMECHANGE 當系統的時間變化時發送此消息給所有頂級窗口&lt;br /&gt;WM_CANCELMODE 發送此消息來取消某種正在進行的摸態（操作）&lt;br /&gt;WM_SETCURSOR 如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時，就發消息給某個窗口&lt;br /&gt;WM_MOUSEACTIVATE 當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發送此消息給當前窗口&lt;br /&gt;WM_CHILDACTIVATE 發送此消息給MDI子窗口當用戶點擊此窗口的標題欄，或當窗口被激活，移動，改變大小&lt;br /&gt;WM_QUEUESYNC 此消息由基於計算機的訓練程序發送，通過WH_JOURNALPALYBACK的hook程序分離出用戶輸入消息&lt;br /&gt;WM_GETMINMAXINFO 此消息發送給窗口當它將要改變大小或位置&lt;br /&gt;WM_PAINTICON 發送給最小化窗口當它圖標將要被重畫&lt;br /&gt;WM_ICONERASEBKGND 此消息發送給某個最小化窗口，僅當它在畫圖標前它的背景必須被重畫&lt;br /&gt;WM_NEXTDLGCTL 發送此消息給一個對話框程序去更改焦點位置&lt;br /&gt;WM_SPOOLERSTATUS 每當打印管理列隊增加或減少一條作業時發出此消息&lt;br /&gt;WM_DRAWITEM 當button，combobox，listbox，menu的可視外觀改變時發送&lt;br /&gt;WM_MEASUREITEM 當button, combo box, list box, list view control, or menu item 被創建時&lt;br /&gt;WM_VKEYTOITEM 此消息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN消息&lt;br /&gt;WM_CHARTOITEM 此消息由一個LBS_WANTKEYBOARDINPUT風格的列表框發送給他的所有者來響應WM_CHAR消息&lt;br /&gt;WM_SETFONT 當繪製文本時程序發送此消息得到控件要用的顏色&lt;br /&gt;WM_GETFONT 應用程序發送此消息得到當前控件繪製文本的字體&lt;br /&gt;WM_SETHOTKEY 應用程序發送此消息讓一個窗口與一個熱鍵相關連&lt;br /&gt;WM_GETHOTKEY 應用程序發送此消息來判斷熱鍵與某個窗口是否有關聯&lt;br /&gt;WM_QUERYDRAGICON 此消息發送給最小化窗口，當此窗口將要被拖放而它的類中沒有定義圖標，應用程序能返回一個圖標或光標的句柄，當&lt;br /&gt;用戶拖放圖標時系統顯示這個圖標或光標&lt;br /&gt;WM_COMPAREITEM 發送此消息來判&lt;br /&gt;定combobox或listbox新增加的項的相對位置&lt;br /&gt;WM_COMPACTING 顯示內存已經很少了&lt;br /&gt;WM_WINDOWPOSCHANGING 發送此消息給那個窗口的大小和位置將要被改變時，來調用setwindowpos函數或其它窗口管理函數&lt;br /&gt;WM_WINDOWPOSCHANGED 發送此消息給那個窗口的大小和位置已經被改變時，來調用setwindowpos函數或其它窗口管理函數&lt;br /&gt;WM_POWER 當系統將要進入暫停狀態時發送此&lt;br /&gt;消息&lt;br /&gt;WM_COPYDATA 當一個應用程序傳遞數據給另一個應用程序時發送此消息&lt;br /&gt;WM_CANCELJOURNA 當某個用戶取消程序日誌激活狀態，提交此消息給程序&lt;br /&gt;WM_NOTIFY 當某個控件的某個事件已經發生或&lt;br /&gt;這個控件需要得到一些信息時，發送此消息給它的父窗口&lt;br /&gt;WM_INPUTLANGCHANGEREQUEST 當用戶選擇某種輸入語言，或輸入語言的熱鍵改變&lt;br /&gt;WM_INPUTLANGCHANGE 當平台現場已經被改變後發送此消息給受影響的最頂級窗口&lt;br /&gt;WM_TCARD 當程序已經初始化windows幫助例&lt;br /&gt;程時發送此消息給應用程序&lt;br /&gt;WM_HELP 此消息顯示用戶按下了F1，如果某&lt;br /&gt;個菜單是激活的，就發送此消息個此窗口關聯的菜單，否則就發送給有焦點的窗口，如果當前都沒有焦點，就把此消息發送給當前激活的窗口&lt;br /&gt;WM_USERCHANGED 當用戶已經登入或退出後發送此消息給所有的窗口，當用戶登入或退出時系統更新用戶的具體設置信息，在用戶更新設置時系統馬上發送此消息&lt;br /&gt;WM_NOTIFYformAT 公用控件，自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI還是UNICODE結構&lt;br /&gt;WM_CONTEXTMENU 當用戶某個窗口中點擊了一下右鍵就發送此消息給這個窗口&lt;br /&gt;WM_styleCHANGING 當調用SETWINDOWLONG函數將要改變一個或多個 窗口的風格時發送此消息給那個窗口&lt;br /&gt;WM_styleCHANGED 當調用SETWINDOWLONG函數一個或多個 窗口的風格後發送此消息給那個窗口&lt;br /&gt;WM_DISPLAYCHANGE 當顯示器的分辨率改變後發送此消息給所有的窗口&lt;br /&gt;WM_GETICON 此消息發送給某個窗口來返回與某&lt;br /&gt;個窗口有關連的大圖標或小圖標的句柄&lt;br /&gt;WM_SETICON 程序發送此消息讓一個新的大圖標&lt;br /&gt;或小圖標與某個窗口關聯&lt;br /&gt;WM_NCCREATE 當某個窗口第一次被創建時，此消息在WM_CREATE消息發送前發送&lt;br /&gt;WM_NCDESTROY 此消息通知某個窗口，非客戶區&lt;br /&gt;正在銷毀&lt;br /&gt;WM_NCCALCSIZE 當某個窗口的客戶區域必須被核&lt;br /&gt;算時發送此消息&lt;br /&gt;WM_NCHITTEST 移動鼠標，按住或釋放鼠標時發&lt;br /&gt;生&lt;br /&gt;WM_NCPAINT 程序發送此消息給某個窗口當它&lt;br /&gt;（窗口）的框架必須被繪製時&lt;br /&gt;WM_NCACTIVATE 此消息發送給某個窗口僅當它的&lt;br /&gt;非客戶區需要被改變來顯示是激活還是非激活狀態&lt;br /&gt;WM_GETDLGCODE 發送此消息給某個與對話框程序&lt;br /&gt;關聯的控件，widdows控制方位鍵和TAB鍵使輸入進入此控件通過應&lt;br /&gt;WM_NCMOUSEMOVE 當光標在一個窗口的非客戶區內移動時發送此消息給這個窗口 非客戶區為：窗體的標題欄及窗 的邊框體&lt;br /&gt;WM_NCLBUTTONDOWN 當光標在一個窗口的非客戶區同時按下鼠標左鍵時提交此消息&lt;br /&gt;WM_NCLBUTTONUP 當用戶釋放鼠標左鍵同時光標某個窗口在非客戶區十發送此消息&lt;br /&gt;WM_NCLBUTTONDBLCLK 當用戶雙擊鼠標左鍵同時光標某個窗口在非客戶區十發送此消息&lt;br /&gt;WM_NCRBUTTONDOWN 當用戶按下鼠標右鍵同時光標又在窗口的非客戶區時發送此消息&lt;br /&gt;WM_NCRBUTTONUP 當用戶釋放鼠標右鍵同時光標又在窗口的非客戶區時發送此消息&lt;br /&gt;WM_NCRBUTTONDBLCLK 當用戶雙擊鼠標右鍵同時光標某個窗口在非客戶區十發送此消息&lt;br /&gt;WM_NCMBUTTONDOWN 當用戶按下鼠標中鍵同時光標又在窗口的非客戶區時發送此消息&lt;br /&gt;WM_NCMBUTTONUP 當用戶釋放鼠標中鍵同時光標又在窗口的非客戶區時發送此消息&lt;br /&gt;WM_NCMBUTTONDBLCLK 當用戶雙擊鼠標中鍵同時光標又在窗口的非客戶區時發送此消息&lt;br /&gt;WM_KEYFIRST WM_KEYDOWN 按下一個鍵&lt;br /&gt;WM_KEYUP 釋放一個鍵&lt;br /&gt;WM_CHAR 按下某鍵，並已發出WM_KEYDOWN， WM_KEYUP消息&lt;br /&gt;WM_DEADCHAR 當用translatemessage函數翻譯&lt;br /&gt;WM_KEYUP消息時發送此消息給擁有焦點的窗口&lt;br /&gt;WM_SYSKEYDOWN 當用戶按住ALT鍵同時按下其它&lt;br /&gt;鍵時提交此消息給擁有焦點的窗口&lt;br /&gt;WM_SYSKEYUP 當用戶釋放一個鍵同時ALT 鍵&lt;br /&gt;還按著時提交此消息給擁有焦點的窗口&lt;br /&gt;WM_SYSCHAR 當WM_SYSKEYDOWN消息&lt;br /&gt;被TRANSLATEMESSAGE函數翻譯後提交此消息給擁有焦點的窗口&lt;br /&gt;WM_SYSDEADCHAR 當WM_SYSKEYDOWN消息&lt;br /&gt;被TRANSLATEMESSAGE函數翻譯後發送此消息給擁有焦點的窗口&lt;br /&gt;WM_INITDIALOG 在一個對話框程序被顯示前發&lt;br /&gt;送此消息給它，通常用此消息初始化控件和執行其它任務&lt;br /&gt;WM_COMMAND 當用戶選擇一條菜單命令項或當某個控件發送一條消息給它的父窗口，一個快捷鍵被翻譯&lt;br /&gt;WM_SYSCOMMAND 當用戶選擇窗口菜單的一條命&lt;br /&gt;令或當用戶選擇最大化或最小化時那個窗口會收到此消息&lt;br /&gt;WM_TIMER 發生了定時器事件&lt;br /&gt;WM_HSCROLL 當一個窗口標準水平滾動條產生一個滾動事件時發送此消息給那個窗口，也發送給擁有它的控件&lt;br /&gt;WM_VSCROLL 當一個窗口標準垂直滾動條產生一個滾動事件時發送此消息給那個窗口也，發送給擁有它的控件&lt;br /&gt;WM_INITMENU 當一個菜單將要被激活時發送此消息，它發生在用戶菜單條中的某項或按下某個菜單鍵，它允許程序在顯示前更改菜單&lt;br /&gt;WM_INITMENUPOPUP 當一個下拉菜單或子菜單將要被激活時發送此消息，它允許程序在它顯示前更改菜單，而不要改變全部&lt;br /&gt;WM_MENUSELECT 當用戶選擇一條菜單項時發送&lt;br /&gt;此消息給菜單的所有者（一般是窗口）&lt;br /&gt;WM_MENUCHAR 當菜單已被激活用戶按下了某個鍵（不同於加速鍵），發送此消息給菜單的所有者&lt;br /&gt;WM_ENTERIDLE 當一個模態對話框或菜單進入空載狀態時發送此消息給它的所有者，一個模態對話框或菜單進入空載狀態就是在處理完一條或幾條先前的消息後沒有消息它的列隊中等待&lt;br /&gt;&lt;br /&gt;WM_CTLCOLORMSGBOX 在windows繪製消息框前發送此消息給消息框的所有者窗口，通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置消息框的文本和背景顏色&lt;br /&gt;WM_CTLCOLOREDIT 當一個編輯型控件將要被繪製&lt;br /&gt;時發送此消息給它的父窗口 通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置編輯框的文本和背景顏色&lt;br /&gt;WM_CTLCOLORLISTBOX 當一個列表框控件將要被繪製前發送此消息給它的父窗口 通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置列表框的文本和背景顏色&lt;br /&gt;WM_CTLCOLORBTN 當一個按鈕控件將要被繪製時&lt;br /&gt;發送此消息給它的父窗口 通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置按紐的文本和背景顏色&lt;br /&gt;WM_CTLCOLORDLG 當一個對話框控件將要被繪製&lt;br /&gt;前發送此消息給它的父窗口,通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置對話框的文本背景顏色&lt;br /&gt;WM_CTLCOLORSCROLLBAR 當一個滾動條控件將要被繪製時發送此消息給它的父窗口 通過響應這條消息，所有者窗口可以通過使用給定的相關顯示設備的句柄來設置滾動條的背景顏色&lt;br /&gt;WM_CTLCOLORSTATIC 當一個靜態控件將要被繪製時發送此消息給它的父窗口 通過響應這條消息，所有者窗口可以 通過使用給定的相關顯示設備的句柄來設置靜態控件的文本和背景顏色&lt;br /&gt;WM_MOUSEFIRST WM_MOUSEMOVE 移動鼠標&lt;br /&gt;WM_LBUTTONDOWN 按下鼠標左鍵&lt;br /&gt;WM_LBUTTONUP 釋放鼠標左鍵&lt;br /&gt;WM_LBUTTONDBLCLK 雙擊鼠標左鍵&lt;br /&gt;WM_RBUTTONDOWN 按下鼠標右鍵&lt;br /&gt;WM_RBUTTONUP 釋放鼠標右鍵&lt;br /&gt;WM_RBUTTONDBLCLK 雙擊鼠標右鍵&lt;br /&gt;WM_MBUTTONDOWN 按下鼠標中鍵&lt;br /&gt;WM_MBUTTONUP 釋放鼠標中鍵&lt;br /&gt;WM_MBUTTONDBLCLK 雙擊鼠標中鍵&lt;br /&gt;WM_MOUSEWHEEL 當鼠標輪子轉動時發送此消息個當前有焦點的控件&lt;br /&gt;WM_PARENTNOTIFY 當MDI子窗口被創建或被銷毀&lt;br /&gt;，或用戶按了一下鼠標鍵而光標在子窗口上時發送此消息給它的父窗口&lt;br /&gt;WM_ENTERMENULOOP 發送此消息通知應用程序的&lt;br /&gt;主窗口that已經進入了菜單循環模式&lt;br /&gt;WM_EXITMENULOOP 發送此消息通知應用程序的&lt;br /&gt;主窗口that已退出了菜單循環模式&lt;br /&gt;WM_SIZING 當用戶正在調整窗口大小時發送此消息給窗口 通過此消息應用程序可以監視窗口大小和位置也可以修改他們&lt;br /&gt;WM_CAPTURECHANGED 發送此消息 給窗口當它失&lt;br /&gt;去捕獲的鼠標時&lt;br /&gt;WM_MOVING 當用戶在移動窗口時發送此消息，通過此消息應用程序可以監視窗口大小和位置也可以修改他們&lt;br /&gt;WM_POWERBROADCAST 此消息發送給應用程序來通&lt;br /&gt;&lt;br /&gt;知它有關電源管理事件&lt;br /&gt;WM_DEVICECHANGE 當設備的硬件配置改變時&lt;br /&gt;&lt;br /&gt;發送此消息給應用程序或設備驅動程序&lt;br /&gt;WM_MDIDESTROY 應用程序發送此消息給多文&lt;br /&gt;檔的客戶窗口來關閉一個MDI 子窗口&lt;br /&gt;WM_MDIACTIVATE 應用程序發送此消息給多文&lt;br /&gt;&lt;br /&gt;檔的客戶窗口通知客戶窗口激活另一個MDI子窗口，當客戶窗口收到此消息後，它發出WM_MDIACTIVE消息給MDI子窗口（未激活）激活它&lt;br /&gt;WM_MDIRESTORE 程序 發送此消息給MDI客戶&lt;br /&gt;窗口讓子窗口從最大最小化恢復到原來大小&lt;br /&gt;WM_MDINEXT 程序 發送此消息給MDI客戶&lt;br /&gt;窗口激活下一個或前一個窗口&lt;br /&gt;WM_MDIMAXIMIZE 程序發送此消息給MDI客戶&lt;br /&gt;窗口來最大化一個MDI子窗口&lt;br /&gt;WM_MDITILE 程序 發送此消息給MDI客戶&lt;br /&gt;窗口以平鋪方式重新排列所有MDI子窗口&lt;br /&gt;WM_MDICASCADE 程序 發送此消息給MDI客戶&lt;br /&gt;窗口以層疊方式重新排列所有MDI子窗口&lt;br /&gt;WM_MDIICONARRANGE 程序 發送此消息給MDI客戶窗口重新排列所有最小化的MDI子窗口&lt;br /&gt;WM_MDIGETACTIVE 程序 發送此消息給MDI客戶&lt;br /&gt;窗口來找到激活的子窗口的句柄&lt;br /&gt;WM_MDISETMENU 程序 發送此消息給MDI客戶&lt;br /&gt;窗口用MDI菜單代替子窗口的菜單&lt;br /&gt;WM_CUT 程序發送此消息給一個編輯框或combobox來刪除當前選擇的文本&lt;br /&gt;WM_COPY 程序發送此消息給一個編輯框或combobox來複製當前選擇的文本到剪貼板&lt;br /&gt;WM_PASTE 程序發送此消息&lt;br /&gt;&lt;br /&gt;給editcontrol或combobox從剪貼板中得到數據&lt;br /&gt;WM_CLEAR 程序發送此消息&lt;br /&gt;&lt;br /&gt;給editcontrol或combobox清除當前選擇的內容&lt;br /&gt;WM_UNDO 程序發送此消息給editcontrol或combobox撤消最後一次操作&lt;br /&gt;WM_DESTROYCLIPBOARD 當調用ENPTYCLIPBOARD函數時 發送此消息給剪貼板的所有者&lt;br /&gt;WM_DRAWCLIPBOARD 當剪貼板的內容變化時發&lt;br /&gt;&lt;br /&gt;送此消息給剪貼板觀察鏈的第一個窗口 它允許用剪貼板觀察窗口來顯示剪貼板的新內容&lt;br /&gt;WM_PAINTCLIPBOARD 當剪貼板包含CF_OWNERDIPLAY格式的數據並且剪貼板觀察窗口的客戶區需要重畫&lt;br /&gt;WM_SIZECLIPBOARD 當剪貼板包含CF_OWNERDIPLAY格式的數據並且剪貼板觀察窗口的客戶區域的大小已經改變是&lt;br /&gt;此消息通過剪貼板觀察窗口發送給剪貼板的所有者&lt;br /&gt;WM_ASKCBformATNAME 通過剪貼板觀察窗口發送&lt;br /&gt;此消息給剪貼板的所有者來請求一個CF_OWNERDISPLAY格式的剪貼板的名字&lt;br /&gt;WM_CHANGECBCHAIN 當一個窗口從剪貼板觀察&lt;br /&gt;鏈中移去時發送此消息給剪貼板觀察鏈的第一個窗口&lt;br /&gt;WM_HSCROLLCLIPBOARD 此消息通過一個剪貼板觀察窗口發送給剪貼板的所有者 它發生在當剪貼板包含CFOWNERDISPALY格式的數據並且有個事件在剪貼板觀察窗的水平滾動條上 所有者應滾動剪貼板圖像並更新滾動條的值&lt;br /&gt;WM_QUERYNEWPALETTE 此消息發送給將要收到焦&lt;br /&gt;點的窗口，此消息能使窗口在收到焦點時同時有機會實現他的邏輯調色板&lt;br /&gt;WM_PALETTEISCHANGING 當一個應用程序正要實現它的邏輯調色板時發此消息通知所有的應用程序&lt;br /&gt;WM_PALETTECHANGED 此消息在一個擁有焦點的&lt;br /&gt;窗口實現它的邏輯調色板後發送此消息給所有頂級並重疊的窗口，以此來改變系統調色板&lt;br /&gt;WM_HOTKEY 當用戶按下由REGISTERHOTKEY函數註冊的熱鍵時提交此消息&lt;br /&gt;WM_PRINT 應用程序發送此消息僅當&lt;br /&gt;&lt;br /&gt;WINDOWS或其它應用程序發出一個請求要求繪製一個應用程序的一部分&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6648236360472666945-5040963531594256439?l=gamelifex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/5040963531594256439/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://gamelifex.blogspot.com/2008/09/sendmessage.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/5040963531594256439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/5040963531594256439'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/2008/09/sendmessage.html' title='SendMessage函數完全使用手冊'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6648236360472666945.post-1170559395384962313</id><published>2008-09-25T03:20:00.003+08:00</published><updated>2008-09-25T03:45:37.507+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>VB API 之 模擬鍵盤的行動</title><content type='html'>VB API函數： keybd_event                             ←函數模擬鍵盤行動&lt;br /&gt;&lt;br /&gt;API宣告：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;keybd_event &lt;/span&gt;&lt;br /&gt;Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;範例:&lt;/span&gt;&lt;br /&gt;Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)&lt;br /&gt;&lt;br /&gt;Private Sub Timer1_Timer()&lt;br /&gt;  Call keybd_event(82, 0, 0, 0) &lt;span style="color: rgb(0, 153, 0);"&gt;'模擬按下"R"鍵 &lt;/span&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;SendMessage()  與  PostMessage()&lt;/span&gt;&lt;br /&gt;兩者宣告幾乎一樣 差別在於：&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SendMessage()&lt;br /&gt;       將message送出去之後便會停住 &lt;/span&gt;，&lt;span style="color: rgb(0, 0, 0);"&gt;等待該message處理完之後，才會return。&lt;br /&gt;PostMessage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;br /&gt;       送出去之後馬上return，&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;使用&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PostMessage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;會有速度比較快的優點&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;API宣告：&lt;br /&gt;&lt;span style="font-size:100%;"&gt; Declare Function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SendMessage&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Declare Function &lt;span style="color: rgb(0, 0, 0);"&gt;PostMessage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long&lt;br /&gt;&lt;br /&gt;這個函數有四個參數，它們的含義如下：&lt;br /&gt;&lt;br /&gt;    第一個參數&lt;span style="font-weight: bold;"&gt;hwnd&lt;/span&gt;是窗口句柄，是一個長整型數。Windows給每個控件一個編號，這個編號就稱為窗口句柄。有了這個句柄，我們就可以告訴Windows我們要控制哪個控件，所以這個句柄在API調用中至關重要。Visual Basic的大多數控件都包括hwnd屬性，如下拉框、TreeView等，窗體也有這個屬性。但也有一些控件沒有這個屬性，如標籤控件。沒有這個屬性就無法利用Windows API函數，但可以節省系統資源。&lt;br /&gt;&lt;br /&gt;    第二個參數是&lt;span style="font-weight: bold;"&gt;要傳遞的消息&lt;/span&gt;。API文檔中包括了所有消息的含義和用法，而每個消息所定義的常數在Win32api.txt中有可以找到。使用SendMessage傳遞消息，大多是為了完成以下幾個工作：&lt;br /&gt;&lt;br /&gt;    1、設置控件的一些選項，像我們要使用的CB_SETDROPPEDWIDTH的就屬於這種情況。儘管Visual Basic的每個控件都提供了許多屬性，但仍然有許多控件的選項沒有包括在其中。而這些選項中的大多數都可以利用SendMessage進行設置。&lt;br /&gt;    2、獲得控件的一些設置。同上一種情況相反，有時我們需要獲得控件的一些設置，這相當於讀取屬性。例如，如果想知道一個下拉框的下拉部分的寬度是多少，就可以向控件發送CB_GETDROPPEDWIDTH消息。對於這種情況，SendMessage函數的返回值就是結果。&lt;br /&gt;    3、執行一定的操作。例如，我們要在下拉框中尋找是否"ABC"這個字符串。當然，我們可以編寫一個循環，逐條比較看是否存在這樣的字符串。如果使用API，我們只需要向下拉框發送CB_FINDSTRING消息，這條消息就會自動進行查找工作並返回結果。&lt;br /&gt;    4、模擬用戶操作。我們有時希望模擬用戶的操作，比如關閉其他應用程序的窗口。其實只要我們能知道那個窗口的句柄，我們就可以發送WM_CLOSE消息給那個窗口，窗口接受到這條消息就會關閉，如同用戶關閉窗口一樣。&lt;br /&gt;    API消息的妙用很多，我們這裡只是介紹如何使用SendMessage來發送消息，更進一步的應用就留給讀者繼續探索了。&lt;br /&gt;&lt;br /&gt;    SendMessage還有兩個參數&lt;span style="font-weight: bold;"&gt;wParam&lt;/span&gt;和&lt;span style="font-weight: bold;"&gt;lParam&lt;/span&gt;。每個消息都具有這兩個參數，它們可能包括一些其他信息，其含義由具體的消息來決定的。比如，我們要調用的CB_SETDROPPEDWIDTH消息，其wParam 表示要設置下拉部分的寬度是多少，以像素為單位；而lParam參數沒有使用，必須設置為0。&lt;br /&gt;    可能你已經注意到了，這裡SendMessage中的lParam定義為Any類型。前面我們已經提到，指定 Any類型禁止Visual Basic進行類型檢查，從而允許將任意數據類型傳遞給該過程。由於每條消息對參數的類型和傳遞方式的要求都不同：有的可能要求為Long型，有的可能要求為自定義類型；大多數要求按傳值方式傳遞，但也有一些要求按傳地址方式。為了滿足各種要求，我們將這個參數定義為Any類型。比如，我們要傳遞一個 Long型變量lData。如果消息要求傳地址方式傳遞，可以使用：&lt;br /&gt;    SendMessage ……, lData&lt;br /&gt;    而如果要求傳值方式傳遞，則使用&lt;br /&gt;    SendMessage ……, ByVal lData&lt;br /&gt;    如果傳遞常數，我們則需要使用類型後綴來指定常數的類型，比如"0&amp;amp;"，表示Long型的常數0，如&lt;br /&gt;    SendMessage ……, ByVal 0&amp;amp;&lt;br /&gt;    我們也可以使用類型轉換函數CLng將常數指定為Long型，如CLng(0)。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6648236360472666945-1170559395384962313?l=gamelifex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/1170559395384962313/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vb-api.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/1170559395384962313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/1170559395384962313'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vb-api.html' title='VB API 之 模擬鍵盤的行動'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6648236360472666945.post-7016030180699428681</id><published>2008-09-25T03:07:00.002+08:00</published><updated>2008-09-25T03:13:16.490+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><title type='text'>VB.NET的API，取得視窗進程</title><content type='html'>VB API函數：&lt;br /&gt;FindWindow                              ←尋找窗口列表中第一個符合指定條件的頂級窗口 &lt;br /&gt;GetWindowThreadProcessId       ←獲取與指定窗口關聯在一起的一個進程和線程標識符&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;相關API聲明：&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FindWindow &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;GetWindowThreadProcessId  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)  As Long&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;參考代碼：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long&lt;br /&gt;Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long)As Long&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'利用TIMER刷新&lt;/span&gt;&lt;br /&gt;Private Sub Timer1_Timer()&lt;br /&gt;Dim hwnd As Long&lt;span style="color: rgb(0, 153, 0);"&gt;' 儲存 FindWindow 函數返回的句柄 &lt;/span&gt;&lt;br /&gt;hwnd = FindWindow(vbNullString, "Windows Media Player")&lt;span style="color: rgb(0, 153, 0);"&gt;' 取得進程標識符 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'只要把Windows Media Player換成遊戲的名稱就可了！ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If hwnd = 0 Then&lt;br /&gt;    Label1.Caption = "遊戲未運行"&lt;br /&gt;Else&lt;br /&gt;    Label1.Caption = "遊戲已運行"&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6648236360472666945-7016030180699428681?l=gamelifex.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gamelifex.blogspot.com/feeds/7016030180699428681/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vbnetapi.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/7016030180699428681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6648236360472666945/posts/default/7016030180699428681'/><link rel='alternate' type='text/html' href='http://gamelifex.blogspot.com/2008/09/vbnetapi.html' title='VB.NET的API，取得視窗進程'/><author><name>Jason</name><uri>http://www.blogger.com/profile/00667801849417949181</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_BsYyM_o2_Pc/S8A0d9jcmJI/AAAAAAAAAOA/jkCxsQg-hCM/S220/%E7%B4%AF.bmp'/></author><thr:total>0</thr:total></entry></feed>
