Wednesday, August 4, 2010

The API VB programming essence (1)


Friendly and easy to learn Visual Basic to a visual development environment known as the first choice for people to learn computer programming language. Currently, about 300 million people worldwide use the Visual Basic language. If you want to excel in this vast beings, then you had to learn the API (Application Program lnterface, the Windows application programming interface) programming. Do not know API, it can not become master.
Section I: API base
In the final analysis is a series of low-level API function, the system provides to users for access to the operating system core, high-level programming approach. Through the statement of Visual Basic applications can access the external process of Windows API (and other external DLLs). In a statement after the procedure, call its methods and the process of calling the same Visual Basic itself. To declare a DLL procedure, required in the code window of the "Statement" section to add a Declare statement, if the procedure returns a value, it should be declared as a Function. For example:
Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [, [ByVal] variable [As type ]]...])] As Type
If there is no return value, it can be declared as a Sub.
By default, the standard DLL module declaration process, the application can call it from anywhere. In other types of modules defined in private DLL process module to be added to the front in their Private keyword to show distinction. Drew particular attention, in 32-bit Visual Basic in the process name is case sensitive. In the previous 16-bit versions are not case sensitive, it is easy for beginners to go wrong.
Declare statement in Visual Basic Lib clause is used to tell how to find the dll file that contains the process. If the reference process is Windows core library (User32, Kernel32 or GDI32), you can not include file extension. For example:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long. For the other DLL, Lib clause to specify the file path and extension.
If the process of Windows API calls to use the string, then the statement must be increased in a statement Alias clause to specify the correct character set.鍖呭惈瀛楃涓茬殑Windows API鍑芥暟瀹?闄呮湁涓ょ鏍兼ANSI鏍煎紡Unicode鏍煎紡銆傚洜姝わ紝鍦?Windows澶存枃浠朵腑锛屾瘡涓寘鍚瓧绗︿覆鐨勫嚱鏁伴兘鍚屾椂鏈?ANSI鐗堟湰鍜孶nicode鐗堟湰銆?br />渚嬪锛屼笅闈㈡槸SetWindowText鍑芥暟鐨勪袱绉岰璇█鎻?杩般?鍙互鐪嬪埌锛岀涓?釜鎻忚堪灏嗗嚱鏁板畾涔変负SetWindowTextA, 灏鹃儴鐨?amp;quot;A"琛ㄦ槑瀹冩槸涓?釜ANSI鍑芥暟锛?br />SetWindowTextA(HWND hWnd,LPCSTR lpString);
绗簩涓弿杩板皢瀹冨畾涔変负SetWindowTextW锛屽熬閮ㄧ殑 "w"琛ㄦ槑瀹冩槸涓?釜Unicode鍑芥暟锛?br />SetWindowTextW(HWND Hwnd,LPCWSTR lpString);
鍥犱负涓や釜鍑芥暟瀹為檯鐨勫悕绉伴兘涓嶆槸"SetWindow Text"锛岃寮曠敤姝g‘鐨勫嚱鏁板氨蹇呴』澧炲姞涓?釜Alias瀛愬彞锛?br />Private Declare Function SetwindowText Lib "user32" Alias "SetWindowTextA"(ByVal hwnd As Longg锛孊yVal lpString As String) As Long
璇锋敞鎰忥紝 Alias瀛愬彞鍚庨潰鐨勫瓧绗︿覆蹇呴』鏄繃绋嬬殑 鐪熸鍚嶇О锛屽繀椤绘槸鍖哄垎澶у皬鍐欑殑銆備簨瀹炰笂锛屾偍鍙渶瑕?璁颁綇锛屽彧鏈塛indows NT鎵嶆敮鎸乁nicode鏍煎紡锛岃? Windows 95鍙敮鎸丄NSI鏍煎紡灏辫浜嗐?鑷充簬涓よ?鐨勫尯 鍒紝浣滀竴鑸殑搴旂敤绋嬪簭寮?彂鏄笉闇?浜嗚В鐨勩?
VB5涓撲笟鐗堝湪VB鐩綍鐨刉inapi瀛愮洰褰曚笅锛岀敤鍑?涓枃浠舵彁渚涗簡鍏充簬API鐨勪俊鎭? Win32api.txt鏂囦欢涓?鍖呭惈浜?2浣峎indows API鍑芥暟涓敤鍒扮殑鍑芥暟鍜岀被鍨嬬殑 缁撴瀯澹版槑浠ュ強鍏ㄥ眬甯搁噺鐨勫?銆傜敤鎴峰彲浠ョ敤VB鏈韩甯︾殑澶?鎺ョ▼搴?amp;quot;API娴忚鍣?amp;quot;鏉ユ柟渚垮湴浣跨敤Win32api锛嶵xt锛屽涓?鎵?ず锛?br />鐐瑰嚮鑿滃崟鏂囦欢椤圭殑"鍔犺浇鏂囨湰鏂囦欢鈥?amp;quot;浠嶸B鐩?褰曚笅鐨刉INAPI鐩綍涓?鎷?amp;quot;WIN32API.TXT"锛屽氨鍙互 鏌ョ湅WINDOWS 95绯荤粺鐨凙PI鍑芥暟鐨勫0鏄庛?甯告暟瀹氫箟鍜?鏁版嵁绫诲瀷浜嗐?渚嬪锛屾垜浠墦绠楁煡鐪嬪嚱鏁癐nverRect() 鐨勫0鏄庛?棣栧厛锛岀偣鍑?amp;quot;鎼滅储"鎸夐挳锛岃緭鍏ュ瓧绗︿覆 "InverRect"銆傚湪"鍙?椤?amp;quot;鏍忎腑锛屽叞鑹茬殑浜害鏉″皢绉?鍔ㄥ埌"InverRect"椤逛笂銆傚啀鐐规寜"娣诲姞"鎸夐挳锛屽湪"閫?瀹氶」"涓氨鍑虹幇"InverRect"鍦╒isual Basic涓殑 澹版槑浜嗐?鎺ヤ笅鏉ヨ嚜鐒舵槸鐐规寜"澶嶅埗"鎸夐挳锛岀劧鍚庡皢绐?鍙e垏鎹㈠埌Visual Basic寮?彂鐜涓紝鍦ㄩ渶瑕佸0鏄嶢PI 鍑芥暟鐨勫湴鏂笴trl锛媀锛堢矘璐达級鍗冲彲銆?br />涓婇潰鎵?鐨勫0鏄庢柟娉曡櫧鐒剁畝鍗曪紝浣嗗彧鏈変娇鐢╓IN DOWS鏈韩鐨凙PI鍑芥暟鎵嶈兘杩欐牱銆傚浜庣涓夋柟鎻愪緵鐨勫姩 鎬侀摼鎺ュ簱锛圖LL锛夋偍鍙湁鐢ㄩ敭鐩樿?鑰佸疄瀹炲湴鏁蹭簡銆?br />绗簩鑺傦細鐗涘垁灏忚瘯
鐜板湪璇昏?涓?畾寰堟兂鑷繁浜茶嚜璇曚竴涓嬶紝涓嬮潰涓句袱涓?瀹為檯搴旂敤鐨勪緥瀛愯澶у浣撲細涓?笅API鐨勫鐢ㄥ惂锛?br />1.浣夸竴涓獥浣撳缁堜繚鎸佸湪灞忓箷鐨勬渶涓婇潰
鎴戜滑鐭ラ亾VB鏈韩鑷甫鐨勫嚱鏁版槸闅句互瀹屾垚姝ゅ姛鑳?鐨勶紝鎴戜滑鍙互閫氳繃璋冪敤Windows鐨凙PI鍑芥暟锛?SetWindowPos杈惧埌鎴戜滑鐨勮姹傘? Follow these steps:
锛?锛夊惎鍔╒B5寤虹珛涓?釜鏂板伐绋嬶紝鍦ㄨ宸ョ▼涓坊鍔犱竴 涓ā鍧楋紙Moudel锛夛紝鍦ㄨ妯″潡涓敤涓婅堪鐨?amp;quot;API渚嬭鍣?amp;quot; 娣诲姞濡備笅鐨勮API鍑芥暟鐨勫嚱鏁板0鏄庡拰甯搁噺澹版槑閮ㄥ垎锛?br />''API function declaration
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
''甯搁噺澹版槑
Global Const SWP_HIDEWINDOW = &H80
Global Const SWP_NOACTIVATE = &H10
Global Const SWP_NOCOPYBITS = &H100
Global Const SWP_NOMOVE = &H2
Global Const SWP_NOOWNERZORDER = &H200
Global Const SWP_NOREDRAW = &H8
Global Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Global Const SWP_NOSIZE = &H1
Global Const SWP_NOZORDER = &H4
Global Const SWP_SHOWWINDOW = &H40
Global Const HWND_BOTTOM = 1
Global Const HWND_BROADCAST = &HFFFF&
Global Const HWND_DESKTOP = 0
Global Const HWND_NOTOPMOST = -2
Global Const HWND_TOPMOST = -1
Global Const HWND_TOP = 0
Global Const Flags=SWP_NOMOVE Or SWP_NOSIZE
杩欓噷浠?amp;quot;SWP_"寮?ご鐨勫父閲忔槸琛ㄧず绐椾綋鎵?叿鏈夌殑 椋庢牸锛岃繖浜涘父閲忓彲浠ラ?杩嘨B涓殑"OR"鎿嶄綔绗︾粍鍚堝湪 涓?捣銆傝?浠?amp;quot;HWND_"寮?ご鐨勫父閲忚〃绀虹獥浣撳湪妗岄潰涓婄殑 浣嶇疆銆備粠杩欎簺甯搁噺鐨勮嫳鏂囧崟璇嶇殑鎰忎箟涓婅鑰呭簲璇ュ緢瀹?鏄撶悊瑙d粬浠墍鍏锋湁鐨勯鏍间簡銆傛墍浠ョ瑪鑰呭氨涓嶄竴涓?幓璇?鏄庝簡銆傝嚦浜庝负浠?箞瑕佹坊鍔犺繖浜涘父閲忚?涓嶆槸鍒殑杩欏氨瑕?鎮ㄥ幓鏌ョ湅Windows SDK鍏充簬璇ュ嚱鏁扮殑甯姪鏂囨。浜嗐?褰?鐒惰繖瀵逛簬鍒濆鑰呮潵璇存湁涓?畾鐨勯毦搴︼紝浣嗕笉瑕佺晱鎯э紝鍙?瑕佹偍浠旂粏鐪嬪府鍔╁氨浼氭參鎱㈡悶鎳傜殑銆傚洜涓鸿繖浜汚PI鍑芥暟 鏄负C鍜孋锛嬶紜鐨勭紪绋嬩汉鍛樼紪鍐欑殑锛屾墍浠ュ鏋滄偍鎳備竴鐐?C++鐨勮瘽浼氬緢瀹规槗鐞嗚В鐨勩?
锛?锛夌幇鍦ㄥ彧瑕佸湪鎮ㄦ兂瑕佹鍔熻兘鐨勫湴鏂硅皟鐢ㄨ鍑芥暟 灏卞彲浠ヤ簡锛岃皟鐢ㄧ殑鏂规硶濡傦細
Dim Success as Long
SuccesS锛漇etwindowPos(me.HWnd. HWND_TOPMOST,0,0,0,0,FLAGS)
鑻uccess杩斿洖鐨勫?涓嶇瓑浜庨浂鍒欒〃绀鸿皟鐢ㄦ垚鍔熴?
姣斿鍦ㄦ煇涓獥浣撶殑Load浜嬩欢涓姞鍏ヤ笂杩扮殑涓よ浠?鐮侊紝灏卞彲浠ヨ揪鍒颁娇璇ョ獥浣撳缁堜綅浜庡睆骞曟渶涓婇潰鐨勭洰鐨勩?
缁嗗績鐨勮鑰呭彲鑳藉凡缁忓彂鐜颁笂闈㈢殑渚嬪瓙涓殑妯″潡澹?鏄庝腑澹版槑浜嗗ソ鍑犱釜甯搁噺锛屽彲涓轰粈涔堝彧鐢ㄥ埌涓変釜鍛紵鐜?鍦ㄦ偍鍙互璇曠潃鏀瑰彉涓?笅API鍑芥暟"SetWindowPos"涓?鐨勭浜屼釜鍙傛暟鎴栧父閲廎LAGS涓殑椤癸紝鐪嬬湅鎮ㄧ殑绐椾綋浼?鍑虹幇浠?箞鏍风殑鏁堟灉锛?br />2. VB5涓浣曞睆钄芥帀win95涓殑CTRL_ALT_DEL锛?CTRL_ESC, ALT_TAB涓夌粍鐑敭閫氳繃璋冪敤API鍑芥暟"SystemParametersInfo"鏉ュ疄 鐜般?
棣栧厛鍒涘缓涓?柊宸ョ▼锛涘湪姝ゅ伐绋嬩腑娣诲姞涓?釜绐椾綋鍜?涓?釜妯″潡锛涘湪绐椾綋涓婃嫋鏀句袱涓寜閽垎鍒懡鍚嶄负 "cmdDisable","cmdEnable"锛汣opy濡備笅浠g爜鍏ユā鍧椾腑锛?br />Public Declare Function SystemParametersInfo Lib "user32" Ahias "SystemParametersInfoA" (ByVal uAction As Long,ByVal uParam As Long, lpvParam As Any锛孊yVal fuWinIni As Long)AS Long
Public Const SPI_SCREENSAVERRUNNING=97
鍦ㄧ獥浣撶殑浠g爜缂栬緫鍖篊opy濡備笅浠g爜锛?br />''浣夸笁缁勭儹閿け鏁?br />Private Sub cmdDisable_click()
SystemParametersInfo
SPI_SCREENSAVERRUNNING,True,byVal 1&,0
End Sub

