ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
¸»Ê¿¿µÐ¡ËµÍø ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ112²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡



¡öExceptionDescribe£¨£©£º´òÓ¡Ò»¸öÒì³£ºÍ¶ÑÕ»¸ú×ÙÐÅÏ¢¡£¡¡¡¡

¡öExceptionClear£¨£©£ºÇå³ýÒ»¸ö´ý¾öµÄÒì³£¡£¡¡¡¡

¡öFatalError£¨£©£ºÔì³ÉÒ»¸öÑÏÖØ´íÎ󣬲»·µ»Ø¡£¡¡¡¡

ÔÚËùÓÐÕâЩº¯ÊýÖУ¬×î²»ÄܺöÊӵľÍÊÇExceptionOccurred£¨£©ºÍExceptionClear£¨£©¡£´ó¶àÊýJNI¡¡º¯Êý¶¼Äܲú¡¡

ÉúÒì³££¬¶øÇÒûÓÐÏóÔÚ¡¡Java¡¡µÄtry¡¡¿éÄÚµÄÄÇÖÖÓïÑÔÌØÐԿɹ©ÀûÓá£ËùÒÔÔÚÿһ´Î¡¡JNI¡¡º¯Êýµ÷ÓÃÖ®ºó£¬¶¼±ØÐë¡¡

µ÷ÓÃExceptionOccurred£¨£©£¬Á˽âÒì³£ÊÇ·ñÒѱ»¶ªÆú¡£ÈôÕì²âµ½Ò»¸öÒì³££¬¿ÉÑ¡Ôñ¶ÔÆä¼ÓÒÔ¿ØÖÆ£¨¿ÉÄÜʱ»¹¡¡

ÒªÖØжªÆúËü£©¡£È»¶ø£¬±ØÐëÈ·±£Òì³£×îÖÕ±»Çå³ý¡£Õâ¿ÉÒÔÔÚ×Ô¼ºµÄº¯ÊýÖÐÓÃExceptionClear£¨£©À´ÊµÏÖ£»Èô¡¡

Òì³£±»ÖØжªÆú£¬Ò²¿ÉÄÜÔÚÆäËûijЩº¯ÊýÖнøÐС£µ«ÎÞÂÛÈçºÎ£¬ÕâÒ»¹¤×÷ÊDZز»¿ÉÉٵġ£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡654¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡656¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

ÎÒÃDZØÐë±£Ö¤Òì³£±»³¹µ×Çå³ý¡£·ñÔò£¬¼ÙÈôÔÚÒ»¸öÒì³£´ý¾öµÄÇé¿öϵ÷ÓÃÒ»¸öJNI¡¡º¯Êý£¬»ñµÃµÄ½á¹ûÍùÍùÊÇ¡¡

ÎÞ·¨Ô¤ÖªµÄ¡£Ò²ÓÐÉÙÊý¼¸¸öJNI¡¡º¯Êý¿ÉÔÚÒ쳣ʱ°²È«µ÷Ó㻵±È»£¬ËüÃǶ¼ÊÇרÃŵÄÒì³£¿ØÖƺ¯Êý¡£¡¡¡¡



A¡£1¡£5¡¡JNI¡¡ºÍÏ̴߳¦Àí¡¡¡¡



ÓÉÓÚJava¡¡ÊÇÒ»ÖÖ¶àÏß³ÌÓïÑÔ£¬¼¸¸öÏ߳̿ÉÄÜͬʱ·¢³ö¶ÔÒ»¸ö¹ÌÓз½·¨µÄµ÷Óã¨ÈôÁíÒ»¸öÏ̷߳¢³öµ÷Ó㬹ÌÓС¡

·½·¨¿ÉÄÜÔÚÔËÐÐÆÚ¼äÔÝÍ££©¡£´Ëʱ£¬ÍêÈ«ÒªÓɳÌÐòÔ±À´±£Ö¤¹ÌÓе÷ÓÃÔÚ¶àÏ̵߳Ļ·¾³Öа²È«½øÐС£ÀýÈ磬Ҫ¡¡

·À·¶ÓÃÒ»ÖÖδ½øÐмàÊӵķ½·¨Ð޸Ĺ²ÏíÊý¾Ý¡£´Ëʱ£¬ÎÒÃÇÖ÷ÒªÓÐÁ½¸öÑ¡Ôñ£º½«¹ÌÓз½·¨ÉùÃ÷Ϊ¡°Í¬²½¡±£¬»ò¡¡

ÔÚ¹ÌÓз½·¨ÄÚ²¿²ÉÈ¡ÆäËûijЩ²ßÂÔ£¬È·±£Êý¾Ý´¦ÀíÕýÈ·µØ²¢·¢½øÐС£¡¡¡¡

´ËÍ⣬¾ø¶Ô²»ÒªÍ¨¹ýÏ̴߳«µÝ¡¡JNIEnv£¬ÒòΪËüÖ¸ÏòµÄÄÚ²¿½á¹¹ÊÇÔÚ¡°Ã¿Ï̡߳±µÄ»ù´¡ÉÏ·ÖÅäµÄ£¬¶øÇÒ°üº¬ÁË¡¡

Ö»¶ÔÄÇЩÌض¨µÄÏ̲߳ÅÓÐÒâÒåµÄÐÅÏ¢¡£¡¡¡¡



A¡£1¡£6¡¡¡¡Ê¹ÓÃÏֳɴúÂë¡¡¡¡



ΪʵÏÖJNI¡¡¹ÌÓз½·¨£¬×î¼òµ¥µÄ·½·¨¾ÍÊÇÔÚÒ»¸öJava¡¡ÀàÀï±àд¹ÌÓз½·¨µÄÔ­ÐÍ£¬±àÒëÄǸöÀ࣬ÔÙͨ¹ý¡¡javah¡¡

ÔËÐС£class¡¡Îļþ¡£µ«¼ÙÈôÎÒÃÇÒÑÓÐÒ»¸ö´óÐ͵ġ¢ÔçÒÑ´æÔڵĴúÂë¿â£¬¶øÇÒÏë´ÓJava¡¡Àïµ÷ÓÃËüÃÇ£¬´ËʱÓָá¡

