°Ë±¦Êé¿â > ÎÄѧÆäËûµç×ÓÊé > Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ) >

µÚ168²¿·Ö

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

С˵£º Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ) ×ÖÊý£º ÿҳ4000×Ö

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡




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¡¡¾Í»áÊÔ×Å×ÔÐÐÅжϡ£µ«ÕâÒ»²Ù×÷»áÔÚ³ÌÐòÖ´ÐÐʱ»¨·Ñ½Ï³¤µÄʱ¼ä¡

·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨1£©

Äã¿ÉÄÜϲ»¶µÄ