Private Sub Form_Unload (Cancel As Integer)
''绋嬪簭閫?嚭鍓嶆槸鐑敭鏈夋晥
CndEnable_Click
End Sub
鑻ュ皢姝ゅ姛鑳藉拰灞忓箷淇濇姢绋嬪簭缁撳悎鍒颁竴璧凤紝閭f偍鐨勫睆骞?淇濇姢绋嬪簭涓?畾澧炶壊璁稿銆?br />API鍑芥暟鐨勭畝鍗曡皟鐢ㄤ緥瀛愬氨鏄繖涔堝鏄擄紝鐩镐俊鐜板湪鎮?瀵笰PI鐨勮皟鐢ㄥ凡涓嶅啀鎰熷埌绁炵浜嗭紝鎺ヤ笅鏉ユ垜浠氨鐪嬬湅涓?釜 姣旇緝澶嶆潅鐨勫簲鐢ㄣ?
绗笁鑺傦細楂樻墜杩涢樁
涓婇潰鐨勫叧浜嶢PI鐨勮皟鐢ㄧ殑渚嬪瓙鍙槸涓轰簡甯︽偍鍘籛in dows API涓栫晫涓幓鎺㈢储涓?笅銆傜浉淇℃偍宸叉帰绱㈠埌浜嗕竴鐐圭湁 鐩苟鎯冲幓瀹炵幇涓?簺鏇?amp;quot;濂界帺"鐨勪笢瑗夸簡銆?Good!涓嬮潰灏卞悜鎮?浠嬬粛涓?釜寰?amp;quot;濂界帺"鍚屾椂鍙堜細浣挎偍鐨勭▼搴忕湅璧锋潵鏇翠笓涓氬寲 鐨勪竴涓狝PI璋冪敤銆?br />鐩镐俊鎮ㄧ殑鏈哄櫒涓婁竴瀹氳鏈?amp;quot;閲戝北璇嶉湼"锛岃瘯鐫?惎鍔ㄥ畠 鎮ㄥ彂鐜颁簡浠?箞锛熷惎鍔ㄧ敾闈㈣繃鍚庡畠"涓嶈浜?amp;quot;銆傛妸榧犳爣绉诲埌 妗岄潰鐨勫彸涓嬭锛屽師鏉ュ畠浠ュ浘鏍囩殑褰㈠紡"钘忓湪" Windows 鐨勬墭鐩樹腑銆傜敤榧犳爣鍙冲嚮瀹冭繕浼氬脊鍑轰竴涓彍鍗曞姛鑳介」渚涙偍 閫夋嫨銆傜幇鍦ㄦ偍涓?畾鎯虫妸鑷繁鐨勭▼搴忎篃鏀惧埌鎵樼洏锛岃繖鏍锋偍鐨?绋嬪簭澶氬叿鏈変笓涓氭按鍑嗭紒
涓嬮潰鏄鍔熻兘鐨勫疄鐜版楠わ細
1.杩欓噷鎴戜滑璋冪敤鐨凙PI鍑芥暟鏄細 "Shell_NotifyIcon"锛屽湪鎮ㄧ殑妯″潡涓坊鍔犲涓嬬殑鍑芥暟澹版槑 鍜屽父閲忓0鏄庯細
''浠ヤ笅甯搁噺鍛婅瘔绯荤粺鍦ㄦ墭鐩樹腑鎮ㄧ殑鍥炬爣涓婂彂鐢熶簡浠?箞 鎿嶄綔
''甯搁噺澹版槑
Public Const WM_MOUSEMOVE = &H200 ''鍦ㄥ浘鏍囦笂绉诲姩榧犳爣
Public Const WM_LBUTTONDOWN = &H201 ''榧犳爣宸﹂敭鎸変笅
Public Const WM_LBUTTONUP = &H202 ''榧犳爣宸﹂敭閲婃斁
Public Const WM_LBUTTONDBLCLK = &H203 ''鍙屽嚮榧犳爣宸﹂敭
Public Const WM_RBUTTONDOWN = &H204 ''榧犳爣鍙抽敭鎸変笅
Public Const WM_RBUTTONUP = &H205 ''榧犳爣鍙抽敭閲婃斁
Public Const WM_RBUTTONDBLCLK = &H206 ''鍙屽嚮榧犳爣鍙抽敭
Public Const WM_SETHOTKEY = &H32 ''鍝嶅簲鎮ㄥ畾涔夌殑鐑敭
''API function declaration
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias " Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
''鑷畾涔変竴涓皟鐢ˋPI Shell_NotifyIcon瑕佺敤鍒扮殑绫?鍨?amp;quot;NOTIFYICONDATA"
Public Type NOTIFYICONDATA
cdSize As Long ''NOTIFYICONDATA绫诲瀷鐨勫ぇ灏?br />hwnd As Long ''浣犵殑搴旂敤绋嬪簭绐椾綋鐨勫悕鏌?br />uId As Long ''搴旂敤绋嬪簭鍥炬爣璧勬簮鐨処D鍙?br />uFlags As Long ''浣块偅浜涘弬鏁版湁鏁堝畠鏄互涓嬫灇涓剧被鍨嬩腑鐨?br />''NIF_MESSAGE銆丯IF_ICON銆丯IF_TIP涓夌粍鐨勭粍鍚?br />uCallbackMessage As Long ''榧犳爣绉诲姩鏃舵妸姝ゆ秷鎭彂缁欒鍥炬爣鐨勭獥浣?br />hIcon As Long ''鍥炬爣鍚嶆焺
szTip As String*64 ''褰撻紶鏍囧湪鍥炬爣涓婃椂鏄剧ず鐨凾ip鏂囨湰
End Type