ÈçºÎÊǺÃÄØ£¿²»¿É½«DLL¡¡ÖеÄËùÓк¯Êý¸üÃû£¬Ê¹Æä·ûºÏ¡¡JNI¡¡ÃüÃû¹æÔò£¬ÕâÖÖ·½°¸ÊDz»¿ÉÐеġ£×îºÃµÄ·½·¨ÊÇ¡¡

ÔÚÔ­À´µÄ´úÂë¿â¡°ÍâÃ桱дһ¸ö·â×°DLL¡£Java¡¡´úÂë»áµ÷ÓÃС¡DLL¡¡ÀïµÄº¯Êý£¬ºóÕßÔÙµ÷ÓÃԭʼµÄDLL¡¡º¯Êý¡£¡¡

Õâ¸ö·½·¨²¢·Ç½ö½öÊÇÒ»ÖÖ½â¾ö·½°¸£»´ó¶àÊýÇé¿öÏ£¬ÎÒÃÇÉõÖÁ±ØÐëÕâÑù×ö£¬ÒòΪ±ØÐëÃæÏò¶ÔÏóÒýÓõ÷Óá¡JNI¡¡

º¯Êý£¬·ñÔòÎÞ·¨Ê¹ÓÃËüÃÇ¡£¡¡¡¡



A¡£2¡¡Î¢ÈíµÄ½â¾ö·½°¸¡¡¡¡



µ½±¾ÊéÍê¸åʱΪֹ£¬Î¢ÈíÈÔδÌṩ¶ÔJNI¡¡µÄÖ§³Ö£¬Ö»ÊÇÓÃ×Ô¼ºµÄרÀû·½·¨ÌṩÁ˶ԷÇJava¡¡´úÂëµ÷ÓõÄÖ§³Ö¡£¡¡

ÕâÒ»Ö§³ÖÄÚ½¨µ½±àÒëÆ÷¡¡Microsoft¡¡JVM¡¡ÒÔ¼°Íⲿ¹¤¾ßÖС£Ö»ÓгÌÐòÓá¡Microsoft¡¡Java¡¡±àÒëÆ÷±àÒ룬¶øÇÒÖ»ÓС¡

ÔÚMicrosoft¡¡Java¡¡ÐéÄâ»ú£¨JVM£©ÉÏÔËÐеÄʱºò£¬±¾½Ú½²ÊöµÄÌØÐԲŻáÓÐЧ¡£Èô¼Æ»®ÔÚÒòÌØÍøÉÏ·¢ÐÐ×Ô¼ºµÄ¡¡

Ó¦Ó㬻òÕß±¾µ¥Î»µÄÄÚÁªÍø½¨Á¢ÔÚ²»Í¬Æ½Ì¨µÄ»ù´¡ÉÏ£¬¾Í¿ÉÄܳÉΪһ¸öÑÏÖصÄÎÊÌâ¡£¡¡¡¡

΢ÈíÓëWin32¡¡´úÂëµÄ½Ó¿ÚΪÎÒÃÇÌṩÁËÁ¬½Ó¡¡Win32¡¡µÄÈýÖÖ;¾¶£º¡¡¡¡

£¨1£©¡¡J/Direct£º·½±ãµ÷ÓÃWin32¡¡DLL¡¡º¯ÊýµÄÒ»ÖÖ;¾¶£¬¾ßÓÐijЩÏÞÖÆ¡£¡¡¡¡

£¨2£©¡¡±¾Ô­½Ó¿Ú£¨RNI£©£º¿Éµ÷ÓÃWin32¡¡DLL¡¡º¯Êý£¬µ«±ØÐë×ÔÐнâ¾ö¡°À¬»øÊÕ¼¯¡±ÎÊÌâ¡£¡¡¡¡

£¨3£©¡¡Java/¡¡¼¯³É£º¿É´Ó¡¡Java¡¡ÀïÖ±½Ó½Òʾ»òµ÷Óá¡¡¡·þÎñ¡£¡¡¡¡

ºóÐøµÄС½Ú½«·Ö±ð̽ÌÖÕâÈýÖÖ¼¼Êõ¡£¡¡¡¡

д×÷±¾ÊéµÄʱºò£¬ÕâЩÌØÐÔ¾ùͨ¹ýÁËMicrosoft¡¡SDK¡¡for¡¡Java¡¡2¡£0¡¡beta¡¡2¡¡µÄÖ§³Ö¡£¿É´Ó΢Èí¹«Ë¾µÄWeb¡¡Õ¾¡¡

µãÏÂÔØÕâ¸ö¿ª·¢Æ½Ì¨£¨Òª¾­ÀúÒ»¸öÍ´¿àµÄÑ¡Ôñ¹ý³Ì£¬ËûÃǽÐ×÷¡°Active¡¡Setup¡±£©¡£Java¡¡SDK¡¡ÊÇÒ»Ì×ÃüÁîÐС¡

¹¤¾ßµÄ¼¯ºÏ£¬µ«±àÒëÒýÇæ¿ÉÇáÒ×ǶÈëDeveloper¡¡Studio¡¡»·¾³£¬ÒÔ±ãÎÒÃÇÓá¡Visual¡¡J£«£«¡¡1¡£1¡¡À´±àÒë¡¡Java¡¡1¡£1¡¡

´úÂë¡£¡¡¡¡



A¡£3¡¡J/Direct¡¡¡¡¡¡



J/Direct¡¡Êǵ÷Óá¡Win32¡¡DLL¡¡º¯Êý×î¼òµ¥µÄ·½Ê½¡£ËüµÄÖ÷ÒªÉè¼ÆÄ¿±êÊÇÓëWin32API¡¡´ò½»µÀ£¬µ«ÍêÈ«¿ÉÓÃËüµ÷¡¡

