2015-09-20 4 views
0

Я здесь новый, поэтому я не уверен, что я делаю что-то не так, поэтому, пожалуйста, скажите мне, есть ли я.Как передать путь к аргументам командной строки при использовании «open with» в Windows?

Я делаю простой просмотрщик изображений/gif в Java. Я хочу, чтобы иметь возможность использовать извлеченное приложение (которое я буду обернуть в .exe с помощью start4j), чтобы открыть файлы изображений. Когда вы выбираете образ для его открытия, я хочу, чтобы он получил путь к файлу изображения и передал его в args [0], чтобы приложение могло его использовать.

Я чувствую, что это то, что нужно сделать за пределами моего Java-кода. Может быть, в установщике или обертке, которую я использую, но я понятия не имею, как это сделать.

Я искал последние 3 часа безрезультатно. Любая помощь приветствуется. Мой код до сих пор:

public class MainWindow { 

private JFrame frame1; 
public static String imageLocation = null; 

public static void main(String[] args) { 
     try { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Throwable e) { 
      e.printStackTrace(); 
     } 

     try { 
      imageLocation = args[0]; 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
      System.exit(0); 
     } 

     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        MainWindow window = new MainWindow(); 
        window.frame1.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public MainWindow() { 
     initialize(); 
    } 

    private void initialize() { 

     BufferedImage img = null; 
     try{ 
      img = ImageIO.read(new File(imageLocation)); 
     }catch (IOException e) { 
      e.printStackTrace(); 
     } 
     int imgWidth = img.getWidth(); 
     int imgHeight = img.getHeight(); 

     frame1 = new JFrame(); 
     frame1.getContentPane().setBackground(Color.WHITE); 
     frame1.setResizable(false); 
     frame1.setTitle(imageLocation); 
     frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame1.getContentPane().setLayout(new BorderLayout(0, 0)); 
     frame1.setBounds(200, 200, imgWidth+18, imgHeight+40); 

     JLabel imgLabel = new JLabel(""); 
     imgLabel.setToolTipText(imageLocation); 
     imgLabel.setHorizontalAlignment(SwingConstants.CENTER); 
     imgLabel.setIcon(new ImageIcon(imageLocation)); 
     imgLabel.setBounds(0, 0, frame1.getWidth(), frame1.getWidth()); 
     frame1.getContentPane().add(imgLabel); 
    } 
} 

Заранее спасибо.

+0

Я действительно думал, что файлы были переданы в командную строку по умолчанию, но если не посмотреть, как элементы контекстного меню добавляются в реестр. Вы можете найти свою запись и изменить ее на 'myapp.exe% 1', чтобы пройти через. – Octopoid

+0

Спасибо за ваш ответ. Что вы имеете в виду, когда говорите по умолчанию? Если я создам файл .exe с помощью start4j, а затем открою изображение с ним, должен ли он передать свой путь к args [0] по умолчанию? –

+0

Существует несколько способов сделать это - если вы перетащите свой файл на exe, то да, определенно. Я ценю это, вероятно, не так, как вы хотите его использовать! Я предполагаю, что щелкните правой кнопкой мыши файл изображения, откройте «С», перейдите к своему exe и установите по умолчанию. Это действительно ДОЛЖНО подавать этот файл изображения на ваш exe в первом параметре, но если это не так, или вам нужно передать другие параметры командной строки, вы можете настроить его в реестре под «class root», как я помню , – Octopoid

ответ

0

Я не вижу элементов формы для загрузки файлов. Не эксперт в JForms, но я считаю, что вам нужен элемент управления загрузкой файлов, который передаст его значение массиву args в вашем коде.