''杩欐槸涓?釜鏋氫妇绫诲瀷瀹冨憡璇堿PI Shell_NotifyIcon鍘诲仛浠?箞鎿嶄綔
Public Enum enm_NIM_Shell
NIM_ADD=&H40 ''鍦ㄢ?閲戠鈥濅腑鍔犱竴鍥炬爣
NIM_MODIFY=&H1 ''淇敼鈥滈噾纰熲?涓殑鍥炬爣
NIM_DELETE=&H2 ''鍒犻櫎鈥滈噾纰熲?涓殑鍥炬爣
NIF_MESSAGE=&H1 ''浣跨被鍨?amp;quot;NOTIFYICONDATA"涓殑uCallbackMessage鏈夋晥
NIF_ICON=&H2 ''浣跨被鍨?amp;quot;NOTIFYICONDATA"涓殑hIcon鏈夋晥
NIF_TIP=&H4 ''浣跨被鍨?amp;quot;NOTIFYICONDATA"涓殑szTip鏈夋晥
WM_MOUSEMOVE=&H200 ''浣块紶鏍囩Щ鍔ㄦ秷鎭湁鏁?br />End Enum
''瀹氫箟涓?釜"NOTIFYICONDATA"绫诲瀷鐨勫彉閲?br />Public nidProgramData As NOTIFYICONDATA
浠ヤ笂鏄嚱鏁板強甯搁噺澹版槑鍜岃嚜瀹氫箟鐨勪竴涓被鍨嬪彉閲忥紝涓?闈㈡槸姝PI鍑芥暟鐨勮皟鐢ㄦ柟娉曪細
2. 鍦ㄧ獥浣撲笂鐢ㄨ彍鍗曠紪杈戜竴涓叿鏈夊涓嬩俊鎭殑鑿滃崟椤癸細
涓昏彍鍗曪細鏃犳爣棰樸?鍚嶇О(mainMenu)
瀛愯彍鍗曪細鏍囬(API缂栫▼)銆佸悕绉?submnul);
鏍囬(閫?嚭)銆佸悕绉?submnu2).
杩欓噷鍙槸涓句釜渚嬪瓙锛屽叿浣撶殑鍔熻兘浣犲彲浠ユ牴鎹綘鐨勫叿浣撻渶瑕佹潵缂栬緫姝よ彍鍗曢」
3. 鍦ㄧ獥浣撶殑Load浜嬩欢涓坊鍔犲涓嬩唬鐮侊細
Private Sub Form_Load ()
''闅愯棌绐椾綋
With Me
.Top =-10000
.Left = -10000
.WindowState = vbMinimized
End With
''璁剧疆绫诲瀷NOTIFYICONDATA鎵?叿鏈夌殑鐗瑰緛
With nidprogramData
.cbSize = Len(nidProgramData)
.hwnd = Me.hwnd .uld = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
''瑙﹀彂榧犳爣绉诲姩娑堟伅
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon ''鈥滄墭鐩樷?涓斁鍏ョ獥浣撳浘鏍囷紝浣犲彲浠ユ妸绐椾綋鐨勫浘鏍囨崲鎴愪綘鎵?枩娆㈢殑鍥炬爣
.szTip ="VB 鐨?Win32 API 缂栫▼" & vbNullChar
End With

