[AJUDA] Usando HWND para controlar WMP ou I-tunes etc

Olá pessoal estou tentando fazer um programa em java que faz o seguinte :

  • pega a musica e album do WMP ou i-tunes e joga no messenger…

porém estou com uns problemas porque um problema leva a outros , estava procurando por HWND que controla uma aplicação atravéz da dll win32 e talz, porém não sei mecher com dll , ja peguei varios códigos na net porém nao consigo entender direito
vou postar um código aí voces me ajudam se for possível vlw ae

package wacon;   
import java.io.BufferedReader;   
import java.io.IOException;   
import java.io.InputStreamReader;   
  
public class WinampController {   
  
   static {   
      System.load("c:\\projetos\\winampcontroller\\src\\wacon\\wacon.dll");   // não entendo o que isso faz
   }   
      
   /**  
    *  da play no winamp.  
    *  
    */  
   public static native void play();   //como isso funciona? nao está declarado e o que faz o native?
  
   /**  
    *  da stop no winamp.  
    *  
    */  
   public static native void stop();   
  
   /**  
    *  da resume no winamp.  
    *  
    */  
   public static native void resume();   
  
   /**  
    *  da pause no winamp.  
    *  
    */  
   public static native void pause();   
  
   /**   
    *  vai para mp3 anterior.  
    *  
    */  
   public static native void previousTrack();   
  
   /**  
    *  vai para a proxima mp3  
    *  
    */  
   public static native void nextTrack();   
  
   /**  
    *  aumenta o volume.  
    *  
    */  
   public static native void increaseVolume();   
  
   /**  
    *  diminui o volume.  
    *  
    */  
   public static native void decreaseVolume();   
  
   /**  
    *  aumenta o volume.  
    * @param percent porcentagem a aumentar.  
    */  
   public static native void increaseVolumePercent(int percent);   
  
   /**  
    *  diminui o volume.  
    * @param percent percentagem a diminuir.  
    */  
   public static native void decreaseVolumePercent(int percent);   
  
   /**  
    *  ajusta o volume  
    * @param pos posicao do volume de 0 a 99.  
    */  
   public static native void setVolume(int pos);   
  
   /**  
    *  reinicia o winamp.  
    *  
    */  
   public static native void restart();   
  
   /**  
    *  vai para uma posica na playlist.  
    * @param pos posicao.  
    */  
   public static native void setPlaylistPosition(int pos);   
  
   /**  
    *  limpa a playlist.  
    *  
    */  
   public static native void clearPlayList();   
  
   /**  
    *  limpa o cache da playlist.  
    *  
    */  
   public static native void clearPlayListCache();   
  
   /**  
    * retorna o tamanho da playlist.  
    * @return tamanho.  
    */  
   public static native int getPlayListLength();   
  
   /**  
    * escreve a playlist em <winampdir>\\Winamp.m3u.  
    * @return tamanho da playlist.  
    */  
   public static native int writePlayListToFile();   
  
   /**  
    *  verifica se o shuffle ta on.  
    * @return true para on false para off.  
    */  
   public static native boolean isShuffleStatusOn();   
  
   /**  
    *  verifica se o repeat ta on.  
    * @return true para on false para off.  
    */  
   public static native boolean isRepeatStatusOn();   
  
   /**  
    *  liga o repeat.  
    * @param status true para on false para off.  
    */  
   public static native void setRepeatStatusOn(boolean status);   
  
   /**  
    *  liga o shuffle.  
    * @param status true para on false para off.  
    */  
   public static native void setShuffleStatusOn(boolean status);   
  
   /**  
    * coloca um arquino na playlist  
    * @param mp3filename arquivo.  
    */  
   public static native void appendToPlayList(String mp3filename);   
      
   /**  
    * retorna o status do winamp.  
    * @return 1 play 0 stop 3 pausado  
    */  
   public static native int getStatus();   
  
   /*testes para os metodos*/  
   public static void main(String[] args) {   
      try {   
         while (true) {   
            System.out.println("\n");   
            System.out.println("1 play()");   
            System.out.println("2 stop()");   
            System.out.println("3 resume()");   
            System.out.println("4 pause()");   
            System.out.println("5 previousTrack()");   
            System.out.println("6 nextTrack()");   
            System.out.println("7 increaseVolume()");   
            System.out.println("8 decreaseVolume()");   
            System.out.println("9 increaseVolumePercent(50)");   
            System.out.println("a decreaseVolumePercent(50)");   
            System.out.println("b setVolume(50)");   
            System.out.println("c restart()");   
            System.out.println("d setPlaylistPosition(10)");   
            System.out.println("e clearPlayList()");   
            System.out.println("f clearPlayListCache()");   
            System.out.println("g getPlayListLength()");   
            System.out.println("h writePlayListToFile()");   
            System.out.println("i isShuffleStatusOn()");   
            System.out.println("j isRepeatStatusOn()");   
            System.out.println("l setRepeatStatusOn(true)");   
            System.out.println("m setShuffleStatusOn(true)");   
            System.out.println("n appendToPlayList('c:\\demo.mp3')");   
            System.out.println("o getStatus()");   
            System.out.println("p sair");   
            System.out.print("\n(enter)?> ");   
  
            BufferedReader reader = new BufferedReader(   
                  new InputStreamReader(System.in));   
  
            String linha = reader.readLine();   
            linha = linha.toUpperCase();   
  
            char key = linha.toCharArray()[0];   
  
            if (key == 'P') {   
               break;   
            } else {   
                switch (key) {   
               case '1':   
                  play();   
                  break;   
               case '2':   
                  stop();   
                  break;   
               case '3':   
                  resume();   
                  break;   
               case '4':   
                  pause();   
                  break;   
               case '5':   
                  previousTrack();   
                  break;   
               case '6':   
                  nextTrack();   
                  break;   
               case '7':   
                  increaseVolume();   
                  break;   
               case '8':   
                  decreaseVolume();   
                  break;   
               case '9':   
                  increaseVolumePercent(50);   
                  break;   
               case 'A':   
                  decreaseVolumePercent(50);   
                  break;   
               case 'B':   
                  setVolume(50);   
                  break;   
               case 'C':   
                  restart();   
                  break;   
               case 'D':   
                  setPlaylistPosition(10);   
                  break;   
               case 'E':   
                  clearPlayList();   
                  break;   
               case 'F':   
                  clearPlayListCache();   
                  break;   
               case 'G':   
                  System.out.println(getPlayListLength());   
                  break;   
               case 'H':   
                  System.out.println(writePlayListToFile());   
                  break;   
               case 'I':   
                  System.out.println(isShuffleStatusOn());   
                  break;   
               case 'J':   
                  System.out.println(isRepeatStatusOn());   
                  break;   
               case 'L':   
                  setRepeatStatusOn(true);   
                  break;   
               case 'M':   
                  setShuffleStatusOn(true);   
                  break;   
               case 'N':   
                  appendToPlayList("c:\\demo.mp3");   
                  break;   
               case 'O':   
                  System.out.println(getStatus());   
                  break;   
               }   
            }   
         }   
      } catch (IOException e) {   
         // TODO Auto-generated catch block   
         e.printStackTrace();   
      }   
   }   
}  

Detalhe nao testei este código porém falaram no forum que peguei que funcina .
E esse código [e para winamp , so pra ter uma ideia do que eu quero fazer