ÓÃÆäËûÈκΡ¡API¡£µ«ÊÇ£¬¾¡¹ÜÕâÒ»ÌØÐԷdz£·½±ã£¬µ«ËüͬʱҲÔì³ÉÁËijЩÏÞÖÆ£¬ÇÒ½µµÍÁËÐÔÄÜ£¨ÓëRNI¡¡Ïà¡¡

±È£©¡£µ«J/Direct¡¡Ò²ÓÐһЩÃ÷ÏÔµÄÓŵ㡣Ê×ÏÈ£¬³ýÏ£Íûµ÷ÓõÄÄǸöDLL¡¡ÀïµÄ´úÂëÖ®Í⣬ûÓбØÒªÔÙ±àд¶îÍâ¡¡

µÄ·ÇJava¡¡´úÂ룬»»ÑÔÖ®£¬ÎÒÃDz»ÐèÒªÒ»¸ö·â×°Æ÷»òÕß´úÀí£¯´æ¸ùDLL¡£Æä´Î£¬º¯Êý×Ô±äÁ¿Óë±ê×¼Êý¾ÝÀàÐÍÖ®¡¡

¼äʵÏÖÁË×Ô¶¯×ª»»¡£Èô±ØÐë´«µÝÓû§×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ£¬ÄÇô¡¡J/Direct¡¡¿ÉÄܲ»°´ÎÒÃǵÄÏ£Íû¹¤×÷¡£µÚÈý£¬¾Í¡¡

ÏóÏÂÀýչʾµÄÄÇÑù£¬Ëü·Ç³£¼òµ¥ºÍÖ±½Ó¡£Ö»ÐèÉÙÊý¼¸ÐУ¬Õâ¸öÀý×Ó±ãÄܵ÷ÓÃWin32¡¡API¡¡º¯ÊýMessageBox£¨£©£¬¡¡

ËüÄܵ¯³öÒ»¸öСµÄģ̬´°¿Ú£¬²¢´øÓÐÒ»¸ö±êÌâ¡¢Ò»ÌõÏûÏ¢¡¢Ò»¸ö¿ÉÑ¡µÄͼ±êÒÔ¼°¼¸¸ö°´Å¥¡£¡¡¡¡

¡¡¡¡

public¡¡class¡¡ShowMsgBox¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡¡¡¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡MessageBox£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡655¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡657¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡/**¡¡@dll¡£import£¨¡¨USER32¡¨£©¡¡*/¡¡¡¡

¡¡¡¡private¡¡static¡¡native¡¡int¡¡¡¡¡¡

¡¡¡¡MessageBox£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÁîÈËÕ𾪵ÄÊÇ£¬ÕâÀï±ãÊÇÎÒÃÇÀûÓá¡J/Direct¡¡µ÷ÓÃWin32¡¡DLL¡¡º¯ÊýËùÐèµÄÈ«²¿´úÂë¡£ÆäÖеĹؼüÊÇλÓÚʾ·¶´ú¡¡

Âëµ×²¿µÄMessageBox£¨£©ÉùÃ÷֮ǰµÄ@dll¡¡¡£import¡¡Òýµ¼ÃüÁî¡£Ëü±íÃæÉÏ¿´ÊÇÒ»Ìõ×¢ÊÍ£¬µ«Êµ¼Ê²¢·ÇÈç´Ë¡£ËüµÄ¡¡

×÷ÓÃÊǸæËß±àÒëÆ÷£ºÒýµ¼ÃüÁîÏÂÃæµÄº¯ÊýÊÇÔÚ¡¡USER32¡¡DLL¡¡ÀïʵÏֵģ¬¶øÇÒÓ¦ÏàÓ¦µØµ÷Óá£ÎÒÃÇÒª×öµÄÈ«²¿Ê¡¡

Çé¾ÍÊÇÌṩÓëDLL¡¡ÄÚʵÏֵĺ¯ÊýÏà·ûµÄÒ»¸öÔ­ÐÍ£¬²¢µ÷Óú¯Êý¡£µ«ÊÇÎãÐèÔÚJava¡¡°æ±¾ÀïÊÖ¹¤¼üÈëÐèÒªµÄÿһ¡¡

¸öWin32¡¡API¡¡º¯Êý£¬Ò»¸öMicrosoft¡¡Java¡¡°ü»á°ïÎÒÃÇ×öÕâ¼þÊÂÇ飨ºÜ¿ì¾Í»áÏêϸ½âÊÍ£©¡£ÎªÁËÈÃÕâ¸öÀý×ÓÕý¡¡

³£¹¤×÷£¬º¯Êý±ØÐë¡°°´Ãû³Æ¡±ÓÉDLL¡¡µ¼³ö¡£µ«ÊÇ£¬Ò²¿ÉÒÔÓÃ@dll¡£import¡¡Òýµ¼ÃüÁî¡°°´Ë³Ðò¡±Á´½Ó¡£¾Ù¸öÀý¡¡

×ÓÀ´Ëµ£¬ÎÒÃÇ¿ÉÖ¸¶¨º¯ÊýÔÚDLL¡¡ÀïµÄÈë¿ÚλÖá£ÉÔºó»¹»á¾ßÌå½²Êö@dll¡£import¡¡Òýµ¼ÃüÁîµÄÌØÐÔ¡£¡¡¡¡

Ó÷ÇJava¡¡´úÂë½øÐÐÁ´½ÓµÄÒ»¸öÖØÒªÎÊÌâ¾ÍÊǺ¯Êý²ÎÊýµÄ×Ô¶¯ÅäÖá£ÕýÈç´ó¼Ò¿´µ½µÄÄÇÑù£¬MessageBox£¨£©µÄ¡¡

Java¡¡ÉùÃ÷²ÉÓÃÁËÁ½¸ö×Ö´®×Ô±äÁ¿£¬µ«Ô­À´µÄC¡¡·½°¸Ôò²ÉÓÃÁËÁ½¸ö¡¡char¡¡Ö¸Õë¡£±àÒëÆ÷»á°ïÖúÎÒÃÇ×Ô¶¯×ª»»±ê¡¡

×¼Êý¾ÝÀàÐÍ£¬Í¬Ê±×ñÕÕ±¾ÕºóÒ»½ÚÒª½²ÊöµÄ¹æÔò¡£¡¡¡¡

