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