Go to content Go to navigation Go to search

ÇÉÓÃWin32 APIº¯ÊýÔöÇ¿VBλ²Ù×÷¹¦ÄÜ

January 9th, 2009 by С±à

¡¡¡¡ÕªÒª£ºVisual Basic µÄλ²Ù×÷¹¦ÄܽÏÈõ£¬ÉõÖÁÁ¬×î³£ÓõÄÒÆÎ»ÔËËã¶¼²»Ö§³Ö£¬Òò´ËÔÚʹÓã֣¿ª·¢ÖîÈçÊý¾Ý¼ÓÃÜ¡¢Ñ¹Ëõ¡¢Í¨ÐÅÖ®ÀàµÄ³ÌÐòʱÍùÍùÀ§ÄÑÖØÖØ¡£Õë¶ÔÕâÒ»ÎÊÌ⣬±¾ÎÄÏêϸµØ²ûÊÍÁËλ²Ù×÷µÄ±¾ÖÊ£¬²¢ÀûÓãףé£î32 £Á£Ð£Éº¯ÊýʵÏÖÁËÕûÐͱäÁ¿µÄ²ð·Ö¡¢ºÏ²¢¡¢ÒÆÎ»µÈ£Ö£Â²»Ö§³ÖµÄλ²Ù×÷¹¦ÄÜ¡£
¡¡¡¡¹Ø¼ü´Ê£ºVisual Basic¡¢Î»²Ù×÷¡¢ÒÆÎ»
¡¡¡¡±¾ÎÄÏà¹Ø´úÂ루¸½¼þ£©
¡¡¡¡Ò» ÒýÑÔ
¡¡¡¡¡¡¡¡±ÊÕßÔÚ±à³Ìʵ¼ùÖз¢ÏÖ£¬£Ö£Â¶Ôλ²Ù×÷µÄÖ§³Ö½öÏÞÓÚAND¡¢OR¡¢XOR¼¸ÖÖλÔËË㣬ԶԶ²»ÈçÆäËûµÄ¿ª·¢¹¤¾ßÄÇÑùÈ«Ãæ£¨ÈçVisual C++¡¢C++Builder¡¢DelphiµÈ¿ª·¢¹¤¾ß¶¼ÌṩÁËÕûÐαäÁ¿µÄÒÆÎ»¡¢²ð·Ö¡¢ºÏ²¢µÄÔËË㣩£¬Òò´ËÔÚʹÓã֣±àдÖîÈç¼ÓÃÜÖ®ÀàµÄͨÓÃÊý¾Ý´¦Àí³ÌÐòʱÍùÍùÀ§ÄÑÖØÖØ¡£ÎªÁËʹÒÔºóµÄ¿ª·¢¹¤×÷²»ÔÙÏÝÈ뽩¾Ö£¬ÎÒ¿ªÊ¼Ñ°ÇóÔöÇ¿VBλ²Ù×÷¹¦ÄܵÄͨÓ÷½·¨£¬ÒÔ´ïµ½Ò»ÀÍÓÀÒݵÄЧ¹û¡£
¡¡¡¡£Ö£ÂµÄÊý¾ÝÀàÐͲ»¹»·á¸»£¬ÕûÐÎÊýÖ»°üÀ¨Byte¡¢Integer¡¢LongÈýÖÖÀàÐÍ£¬·Ö±ð¶ÔÓ¦C++ÖÐµÄ unsigned char¡¢short ºÍ long ÀàÐÍ£¬¶øÎÒÃdz£ÓõĶþ×Ö½ÚÎÞ·ûºÅÕûÐÎunsigned short(Ò²½Ð¡°×Ö¡±¡¢Word)¡¢ËÄ×Ö½ÚÎÞ·ûºÅÕûÐÎunsigned long(Ò²½Ð¡°Ë«×Ö¡±¡¢DWord)ÔÚVBÖÐȴûÓб»Ö§³Ö¡£ µ«ºÃÔÚÎÞ·ûºÅÊýºÍÓзûºÅÊýÔÚ¶þ½øÖƵIJã´ÎÉÏûÓÐÈκβî±ð£¬²»Í¬Ö®´¦½öÔÚÓÚ±àÒëÆ÷¶Ô±äÁ¿µÄÀí½â¡£ÔÚ½øÐÐλ²Ù×÷ʱÎÒÃÇÖ»¹ØÐıäÁ¿µÄ¶þ½øÖÆÎ»£¬Òò´Ë£Ö£ÂÖеÄIntegerÀàÐÍ¿ÉÒÔµ±×÷WordÀàÐÍʹÓã¬LongÀàÐÍÔò¶ÔÓ¦DWord¡££¨´ËºóÎÄÖÐÌá¼°µÄIntegerÀàÐ;ùÖ¸VB IntegerÀàÐÍ£¬LongÀàÐ;ùÖ¸VB LongÀàÐÍ£¬Word ¡¢DWordÀàÐÍÔòÊDz»ÒÀÀµÓÚÌØ¶¨±àÒëÆ÷µÄ¶Ô¶þ×Ö½Ú¡¢ËÄ×Ö½ÚÕûÐÎÖµµÄͨÓóƺô£©ÔÙÀ´¿´Î»ÔËËã·½Ãæ£¬¿ÉÒÔ¿´³öVB²»Ö§³ÖÕûÐͱäÁ¿µÄ×óÒÆ¡¢ÓÒÒÆ¡¢²ð·Ö¡¢ºÏ²¢µÈ²Ù×÷¡£
¡¡¡¡¾­¹ýÉÏÊöµÄ·ÖÎöÖ®ºó£¬ÒѾ­È·¶¨Á˹¤×÷µÄ¿ÉÐÐÐԺ͹¤×÷Ä¿±ê£¬ÓÚÊDZÊÕß¾ö¶¨¿ª·¢Ò»¸öͨÓÃÄ£¿éÀ´ÔöÇ¿VBµÄλ²Ù×÷¹¦ÄÜ£¬Õâ¸öÄ£¿éÊÇ¿ÉÖØÓõģ¬Ö»Òª°ÑÕâ¸öÄ£¿é¼ÓÈ빤³ÌÖУ¬¾Í¿ÉÒÔÏóʹÓÃVBµÄÄÚÖú¯ÊýÒ»Ñù͸Ã÷µÄʹÓÃÄ£¿éÖеĺ¯Êý£¬·Ç³£·½±ã¡£Èç¹ûʹÓôóÁ¿µÄ¿ÉÖØÓÃÄ£¿éÀ´¿ª·¢³ÌÐò£¬Ôò¿ª·¢ÖÜÆÚ¶Ì£¬´úÂë¿É¶ÁÐԺã¬Ò×ÓÚά»¤£¬²»ÈÝÒ׳ö´í¡£ ¶þÉè¼ÆË¼Â·
¡¡¡¡1. ʵÏÖÕûÐαäÁ¿µÄ²ð·Ö¡¢ºÏ²¢
¡¡¡¡ÕûÐͱäÁ¿µÄ²ð·Ö¡¢ºÏ²¢ÊǾ­³£ÒªÓõ½µÄ²Ù×÷£¬±ÈÈçIPµØÖ·¾ÍÊÇÒ»¸öËÄ×Ö½ÚµÄË«×Ö£¬ÓÐʱºòΪÁËÒÔµã·ÖÊ®½øÖƵķ½Ê½ÏÔʾIPµØÖ·£¬¾ÍÐèÒªµ¥¶ÀÈ¡³öÿ¸ö×Ö½ÚµÄÖµ£¬¶øÓÐʱºòΪÁ˰ѵã·ÖÊ®½øÖƵÄIPµØÖ·×ª»»Îª¼ÆËã»úÄÚ²¿µÄË«×Ö£¬ÓÖÐèÒª°ÑËĸö×Ö½Ú×éºÏ³ÉÒ»¸öË«×Ö¡£VBûÓÐÌṩÕâÑùµÄ¹¦ÄÜ£¬ËùÒÔÕûÐͱäÁ¿µÄ²ð·Ö¡¢ºÏ²¢Ò²ÊÇÎÒÃÇÕâ´ÎҪʵÏֵŦÄÜ¡£ÁíÍâÕûÐͱäÁ¿µÄ²ð·Ö¡¢ºÏ²¢Ò²ÊÇʵÏÖInteger¡¢LongÀàÐͱäÁ¿ÒÆÎ»µÄǰÌáÌõ¼þ(ºóÃæ¡°·Ö¶øÖÎÖ®²ßÂÔ¡±½«»áÌáµ½)£¬Ö»ÒªÊµÏÖÁËÕûÐͱäÁ¿µÄ²ð·ÖºÏ²¢£¬ÒÆÎ»ÎÊÌâ¾ÍÍêÈ«½â¾öÁË¡£
¡¡¡¡·½·¨1£ºÀûÓÃAPIº¯ÊýCopymemoryʵÏÖ
¡¡¡¡ÔÚÕâÀï±ÊÕßÀûÓÃWin32 API º¯ÊýCopyMemoryʵÏÖÁËÕûÐαäÁ¿µÄ²ð·Ö¡¢ºÏ²¢²Ù×÷¡£ÔÚVBÖÐʹÓÃAPIº¯Êý±ØÐëÒªÉùÃ÷£¬CopyMemoryº¯ÊýµÄÉùÃ÷´úÂëÈçÏ£º
¡¡¡¡Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"_
¡¡¡¡(Destination As Any£¬ Source As Any£¬ ByVal Length As Long)
¡¡¡¡ÆäÖеIJÎÊýDestinationÊÇÄ¿±êÄÚ´æµÄµÚÒ»¸ö×Ö½ÚµØÖ·£¬²ÎÊýSourceÊDZ»¸´ÖÆÄÚ´æµÄµÚÒ»¸ö×Ö½ÚµØÖ·£¬²ÎÊýLengthÊÇÐèÒª¸´ÖƵÄ×Ö½ÚÊý¡£
¡¡¡¡ÊµÏÖÔ­ÀíºÜ¼òµ¥£ºÒªÊµÏÖ²ð·Ö£¬¾ÍÓÃCopyMemoryº¯Êý°ÑÒ»¸öÕûÐαäÁ¿µÄÒ»²¿·Ö¿½±´µ½ÁíÒ»¸ö¸üСµÄÕûÐαäÁ¿µÄµØÖ·¿Õ¼äÖУ»¶øÊµÏֺϲ¢£¬ÔòÀûÓÃCopyMemoryº¯Êý°ÑÁ½¸ö´ýºÏ²¢µÄС±äÁ¿¿½±´µ½ÁíÒ»¸ö´óÕûÐαäÁ¿µÄµØÖ·¿Õ¼äÖС£¼ûʾÀý´úÂ룺
¡¡¡¡Public Function Hi(ByVal Word As Integer) As Byte'ȡһ¸ö×Ö£¨Word£©µÄ¸ß×Ö½Ú£¨Byte£©
¡¡¡¡'INPUT-------------------------------------------
¡¡¡¡'Word ×Ö£¨Word£©
¡¡¡¡'OUTPUT------------------------------------------
¡¡¡¡'·µ»ØÖµ Word²ÎÊýµÄ¸ß×Ö½Ú
¡¡¡¡'Last updated by Liu Qi 2004-3-20¡£
¡¡¡¡Dim bytRet As Byte
¡¡¡¡CopyMemory bytRet£¬ ByVal VarPtr(Word) + 1£¬ 1¡¯°ÑWordµÄ¸ß×Ö½ÚµÄÄÚÈÝ¿¾ÈëbytRetµÄµØÖ·´¦
¡¡¡¡Hi = bytRet¡¯·µ»Ø½á¹û
¡¡¡¡End Function
¡¡¡¡¸ù¾ÝÊý¾ÝÀàÐ͵IJ»Í¬ÐèÒª£¬±ÊÕß¹²Éè¼ÆÁË6¸öº¯Êý£¬HI£¨£©º¯ÊýÓÃÀ´»ñµÃÒ»¸öµ¥×ֵĸß×Ö½Ú£¬LO£¨£©º¯Êý»ñµÃµ¥×ֵĵÍ×Ö½Ú£¬HIWORD£¨£©º¯Êý»ñµÃË«×ֵĸßλ×Ö£¬LOWORD£¨£©º¯ÊýË«×ֵĵÍλ×Ö¡££Ã£Ï£Î£¨£©º¯Êý°ÑÁ½¸ö×Ö½Ú×éºÏ³É×Ö£¬CONWORD£¨£©º¯Êý°ÑÁ½¸ö×Ö×éºÏ³ÉË«×Ö¡£Ö»Òª°ÑÕ⣶¸öº¯Êý×éºÏÓ¦ÓþͿÉÒÔËæÒâµÄ²ð·Ö¡¢×éºÏ¸÷ÖÖÕûÐͱäÁ¿¡£ÀýÈçÇ°ÃæÌáµ½µÄ£É£ÐµØÖ·£¬£É£ÐµØÖ·ÊÇÓÃÒ»¸ö£Ä£×£Ï£Ò£ÄÀàÐͱäÁ¿´æ´¢µÄ£¬ÔÚ£Ö£ÂÖÐÔò¶ÔÓ¦LongÀàÐͱäÁ¿£¬¼ÙÉèÒ»¸ö£É£ÐµØÖ·´æ´¢ÔÚ³¤ÕûÐͱäÁ¿ÖУ¬¾Í¿ÉÒÔÕâÑùÌáȡһ¸ö£É£ÐµØÖ·µÄ×î¸ß×Ö½Ú£º£È£É£¨£È£É£×£Ï£Ò£Ä£¨lng£É£Ð£©£©¡£
¡¡¡¡ÓÉÓÚ´úÂë½Ï³¤£¬¹ÊûÓÐÔÚÎÄÕÂÖÐд³öÈ«²¿´úÂë¡£ ·½·¨2£ºÀûÓð²È«Êý×é½èÓÃÄÚ´æµÄ·½·¨ÊµÏÖ
¡¡¡¡·½·¨1ËäÈ»ÓÃÆðÀ´¼òµ¥·½±ã£¬µ«ÊÇÒªÖ´ÐÐAPIº¯Êýµ÷Ó㬺¯Êýµ÷ÓÃʱҪ±£´æÏÖ³¡¡¢»Ö¸´ÏÖ³¡£¬Ê±¼ä¿ªÏúºÜ´ó£¬Ð§ÂÊÌ«µÍ£¬Òò´Ë²»ÊʺϴóÊý¾ÝÁ¿Ãܼ¯ÔËËãµÄ³¡ºÏ¡£±ÊÕßÔÚ¿ª·¢¼ÓÃÜÈí¼þÊ±ÔøÊ¹Ó÷½·¨1À´´¦ÀíÎļþÊý¾Ý£¬Ð§¹ûºÜ²»ÀíÏ룬ËÙ¶ÈÆæÂý¡£ÆäʵÓÐÒ»ÖÖ·½·¨¿ÉÒÔÇÉÃîµÄÆ­¹ýVB£¬ÈÃÒ»¸öÊý×éÖ±½Ó·ÃÎÊÆäËû±äÁ¿µÄÄÚ´æ¿Õ¼ä£¬´Ó¶ø´ïµ½²ð·Ö¡¢ºÏ²¢ÕûÐαäÁ¿µÄÄ¿µÄ¡£ÓÉÓÚÕâÖÖ·½·¨Ê¡È¥ÁËAPIº¯Êýµ÷Óã¬Òò´ËЧÂʷdz£¸ß¡£ÏÂÃæ¾ÍÈÃÎÒÃÇÈÏʶһÏÂVBÖеݲȫÊý×é¡£VBÖеݲȫÊý×éÓëCÓïÑÔÖеÄÊý×éÓкܴóµÄ²î±ð£¬ËäÈ»ÔÚVBºÍCÓïÑÔÖÐÊý×é±äÁ¿¶¼ÊÇÖ¸Õ룬µ«CÓïÑÔÖеÄÊý×é±äÁ¿Ö±½ÓÖ¸ÏòÊý×éÔªËØ£¬¶ø VBÖеÄÊý×é±äÁ¿È´ÊÇÖ¸ÏòÒ»¸öSafeArray½á¹¹£¬Õâ¸öSafeArray½á¹¹ÖеÄpvDataÓò²ÅÖ¸ÏòÊý×éÔªËØ¡£
¡¡¡¡ÄÇôÕâ¸öSafeArray½á¹¹ÊÇ×öʲôÓõÄÄØ£¿Ëü´æ´¢×ÅÊý×éµÄÉϽ硢Ͻ硢άÊý¡¢ÔªËØ´óСµÈһϵÁеÄÐÅÏ¢£¬ÕýÊÇSafeArray½á¹¹µÄ´æÔÚ£¬Ê¹µÃVB³ÌÐòÄܹ»¶ÔÊý×éµÄ·ÃÎÊ×öÔ½½ç¼ì²é£¬Õâ¾ÍÊÇΪʲôVBÖеÄÊý×é½Ð×ö°²È«Êý×éµÄÔ­Òò£¬¶øCÓïÑÔÖеÄÊý×éÏÔÈ»²»¾ß±¸Ô½½ç¼ì²éµÄÄÜÁ¦¡£µ±È»°²È«Êý×éµÄȱµã¾ÍÊÇûÓÐCÓïÑÔµÄÊý×éÁé»î£¬µ«¾¡¹ÜÈç´Ë£¬ÎÒÃÇ»¹ÊÇÓа취²Ù×ÝËü£¬Í¨¹ý¶Ô°²È«Êý×éµÄ²Ù×Ý£¬¿ÉÒÔÈÃËü·ÃÎÊÈÎÒâµÄÄÚ´æÎ»Öã¬ÉõÖÁ°üÀ¨ÆäËû±äÁ¿µÄÄÚ´æ¿Õ¼ä¡£¶ÔÓÚһάÊý×éÀ´Ëµ£¬ËüµÄSafeArray½á¹¹ÈçÏ£º
¡¡¡¡Type SafeArray1d '1άÊý×éµÄ SafeArray ¶¨Òå
¡¡¡¡cDims As Integer 'άÊý
¡¡¡¡fFeatures As Integer '±êÖ¾
¡¡¡¡cbElements As Long 'µ¥¸öÔªËØµÄ×Ö½ÚÊý
¡¡¡¡clocks As Long 'Ëø¶¨¼ÆÊý
¡¡¡¡pvData As Long 'Ö¸ÏòÊý×éÔªËØµÄÖ¸Õë
¡¡¡¡cElements As Long 'ά¶¨Ò壬¸ÃάµÄÔªËØ¸öÊý
¡¡¡¡Lbound As Long '¸ÃάµÄϽç
¡¡¡¡End Type
¡¡¡¡Èç¹ûÏÔʽµÄ¸øÒ»¸öÊý×é±äÁ¿¸³Öµ£¬ÈÃËüÖ¸ÏòÎÒÃÇ×Ô¼º´´½¨µÄSafeArray½á¹¹£¬¾Í¿ÉÒÔͨ¹ýÉèÖÃSafeArray½á¹¹µÄpvDataÓòÀ´·ÃÎÊÈÎÒâÄÚ´æÎ»Öá£Ç뿴ʾÀý´úÂ룺
¡¡¡¡Public Declare Function VarPtrArray Lib "msvbvm60.dll" _Alias "VarPtr" (ptr() As Any) As Long
¡¡¡¡Private Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (Destination As Any£¬ Source As Any£¬ ByVal Length As Long)
¡¡¡¡
¡¡¡¡Private Sub Command2_Click()
¡¡¡¡
¡¡¡¡Dim pBytesInLong() As Byte
¡¡¡¡
¡¡¡¡Dim SA1D As SafeArray1d
¡¡¡¡
¡¡¡¡Dim i As Long
¡¡¡¡
¡¡¡¡With SA1D
¡¡¡¡.cDims = 1
¡¡¡¡.fFeatures = 17
¡¡¡¡.cbElements = 1
¡¡¡¡.clocks = 0
¡¡¡¡.pvData = VarPtr(i) 'ʹÊý×éµÄÊý¾ÝÖ¸ÕëÖ¸Ïò³¤ÕûÐαäÁ¿ i
¡¡¡¡.cElements = 4
¡¡¡¡.Lbound = 0
¡¡¡¡End With
¡¡¡¡'ʹÊý×é±äÁ¿£¨Æäʵ¾ÍÊǸöÖ¸Õ룩ָÏòÎÒÃÇ×Ô¼º´´½¨µÄ SafeArray1d ½á¹¹
¡¡¡¡CopyMemory ByVal VarPtrArray(pBytesInLong)£¬ VarPtr(SA1D)£¬ 4 i = &HFFFFFFFF
¡¡¡¡MsgBox pBytesInLong(1) '·ÃÎʳ¤ÕûÐαäÁ¿µÄµÚ2¸ö×Ö½Ú£¨´ÓµÍ´¦¿ªÊ¼Êý£©
¡¡¡¡pBytesInLong(3) = 0 '°ÑÈ«²¿Êý×éÔªËØÉèΪ0
¡¡¡¡pBytesInLong(2) = 0
¡¡¡¡pBytesInLong(1) = 0
¡¡¡¡pBytesInLong(0) = 0
¡¡¡¡MsgBox i 'Äã»á·¢ÏÖ i Ò²±ä³ÉÁË 0
¡¡¡¡'°ÑÊý×é±äÁ¿£¨Æäʵ¾ÍÊǸöÖ¸Õ룩ָÏò 0£¬¼È C ÓïÑÔÖÐµÄ NULL
¡¡¡¡CopyMemory ByVal VarPtrArray(pBytesInLong)£¬ 0&£¬ 4
¡¡¡¡End Sub
¡¡¡¡´Ó´úÂëÖпÉÒÔ¿´µ½ÎÒÃÇÓÃÒ»¸ö×Ö½ÚÊý×é½èÓÃÁ˳¤ÕûÐαäÁ¿iµÄµØÖ·¿Õ¼ä£¬´Ó¶ø¿ÉÒÔͨ¹ýÊý×éÔªËØ·ÃÎʱäÁ¿iµÄ¸÷¸ö×Ö½Ú¡£ÕâÑùҲʵÏÖÁ˲ð·Ö¡¢×éºÏÕûÐαäÁ¿µÄÄ¿µÄ£¬ºÍ·½·¨1Êâ;ͬ¹é£¬µ«ºÜÏÔÈ»·½·¨2²»ÐèÒªº¯Êýµ÷Ó㬲»ÐèÒªÊý¾Ý¸´ÖÆ£¬Òò´ËЧÂʷdz£¸ß¡£ÓÃÕâÖÖ·½·¨£¬ÎÒרÃŹ¹ÖþÁËÒ»¸öÄ£¿é£ºFastBitExÄ£¿é£¬ÊµÏÖÁË·½·¨1ÖÐÌá¼°µÄ6¸öº¯ÊýµÄFast°æ±¾£¬´úÂëºÜ³¤£¬²»ÔÚÕâÀï¸ø³ö£¬Çë¶ÁÕß²ÎÔÄ´úÂë¡£2£®ÒÆÎ»ÔËËãµÄÉè¼ÆÊµÏÖ
¡¡¡¡ÔںܶàVBµÄ×ÊÁϺʹúÂëÖж¼ÓóËÒÔ2µÄ·½·¨ÊµÏÖ×óÒÆ£¬³ýÒÔ2µÄ·½·¨ÊµÏÖÓÒÒÆ¡£ÕâÊÇ¿ÉÐеģ¬Ò²ÊÇÓÐÀíÂÛÒÀ¾ÝµÄ¡£ÏÂͼÊÇÒ»¸öBYTEÀàÐ͵ÄȨֵ±í£º
¡¡¡¡Î»ÐòºÅ
¡¡¡¡7 6 5 4 3 2 1 0
¡¡¡¡È¨Öµ
¡¡¡¡27
¡¡¡¡26
¡¡¡¡25
¡¡¡¡24
¡¡¡¡23
¡¡¡¡22
¡¡¡¡21
¡¡¡¡20
¡¡¡¡¿ÉÒÔ¿´³öÿһλµÄȨֵ¶¼ÊDZÈËüµÍһλµÄÄÇһλµÄȨֵµÄ2±¶£¬¶ÔÒ»¸öBYTE±äÁ¿×óÒÆÒ»Î»Ï൱ÓÚÿһ¸ö¶þ½øÖÆÎ»¶¼Ïò¸ßÎ»ÒÆ¶¯£¬ÔòÿһλµÄȨֵ±äΪԭÀ´µÄÁ½±¶£¨×î¸ßλ³ýÍ⣩£¬ÓÉÓÚBYTE±äÁ¿µÄÊ®½øÖÆÖµµÈÓÚËüµÄÿ¸ö¶þ½øÖÆÎ»µÄÖµºÍ¸ÃλȨֵµÄ³Ë»ýµÄ×ܺͣ¬ËùÒÔ°ÑÒ»¸öBYTE±äÁ¿×óÒÆºÍ°ÑËüµÄÊ®½øÖÆÖµ³ËÒÔ2ÊǵÈЧµÄ£¬Î¨Ò»µÄÇø±ð¾ÍÊÇÈç¹ûBYTE±äÁ¿µÄ×î¸ßλΪ 1£¬³ËÒÔ2»áÒç³ö£¬ÎÒÃÇҪʹÓÃÒ»¸öС¼¼ÇÉ·ÀÖ¹Òç³ö£ºÏȰÑ×î¸ßλÆÁ±ÎΪ0£¬ÔÙ³ËÒÔ2¾Í²»»áÒç³öÁË¡£¾Ý´ËÎÒÃÇ¿ÉÒÔд³ö°ÑBYTEÀàÐͱäÁ¿×óÒÆ1λµÄº¯Êý£º
¡¡¡¡Private Function ShLB_By1Bit(ByVal Byt As Byte) As Byte
¡¡¡¡¡®°ÑBYTEÀàÐͱäÁ¿×óÒÆ1λµÄº¯Êý£¬²ÎÊýBytÊÇ´ýÒÆÎ»µÄ×Ö½Ú£¬º¯Êý·µ»ØÒÆÎ»½á¹û
¡¡¡¡¡®(Byt And &H7F)µÄ×÷ÓÃÊÇÆÁ±Î×î¸ßλ¡£ *2£º×óÒÆÒ»Î»
¡¡¡¡ShLB_By1Bit = (Byt And &H7F) * 2
¡¡¡¡End Function
¡¡¡¡ÀàËÆµÄ°ÑBYTEÀàÐͱäÁ¿ÓÒÒÆ1λʱ²ÉÓóýÒÔ2µÄ·½·¨ £¬ÕâʱҪעÒâÉáȥСÊý룬ÒÔÃâVB°´ÕÕËÄÉáÎåÈëµÄ·½·¨´¦ÀíСÊýλ¶øÒýÆð½á¹û²»ÕýÈ·¡£¾Ý´ËÎÒÃÇ¿ÉÒÔд³ö°ÑBYTEÀàÐͱäÁ¿ÓÒÒÆ1λµÄº¯Êý£º
¡¡¡¡Private Function ShRB_By1Bit(ByVal Byt As Byte) As Byte
¡¡¡¡°ÑBYTEÀàÐͱäÁ¿ÓÒÒÆ1λµÄº¯Êý£¬²ÎÊýBytÊÇ´ýÒÆÎ»µÄ×Ö½Ú£¬º¯Êý·µ»ØÒÆÎ»½á¹û ¡®/2£ºÓÒÒÆÒ»Î»
¡¡¡¡ShRB_By1Bit = Fix(Byt / 2)
¡¡¡¡End Function
¡¡¡¡ÓÐÁËÒÆÒ»Î»µÄº¯Êý£¬ÄÇÃ´ÒÆÈÎÒâλÊýµÄº¯Êý¾Í²»ÄÑд³öÁË£ºÖ»Òª·´¸´µÄµ÷ÓÃShLB_By1Bit()»òShRB_By1Bit()¾Í¿ÉÒÔÁË£¬²Î¼û´úÂëÖеĺ¯ÊýShLB() ºÍ ShRB()¡£ÖÁ´Ë×Ö½Ú±äÁ¿µÄÒÆÎ»ÎÊÌâÒѾ­µÃµ½½â¾ö£¬ÏÖÔÚÔÙÀ´¿´µ¥×ÖºÍË«×ÖµÄÒÆÎ»£¬ËüÃÇ·Ö±ð¶ÔÓ¦VBÖеÄIntegerºÍLongÀàÐÍ¡£ÓóËÒÔ2ºÍ³ýÒÔ2µÄ·½·¨»¹ÐÐÂð£¿Óü¸¸öÊýÊÔÑéһϾͻᷢÏÖ£¬Õâ¸ö·½·¨Ê§ÁéÁË¡£Çë¿´¸÷ÖÖÔËËã½á¹ûµÄ¶Ô±È£º
¡¡¡¡A=1001¡¯0111¡¯1110¡¯1100
¡¡¡¡ÓÒÒÆÒ»Î»£º 0100¡¯1011¡¯1111¡¯0110
¡¡¡¡£¨A/2£©£º1100¡¯1011¡¯1111¡¯0110
¡¡¡¡ÎÊÌâºÃÏó±äµÄÓе㸴ÔÓÁË£¬Æäʵµ¼ÖÂÕâ¸ö·½·¨Ê§ÁéµÄ×î¸ù±¾µÄÔ­ÒòÊÇVB°ÑIntegerºÍLongÀàÐ͵±×öÓзûºÅÊýÀí½â£¬°ÑÒ»¸öÓзûºÅÊý³ËÒÔ2»ò³ýÒÔ2£¬×î¸ß루¼´·ûºÅ룩¸ù±¾¾ÍûÓвÎÓëÔËË㣬ÕâÒ»µã´ÓÉÏÃæµÄÔËËã½á¹û¶Ô±È¾Í¿ÉÒÔ¿´³öÀ´£º°ÑA³ýÒÔ2 ÒÔºó×î¸ßλ»¹ÊÇ1£¬¸ù±¾¾ÍûÓб䣬¶øÓÒÒÆÒ»Î»ºó×î¸ßλ²¹ÈëµÄÊÇ0£¬Á½ÖÖÔËËãµÄ½á¹û×ÔÈ»ÊÇÏàÈ¥ÉõÔ¶¡£²»Ö»ÊÇ·ûºÅλµÄÎÊÌ⣬Èç¹ûÑ¡ÓÃÆäËüµÄÊý¾ÝÀ´¶Ô±È»¹»á·¢ÏÖ¸ü¶àµÄÎÊÌ⣬ÕâÀï¾Í²»ÔÙ׸ÊöÁË¡£ÄѵÀ¾ÍÕæµÄûÓа취ÁËÂ𣿰취µ±È»ÊÇÓе쬼ÈÈ»ÒѾ­ÊµÏÖÁË×Ö½ÚµÄÒÆÎ»²Ù×÷£¬ÄÇô¿ÉÒÔ Óá°·Ö¶øÖÎÖ®¡±µÄ²ßÂÔ£¬°ÑInteger±äÁ¿Ò»·ÖΪ¶þ£¬²ð³ÉÁ½¸ö×Ö½Ú£¬°ÑÕâÁ½¸ö×Ö½Ú½»¸øShLB£¨£©»ò£Óh£Ò£Â£¨£©£¬°ÑËüÁ©¸÷ÒÆÒ»Î»£¬×îºó°ÑÒÆÎ»ºóµÄÁ½×Ö½ÚÖØÐÂ×éºÏ³ÉÒ»¸öInteger±äÁ¿¾ÍÊÇÒÆÎ»ºóµÄ½á¹ûÁË£¬Õâ²»¾ÍʵÏÖÁËIntegerÀàÐͱäÁ¿µÄÒÆÎ»ÁËÂð¡£ÕâÖÖ·½·¨ÍêÈ«ÈÆ¹ýÁËÓзûºÅÊýµÄ·ûºÅλ¸øÎÒÃÇ´øÀ´µÄÖÚ¶àÂé·³£¬Ë³ÀûµÄʵÏÖÁËÄ¿µÄ¡£ÓÃÕâÖÖ·½·¨ÐèҪעÒâÒ»µã£ºÈç¹ûÊÇ×óÒÆ£¬Òª±£Ö¤°ÑµÍ×Ö½ÚµÄ×î¸ßÎ»ÒÆÈë¸ß×Ö½ÚµÄ×îµÍ룬·´Ö®Èç¹ûÊÇÓÒÒÆ£¬Òª°Ñ¸ß×Ö½ÚµÄ×îµÍÎ»ÒÆÈëµÍ×Ö½ÚµÄ×î¸ßλ¡£´ÓÏÂÃæµÄ´úÂëÖпÉÒÔ¿´µ½ÊµÏֵĹý³Ì£º
¡¡¡¡Private Function ShLW_By1Bit(ByVal Word As Integer) As Integer
¡¡¡¡'°ÑÒ»¸ö×Ö×óÒÆÒ»Î»µÄº¯Êý£¬ ²ÎÊýWordÊÇ´ýÒÆÎ»µÄ×Ö£¬º¯Êý·µ»ØÒÆÎ»½á¹û
¡¡¡¡'INPUT-------------------------------
¡¡¡¡'Word Ô´²Ù×÷Êý
¡¡¡¡'OUTPUT------------------------------
¡¡¡¡'·µ»ØÖµ ÒÆÎ»½á¹û
¡¡¡¡'last updated by Liu Qi 2004-3-24
¡¡¡¡Dim HiByte As Byte£¬ LoByte As Byte
¡¡¡¡'°Ñ×Ö²ð·ÖΪ×Ö½Ú
¡¡¡¡HiByte = Hi(Word)£º LoByte = Lo(Word)
¡¡¡¡'°Ñ¸ß×Ö½Ú×óÒÆÒ»Î»£¬±£Ö¤°ÑµÍ×Ö½ÚµÄ×î¸ßÎ»ÒÆÈë¸ß×Ö½ÚµÄ×îµÍλ
¡¡¡¡HiByte = ShLB_By1Bit(HiByte) Or IIf((LoByte And &H80) = &H80£¬ &H1£¬ &H0)
¡¡¡¡LoByte = ShLB_By1Bit(LoByte) 'µÍ×Ö½Ú×óÒÆÒ»Î»
¡¡¡¡'°ÑÒÆÎ»ºóµÄ×Ö½ÚÔÙÖØÐÂ×éºÏ³É×Ö
¡¡¡¡ShLW_By1Bit = Con(HiByte£¬ LoByte)
¡¡¡¡End Function
¡¡¡¡ÖÁÓÚLongÀàÐÍ£¬ºÍIntegerÀàÐÍÒ»Ñù£¬ÊôÓÚÓзûºÅÊý£¬Ò²²»ÄÜÓóËÒÔ2ºÍ³ýÒÔ2µÄ·½·¨ÊµÏÖÒÆÎ»¡£ÎÒÃÇÖ»ºÃºÍ´¦ÀíIntegerÀàÐÍÒ»ÑùÈç·¨ÅÚÖÆ£¬Ó÷ֶøÖÎÖ®µÄ·½·¨ÊµÏÖÒÆÎ»¡£¾ßÌå¹ý³Ì²»ÔÙ׸Êö£¬Çë²Î¿´´úÂë¡£




#If you have any other info about this subject , Please add it free.#
êdzÆ:
ÓÊÏä:
µç»°:

ÄúµÄÁôÑÔ:


Èç¹ûÄúÓйØÓÚ ÇÉÓÃWin32 APIº¯ÊýÔöÇ¿VBλ²Ù×÷¹¦ÄÜ ·½ÃæµÄ²úÆ·»òÕß¿´·¨£¬¾´ÇëÔÚ´Ë·¢²¼.
  • Posted in jsgp.com edit

ÃÀÅ®CEO´øÁìµÄ¡°Ò»´ó°Ñ¡±ÍøÕ¾ °¢Àï°Í°Í³É¹¦ÊÇÒ»¸öÉú̬Á´µÄ³É¹¦