×îºÃ£¬´ó¼Ò»òÐíÒÑ×¢Òâµ½ÁËmain£¨£©ÉùÃ÷Öеġ¡UnsatisfiedLinkError¡¡Òì³£¡£ÔÚÔËÐÐÆÚµÄʱºò£¬Ò»µ©Á´½Ó³ÌÐò¡¡

²»ÄÜ´Ó·ÇJava¡¡º¯ÊýÀï½âÎö³ö·ûºÅ£¬¾Í»á´¥·¢ÕâÒ»Òì³££¨Ê¼þ£©¡£Õâ¿ÉÄÜÊÇÓɶ෽ÃæµÄÔ­ÒòÔì³ÉµÄ£º¡£dll¡¡ÎÄ¡¡

¼þδÕÒµ½£»²»ÊÇÒ»¸öÓÐЧµÄDLL£»»òÕßJ/Direct¡¡Î´»ñÄúËùʹÓõÄÐéÄâ»úµÄÖ§³Ö¡£ÎªÁËʹDLL¡¡Äܱ»ÕÒµ½£¬Ëü±Ø¡¡

ÐëλÓÚWindows¡¡»òWindowsSystem¡¡Ä¿Â¼Ï£¬Î»ÓÚÓÉPATH¡¡»·¾³±äÁ¿ÁгöµÄÒ»¸öĿ¼ÖУ¬»òÕßλÓں͡£class¡¡ÎÄ¡¡

¼þÏàͬµÄĿ¼¡£J/Direct¡¡»ñµÃÁË¡¡Microsoft¡¡Java¡¡±àÒëÆ÷¡¡1¡£02¡£4213¡¡°æ±¾¼°¸ü¸ß°æ±¾µÄÖ§³Ö£¬Ò²»ñµÃÁË¡¡

Microsoft¡¡JVM¡¡4¡£79¡£2164¡¡¼°¸ü¸ß°æ±¾µÄÖ§³Ö¡£ÎªÁ˽â×Ô¼º±àÒëÆ÷µÄ°æ±¾ºÅ£¬ÇëÔÚÃüÁîÐÐÏÂÔËÐС¡JVC£¬²»Òª¼Ó¡¡

ÈκβÎÊý¡£ÎªÁ˽⡡JVM¡¡µÄ°æ±¾ºÅ£¬ÇëÕÒµ½msjava¡£dll¡¡µÄͼ±ê£¬²¢ÀûÓÃÓÒ¼üµ¯³ö²Ëµ¥¹Û²ìËüµÄÊôÐÔ¡£¡¡¡¡



A¡£3¡£1¡¡@dll¡£import¡¡Òýµ¼ÃüÁî¡¡¡¡



×÷ΪʹÓÃJ/Direct¡¡Î¨Ò»µÄ;¾¶£¬@dll¡£import¡¡Òýµ¼ÃüÁîÏ൱Áé»î¡£ËüÌṩÁËΪÊýÖÚ¶àµÄÐ޸ķû£¬¿ÉÓÃËüÃÇ×Ô¡¡

¶¨Òåͬ·ÇJava¡¡´úÂ뽨Á¢Á´½Ó¹ØϵµÄ·½Ê½¡£ËüÒà¿ÉÓ¦ÓÃÓÚÀàÄÚµÄһЩ·½·¨£¬»òÓ¦ÓÃÓÚÕû¸öÀà¡£Ò²¾ÍÊÇ˵£¬ÎÒÃÇ¡¡

ÔÚÄǸöÀàÄÚÉùÃ÷µÄËùÓз½·¨¶¼ÊÇÔÚÏàͬµÄ¡¡DLL¡¡ÀïʵÏֵġ£ÏÂÃæÈÃÎÒÃǾßÌåÑо¿Ò»ÏÂÕâЩÌØÐÔ¡£¡¡¡¡

¡¡¡¡

1¡£¡¡±ðÃû´¦ÀíºÍ°´Ë³ÐòÁ´½Ó¡¡¡¡

ΪÁËʹ@dll¡£import¡¡Òýµ¼ÃüÁîÄÜÏóÉÏÃæÏÔʾµÄÄÇÑù¹¤×÷£¬DLL¡¡Äڵĺ¯Êý±ØÐë°´Ãû×Öµ¼³ö¡£È»¶ø£¬ÎÒÃÇÓÐʱÏëʹ¡¡

ÓÃÓëDLL¡¡ÀïԭʼÃû×Ö²»Í¬µÄÒ»¸öÃû×Ö£¨±ðÃû´¦Àí£©£¬·ñÔòº¯Êý¾Í¿ÉÄÜ°´±àºÅ£¨±ÈÈ簴˳Ðò£©µ¼³ö£¬¶ø²»ÊÇ°´¡¡

Ãû×Öµ¼³ö¡£ÏÂÃæÕâ¸öÀý×ÓÉùÃ÷ÁËFinestraDiMessaggio£¨£©¡¡£¨ÓÃÒâ´óÀûÓï˵µÄ¡°MessageBox¡±£©¡£ÕýÈç´ó¼Ò¿´¡¡

µ½µÄÄÇÑù£¬Ê¹ÓõÄÓï·¨ÊǷdz£¼òµ¥µÄ¡£¡¡¡¡

¡¡¡¡

public¡¡class¡¡Aliasing¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡¡¡¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡FinestraDiMessaggio£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡/**¡¡@dll¡£import£¨¡¨USER32¡¨£»¡¡¡¡¡¡

¡¡¡¡entrypoint=¡¨MessageBox¡¨£©¡¡*/¡¡¡¡

¡¡¡¡private¡¡static¡¡native¡¡int¡¡¡¡¡¡

¡¡¡¡FinestraDiMessaggio£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÏÂÃæÕâ¸öÀý×ÓչʾÁËÈçºÎͬDLL¡¡Àï²¢·Ç°´Ãû×Öµ¼³öµÄÒ»¸öº¯Êý½¨Á¢Á´½Ó£¬ÄǸöº¯ÊýÊÂʵÊÇ°´ËüÃÇÔÚDLL¡¡ÀïµÄ¡¡