''璋冪敤璇ュ嚱鏁?br />Shell_NotifyIcon NIM_ADD,nidprogramData
End Sub
''鏍规嵁涓嶅悓鐨勯紶鏍囨秷鎭仛涓嶅悓鐨勬搷浣?br />Private Sub Form_MouseMove(Button As inte ger, Shift As lnteger, x As Single, Y As Single)
On Error GoTo Form_MouseMove_err:
Dim Result As Long
Dim msg As Long
''X鐨勫?渚濊禆涓庢樉绀烘ā寮忕殑璁剧疆
If Me.ScaleMode = vbpixels Then
msg = x
Else
msg = x/Screen.TwipsPerPixe1X
End If
Select Case msg
Case WM_LBUTTONUP
''鍦ㄨ繖閲屽姞鍏ラ紶鏍囧乏閿噴鏀炬椂浣犳兂鍋氱殑鎿嶄綔
Case WM_LBUTTONDBLCLK
''鍦ㄨ繖閲屽姞鍏ュ弻鍑婚紶鏍囧乏閿椂浣犳兂鍋氱殑鎿嶄綔
Case WM_RBUTTONUP
''閫氬父杩欓噷寮瑰嚭浣犵殑鍔熻兘鑿滃崟
PopupMenu mainMenu
Case WM_MOUSEISMOVING
''鍦ㄨ繖閲屽姞鍏ラ紶鏍囨鍦ㄧЩ鍔ㄦ椂浣犳兂鍋氱殑鎿嶄綔
End Select
Exit Sub