λÖõ¼³öµÄ¡£Õâ¸öÀý×Ó¼ÙÉèÓÐÒ»¸öÃûΪMYMATH¡¡µÄDLL£¬Õâ¸ö¡¡DLL¡¡ÔÚλÖñàºÅ¡¡3¡¡´¦°üº¬ÁËÒ»¸öº¯Êý¡£ÄǸöº¯Êý¡¡

»ñÈ¡Á½¸öÕûÊý×÷Ϊ×Ô±äÁ¿£¬²¢·µ»ØÁ½¸öÕûÊýµÄºÍ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡656¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡658¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡

public¡¡class¡¡ByOrdinal¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡int¡¡j=3£»¡¡k=9£»¡¡¡¡

¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Result¡¡of¡¡DLL¡¡function£º¡¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£«¡¡Add£¨j£»k£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡/**¡¡@dll¡£import£¨¡¨MYMATH¡¨£»¡¡entrypoint¡¡=¡¡¡¨#3¡¨£©¡¡*/¡¡¡¡

¡¡¡¡private¡¡static¡¡native¡¡int¡¡Add£¨int¡¡op1£»int¡¡op2£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

¿ÉÒÔ¿´³ö£¬Î¨Ò»µÄ²îÒì¾ÍÊÇentrypoint¡¡×Ô±äÁ¿µÄÐÎʽ¡£¡¡¡¡

¡¡¡¡

2¡£¡¡½«@dll¡£import¡¡Ó¦ÓÃÓÚÕû¸öÀà¡¡¡¡

@dll¡£import¡¡Òýµ¼ÃüÁî¿ÉÓ¦ÓÃÓÚÕû¸öÀà¡£Ò²¾ÍÊÇ˵£¬ÄǸöÀàµÄËùÓз½·¨¶¼ÊÇÔÚÏàͬµÄDLL¡¡ÀïʵÏֵģ¬²¢¾ßÓС¡

ÏàͬµÄÁ´½ÓÊôÐÔ¡£Òýµ¼ÃüÁî²»»áÓÉ×ÓÀà¼Ì³Ð£»¿¼Âǵ½Õâ¸öÔ­Òò£¬¶øÇÒÓÉÓÚ¡¡DLL¡¡ÀïµÄº¯ÊýÊÇ×ÔÈ»µÄ¡¡static¡¡º¯¡¡

Êý£¬ËùÒÔ¸ü¼ÑµÄÉè¼Æ·½°¸Êǽ«API¡¡º¯Êý·â×°µ½Ò»¸ö¶ÀÁ¢µÄÀàÀÈçÏÂËùʾ£º¡¡¡¡

¡¡¡¡

/**¡¡@dll¡£import£¨¡¨USER32¡¨£©¡¡*/¡¡¡¡

class¡¡MyUser32Access¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡native¡¡int¡¡¡¡¡¡

¡¡¡¡MessageBox£¨int¡¡hwndOwner£»¡¡String¡¡text£»¡¡¡¡

¡¡¡¡¡¡¡¡String¡¡title£»¡¡int¡¡fuStyle£©£»¡¡¡¡

¡¡¡¡public¡¡native¡¡static¡¡boolean¡¡¡¡¡¡

¡¡¡¡MessageBeep£¨int¡¡uType£©£»¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡WholeClass¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡¡¡

¡¡¡¡throws¡¡UnsatisfiedLinkError¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡MyUser32Access¡£MessageBeep£¨4£©£»¡¡¡¡

¡¡¡¡¡¡¡¡MyUser32Access¡£MessageBox£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡0£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÓÉÓÚMessageBeep£¨£©ºÍ¡¡MessageBox£¨£©º¯ÊýÒÑÔÚ²»Í¬µÄÀàÀï±»ÉùÃ÷³É¡¡static¡¡º¯Êý£¬ËùÒÔ±ØÐëÔÚµ÷ÓÃËüÃÇʱ¹æ¶¨¡¡

×÷ÓÃÓò¡£´ó¼ÒÒ²ÐíÈÏΪ±ØÐëÓÃÉÏÊöµÄ·½·¨½«ËùÓÐWin32¡¡API¡¡£¨º¯Êý¡¢³£ÊýºÍÊý¾ÝÀàÐÍ£©¶¼Ó³Éä³ÉJava¡¡Àà¡£µ«¡¡

ÐÒÔ˵ÄÊÇ£¬¸ù±¾²»±ØÕâÑù×ö¡£¡¡¡¡



A¡£3¡£2¡¡¡£ms¡£win32¡¡°ü¡¡¡¡



Win32¡¡API¡¡µÄÌå»ýÏ൱ÅӴ󡪡ª°üº¬ÁËÊýÒÔǧ¼ÆµÄº¯Êý¡¢³£ÊýÒÔ¼°Êý¾ÝÀàÐÍ¡£µ±È»£¬ÎÒÃDz¢²»Ï뽫ÿ¸öWin32¡¡¡¡

API¡¡º¯Êý¶¼Ð´³É¶ÔÓ¦Java¡¡ÐÎʽ¡£Î¢Èí¿¼Âǵ½ÁËÕâ¸öÎÊÌ⣬·¢ÐÐÁËÒ»¸öJava¡¡°ü£¬¿Éͨ¹ý¡¡J/Direct¡¡½«¡¡Win32¡¡¡¡

API¡¡Ó³Éä³É¡¡Java¡¡Àà¡£Õâ¸ö°üµÄÃû×Ö½Ð×÷¡¡¡£ms¡£win32¡£°²×°Java¡¡SDK¡¡2¡£0¡¡Ê±£¬ÈôÔÚ°²×°Ñ¡ÏîÖнøÐÐÁËÏàÓ¦¡¡

µÄÉèÖã¬Õâ¸ö°ü¾Í»á°²×°µ½ÎÒÃǵÄÀà·¾¶ÖС£Õâ¸ö°üÓÉ´óÁ¿Java¡¡À๹³É£¬ËüÃÇÍêÕûÔÙÏÖÁË¡¡Win32¡¡API¡¡µÄ³£¡¡

Êý¡¢Êý¾ÝÀàÐÍÒÔ¼°º¯Êý¡£°üÈÝÄÜÁ¦×î´óµÄÈý¸öÀàÊÇ¡¡User32¡£class£¬Kernel¡£class¡¡ÒÔ¼°Gdi32¡£class¡£ËüÃÇ°ü¡¡

º¬µÄÊÇWin32¡¡API¡¡µÄºËÐÄÄÚÈÝ¡£ÎªÊ¹ÓÃËüÃÇ£¬Ö»ÐèÔÚ×Ô¼ºµÄ¡¡Java¡¡´úÂëÀïµ¼Èë¼´¿É¡£Ç°ÃæµÄShowMsgBox¡¡Ê¾Àý¡¡

¿ÉÓá£ms¡£win32¡¡¸Äд³ÉÏÂÃæÕâ¸öÑù×Ó£¨ÕâÀïÒ²¿¼Âǵ½ÁËÓøüÇ¡µ±µÄ·½Ê½Ê¹ÓÃUnsatisfiedLinkError£©£º¡¡¡¡

¡¡¡¡

import¡¡¡£ms¡£win32¡£*£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡657¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡659¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡

public¡¡class¡¡UseWin32Package¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡User32¡£MessageBeep£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡winm¡£MB_ICONEXCLAMATION£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡User32¡£MessageBox£¨0£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Created¡¡by¡¡the¡¡MessageBox£¨£©¡¡Win32¡¡func¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Thinking¡¡in¡¡Java¡¨£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡winm¡£MB_OKCANCEL¡¡£ü¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡winm¡£MB_ICONEXCLAMATION£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡catch£¨UnsatisfiedLinkError¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Can¡¯t¡¡link¡¡Win32¡¡API¡¨£©£»¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨e£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

Java¡¡°üÊÇÔÚµÚÒ»Ðе¼ÈëµÄ¡£ÏÖÔÚ£¬¿ÉÔÚ²»½øÐÐÆäËûÉùÃ÷µÄÇ°Ìáϵ÷ÓÃMessageBeep£¨£©ºÍ¡¡MessageBox£¨£©º¯Êý¡£¡¡

ÔÚMessageBeep£¨£©ÀÎÒÃÇ¿É¿´µ½°üµ¼ÈëʱҲÉùÃ÷ÁË¡¡Win32¡¡³£Êý¡£ÕâЩ³£ÊýÊÇÔÚ´óÁ¿Java¡¡½Ó¿ÚÀﶨÒåµÄ£¬È«¡¡

²¿ÃüÃûΪwinx¡¡£¨x¡¡´ú±íÓûʹÓÃÖ®³£ÊýµÄÊ××Öĸ£©¡£¡¡¡¡

д×÷±¾Êéʱ£¬¡£ms¡£win32¡¡°üµÄ¿ª·¢ÈÔδÕýʽÍê³É£¬µ«ÒÑ¿É¿°Ê¹Óᣡ¡¡¡



A¡£3¡£3¡¡¡¡»ã¼¯¡¡¡¡



¡¡¡°»ã¼¯¡±£¨Marshaling£©ÊÇÖ¸½«Ò»¸öº¯Êý×Ô±äÁ¿´ÓËüԭʼµÄ¶þ½øÖÆÐÎʽת»»³ÉÓëÓïÑÔÎ޹صÄijÖÖÐÎʽ£¬ÔÙ½«¡¡

ÕâÖÖͨÓÃÐÎʽת»»³ÉÊʺϵ÷Óú¯Êý²ÉÓõĶþ½øÖƸñʽ¡£ÔÚÇ°ÃæµÄÀý×ÓÖУ¬ÎÒÃǵ÷ÓÃÁËMessageBox£¨£©º¯Êý£¬²¢¡¡

ÏòËü´«µÝÁËÁ½¸ö×Ö´®¡£MessageBox£¨£©ÊǸöC¡¡º¯Êý£¬¶øÇÒ¡¡Java¡¡×Ö´®µÄ¶þ½øÖƲ¼¾ÖÓëC¡¡×Ö´®²¢²»Ïàͬ¡£µ«¾¡¹ÜÈç¡¡

´Ë£¬×Ô±äÁ¿ÈÔ»ñµÃÁËÕýÈ·µÄ´«µÝ¡£ÕâÊÇÓÉÓÚÔÚµ÷Óá¡C¡¡´úÂëÇ°£¬J/Direct¡¡ÒÑ°ïÎÒÃÇ¿¼Âǵ½Á˽«Java¡¡×Ö´®×ª»»¡¡

³ÉC¡¡×Ö´®µÄÎÊÌâ¡£ÕâÖÖÇé¿öÊʺÏËùÓбê×¼µÄJava¡¡ÀàÐÍ¡£ÏÂÃæÕâÕűí¸ñ×ܽáÁ˼òµ¥Êý¾ÝÀàÐ͵ÄĬÈ϶ÔÓ¦¹Øϵ£º¡¡¡¡

¡¡¡¡

Java¡¡C¡¡¡¡

¡¡¡¡

byte¡¡BYTE¡¡»òCHAR¡¡¡¡

short¡¡SHORT»ò¡¡WORD¡¡¡¡

int¡¡INT£¬UINT¡¡£¬LONG£¬ULONG¡¡»ò¡¡DWORD¡¡¡¡

char¡¡TCHAR¡¡¡¡

long¡¡__int64¡¡¡¡

float¡¡Float¡¡¡¡

double¡¡Double¡¡¡¡

boolean¡¡BOOL¡¡¡¡

String¡¡LPCTSTR¡¡£¨Ö»ÔÊÐíÔÚOLE¡¡Ä£Ê½ÖÐ×÷Ϊ·µ»ØÖµ£©¡¡¡¡

byte£§£§¡¡BYTE¡¡*¡¡¡¡

short£§£§¡¡WORD¡¡*¡¡¡¡