Form_MouseMove_err:
''鍦ㄨ繖閲屽姞鍏ヤ綘鐨勫鐞嗗紓甯搁敊璇殑浠g爜
End Sub
4.Run浣犵殑绋嬪簭锛屾偍鏄笉鏄湅鍒颁簡璞♀?閲戝北璇嶉湼鈥濅竴鏍风殑鍔熻兘锛熺浉淇′綘姝ゆ椂鐨勬劅瑙変竴瀹氱壒鍒?鐖解?锛?br />API鐨勪笘鐣宩鏄赴瀵屽褰╃殑锛屽彧瑕佷綘鑲粏蹇冨湴鍘绘帰绱㈠畠浣犱竴瀹氫細鑾峰緱璁稿鎰忔兂涓嶅埌鐨勫ソ涓滆タ銆傛墍浠ョ瑪鑰呰寰楀畾鍊煎緱姣忎竴涓叿鏈夆?濂藉鈥濈簿绁炵殑浜哄幓鎺㈢储瀹冦?鍚庣画鐨勬湡鍒婄瑪鑰呬細鍚戣鑰呰缁嗕粙缁嶄竴浜涙洿濂芥洿鈥滅墰鈥濈殑API璋冪敤






相关链接:



Screen Savers Specialist



Fireworks Produced With Logo



Music TV infringement trial basis have a special levy to the views of the community



Free Mp4 To 3gp Converter



China Anti-Fraud Alliance In The Fight Should Not Be A Person



Mpg to wmv converter



Specialist Cursors And Fonts



Convert Mp3 To Aac



How to quickly assess the adoption of CMMI



for You Games Arcade



VBScript While ... Wend Statement



Tencent sued Staff: to protest the labor contract Tencent Overlord



U.S. Stocks Comment: Sun Continued Blood Loss



What Is Avchd



No comments:

Post a Comment