char£§£§¡¡TCHAR¡¡*¡¡¡¡

int£§£§¡¡DWORD¡¡*¡¡¡¡

¡¡¡¡

Õâ¸öÁÐ±í»¹¿É¼ÌÐøÏÂÈ¥£¬µ«ÒѺÜÄÜ˵Ã÷ÎÊÌâÁË¡£´ó¶àÊýÇé¿öÏ£¬ÎÒÃDz»±Ø¹ØÐÄÓë¼òµ¥Êý¾ÝÀàÐÍÖ®¼äµÄת»»ÎÊ¡¡

Ìâ¡£µ«Ò»µ©±ØÐë´«µÝÓû§×Ô¶¨ÒåÀàÐ͵Ä×Ô±äÁ¿£¬Çé¿ö¾ÍÁ¢¼´±äµÃ²»Í¬ÁË¡£ÀýÈ磬¿ÉÄÜÐèÒª´«µÝÒ»¸ö½á¹¹»¯¡¡

µÄ¡¢Óû§×Ô¶¨ÒåµÄÊý¾ÝÀàÐÍ£¬»òÕßÐèÒª°ÑÒ»¸öÖ¸Õë´«¸øԭʼÄÚ´æÇøÓò¡£ÔÚÕâЩÇé¿öÏ£¬ÓÐһЩÌØÊâµÄ±àÒëÒý¡¡

µ¼ÃüÁî±ê¼ÇÒ»¸öJava¡¡À࣬ʹÆäÄÜ×÷Ϊһ¸öÖ¸Õë´«¸ø½á¹¹£¨@dll¡£struct¡¡Òýµ¼ÃüÁ¡£Óû֪ʹÓÃÕâЩ¹Ø¼ü×ֵġ¡

ϸ½Ú£¬Çë²Î¿¼²úÆ·Îĵµ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡658¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡660¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

A¡£3¡£4¡¡¡¡±àд»Øµ÷º¯Êý¡¡¡¡



ÓÐЩWin32¡¡API¡¡º¯ÊýÒªÇó½«Ò»¸öº¯ÊýÖ¸Õë×÷Ϊ×Ô¼ºµÄ²ÎÊýʹÓá£Windows¡¡API¡¡º¯ÊýËæºó¾Í¿ÉÒÔµ÷ÓÃ×Ô±äÁ¿º¯¡¡

Êý£¨Í¨³£ÊÇÔÚÒÔºó·¢ÉúÌض¨µÄʼþʱ£©¡£ÕâÒ»¼¼Êõ¾Í½Ð×÷¡°»Øµ÷º¯Êý¡±¡£»Øµ÷º¯ÊýµÄÀý×Ó°üÀ¨´°¿Ú½ø³ÌÒÔ¼°¡¡

ÎÒÃÇÔÚ´òÓ¡¹ý³ÌÖÐÉèÖõĻص÷£¨Îªºǫ́´òÓ¡³ÌÐòÌṩ»Øµ÷º¯ÊýµÄµØÖ·£¬Ê¹ÆäÄܸüÐÂ״̬£¬²¢ÔÚ±ØÒªµÄʱºòÖС¡

Ö¹´òÓ¡£©¡£¡¡¡¡

ÁíÒ»¸öÀý×ÓÊÇAPI¡¡º¯ÊýEnumWindows£¨£©¡¡£¬ËüÄÜö¾ÙĿǰϵͳÄÚËùÓж¥¼¶´°¿Ú¡£EnumWindows£¨£©ÒªÇó»ñÈ¡Ò»¸öº¯¡¡

ÊýÖ¸Õë×÷Ϊ×Ô¼ºµÄ²ÎÊý£¬È»ºóËÑË÷ÓÉWindows¡¡ÄÚ²¿Î¬»¤µÄÒ»¸öÁÐ±í¡£¶ÔÓÚÁбíÄÚµÄÿ¸ö´°¿Ú£¬Ëü¶¼»áµ÷Óûء¡

µ÷º¯Êý£¬½«´°¿Ú¾ä±ú×÷Ϊһ¸ö×Ô±äÁ¿´«¸ø»Øµ÷¡£¡¡¡¡

ΪÁËÔÚJava¡¡Àï´ïµ½Í¬ÑùµÄÄ¿µÄ£¬±ØÐëʹÓá¡¡£ms¡£dll¡¡°üÀïµÄ¡¡Callback¡¡Àà¡£ÎÒÃÇ´Ó¡¡Callback¡¡Àï¼Ì³Ð£¬²¢È¡¡¡

Ïûcallback£¨£©¡£Õâ¸ö·½·¨Ö»Äܽӽüint¡¡²ÎÊý£¬²¢»á·µ»Ø¡¡int»òvoid¡£·½·¨Ç©ÃûºÍ¾ßÌåµÄʵʩȡ¾öÓÚʹÓÃÕâ¸ö¡¡

»Øµ÷µÄWindows¡¡API¡¡º¯Êý¡£¡¡¡¡

ÏÖÔÚ£¬ÎÒÃÇÒª½øÐеÄÈ«²¿¹¤×÷¾ÍÊÇ´´½¨Õâ¸öCallback¡¡ÑÜÉúÀàµÄÒ»¸öʵÀý£¬²¢½«Æä×÷Ϊº¯ÊýÖ¸Õë´«µÝ¸øAPI¡¡º¯¡¡

Êý¡£Ëæºó£¬J/Direct¡¡»á°ïÖúÎÒÃÇ×Ô¶¯Íê³ÉÊ£ÓàµÄ¹¤×÷¡£¡¡¡¡

ÏÂÃæÕâ¸öÀý×Óµ÷ÓÃÁËWin32¡¡API¡¡º¯ÊýEnumWindows£¨£©¡¡£»EnumWindowsProc¡¡ÀàÀïµÄ¡¡callback£¨£©·½·¨»á»ñȡÿ¸ö¡¡

¶¥¼¶´°¿ÚµÄ¾ä±ú£¬»ñÈ¡±êÌâÎÄ×Ö£¬²¢½«Æä´òÓ¡µ½¿ØÖÆ̨´°¿Ú¡£¡¡¡¡

¡¡¡¡

import¡¡¡£ms¡£dll¡£*£»¡¡¡¡

import¡¡¡£ms¡£win32¡£*£»¡¡¡¡

¡¡¡¡

class¡¡EnumWindowsProc¡¡extends¡¡Callback¡¡£û¡¡¡¡

¡¡¡¡public¡¡boolean¡¡callback£¨int¡¡hwnd£»¡¡int¡¡lparam£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡StringBuffer¡¡text¡¡=¡¡new¡¡StringBuffer£¨50£©£»¡¡¡¡

¡¡¡¡¡¡¡¡User32¡£GetWindowText£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡hwnd£»¡¡text£»¡¡text¡£capacity£¨£©£«1£©£»¡¡¡¡

¡¡¡¡¡¡¡¡if£¨text¡£length£¨£©¡¡£¡=¡¡0£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨text£©£»¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡true£»¡¡¡¡//¡¡to¡¡continue¡¡enumeration¡£¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

public¡¡class¡¡ShowCallback¡¡£û¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String¡¡args£§£§£©¡¡¡¡

¡¡¡¡throws¡¡InterruptedException¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡boolean¡¡ok¡¡=¡¡User32¡£EnumWindows£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡EnumWindowsProc£¨£©£»¡¡0£©£»¡¡¡¡

¡¡¡¡¡¡¡¡if£¨£¡ok£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡System¡£err¡£println£¨¡¨EnumWindows¡¡failed¡£¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Thread¡£currentThread£¨£©¡£sleep£¨3000£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

¶Ô¡¡sleep£¨£©µÄµ÷ÓÃÔÊÐí´°¿Ú½ø³ÌÔÚmain£¨£©Í˳öÇ°Íê³É¡£¡¡¡¡



A¡£3¡£5¡¡¡¡ÆäËû¡¡J/Direct¡¡ÌØÐÔ¡¡¡¡



ͨ¹ý@dll¡£import¡¡Òýµ¼ÃüÁîÄÚµÄÐ޸ķû£¨±ê¼Ç£©£¬»¹¿ÉÓõ½¡¡J/Direct¡¡µÄÁíÁ½ÏîÌØÐÔ¡£µÚÒ»ÏîÊǶÔOLE¡¡º¯ÊýµÄ¡¡

¼ò»¯·ÃÎÊ£¬µÚ¶þÏîÊÇÑ¡ÔñAPI¡¡º¯ÊýµÄANSI¡¡¼°¡¡Unicode¡¡°æ±¾¡£¡¡¡¡

¸ù¾ÝÔ¼¶¨£¬ËùÓÐOLE¡¡º¯Êý¶¼»á·µ»ØÀàÐÍΪHRESULT¡¡µÄÒ»¸öÖµ£¬ËüÊÇÓÉ¡¡¡¡¶¨ÒåµÄÒ»¸ö½á¹¹»¯ÕûÊýÖµ¡£ÈôÔÚ¡¡

¡¡ÄÇÒ»¼¶±àд³ÌÐò£¬²¢Ï£Íû´ÓÒ»¸öOLE¡¡º¯ÊýÀï·µ»ØijЩ²»Í¬µÄ¶«Î÷£¬¾Í±ØÐ뽫һ¸öÌØÊâµÄÖ¸Õë´«µÝ¸øËü¡ª¡¡

¡ª¸ÃÖ¸ÕëÖ¸Ïòº¯Êý¼´½«ÔÚÆäÖÐÌî³äÊý¾ÝµÄÄǸöÄÚ´æÇøÓò¡£µ«ÔÚ¡¡Java¡¡ÖУ¬ÎÒÃÇûÓÐÖ¸Õë¿ÉÓã»´ËÍ⣬ÕâÖÖ·½·¨¡¡

²¢²»¼òÁ·¡£ÀûÓÃJ/Direct£¬ÎÒÃÇ¿ÉÔÚ@dll¡£import¡¡Òýµ¼ÃüÁîÀïʹÓÃole¡¡Ð޸ķû£¬´Ó¶ø·½±ãµØµ÷ÓÃOLE¡¡º¯Êý¡£¡¡

±ê¼ÇΪ¡¡ole¡¡º¯ÊýµÄÒ»¸ö¹ÌÓз½·¨»á´ÓJava¡¡ÐÎʽµÄ·½·¨Ç©Ãû£¨Í¨¹ýËü¾ö¶¨·µ»ØÀàÐÍ£©×Ô¶¯×ª»»³É¡¡¡¡ÐÎʽµÄº¯¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡659¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡661¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Êý¡£¡¡¡¡

µÚ¶þÏîÌØÐÔÊÇÑ¡ÔñANSI¡¡»òÕß¡¡Unicode¡¡×Ö´®¿ØÖÆ·½·¨¡£¶Ô×Ö´®½øÐпØÖƵĴó¶àÊý¡¡Win32¡¡API¡¡º¯Êý¶¼ÌṩÁËÁ½¸ö¡¡

°æ±¾¡£ÀýÈ磬¼ÙÉèÎÒÃǹ۲ìÓÉ¡¡USER32¡£DLL¡¡µ¼³öµÄ·ûºÅ£¬ÄÇô²»»áÕÒµ½Ò»¸öMessageBox£¨£©º¯Êý£¬Ïà·´»á¿´µ½¡¡

MessageBoxA£¨£©ºÍMessageBoxW£¨£©¡¡º¯Êý¡ª¡ª·Ö±ðÊǸú¯ÊýµÄANSI¡¡ºÍ¡¡Unicode¡¡°æ±¾¡£Èç¹ûÔÚ@dll¡£import¡¡Òýµ¼Ãü¡¡

ÁîÀï²»¹æ¶¨Ïëµ÷ÓÃÄĸö°æ±¾£¬JVM¡¡¾Í»áÊÔ×Å×ÔÐÐÅжϡ£µ«ÕâÒ
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨10£© ²È£¨9£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