Я здесь новый, поэтому я не уверен, что я делаю что-то не так, поэтому, пожалуйста, скажите мне, есть ли я.Как передать путь к аргументам командной строки при использовании «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);
}
}
Заранее спасибо.
Я действительно думал, что файлы были переданы в командную строку по умолчанию, но если не посмотреть, как элементы контекстного меню добавляются в реестр. Вы можете найти свою запись и изменить ее на 'myapp.exe% 1', чтобы пройти через. – Octopoid
Спасибо за ваш ответ. Что вы имеете в виду, когда говорите по умолчанию? Если я создам файл .exe с помощью start4j, а затем открою изображение с ним, должен ли он передать свой путь к args [0] по умолчанию? –
Существует несколько способов сделать это - если вы перетащите свой файл на exe, то да, определенно. Я ценю это, вероятно, не так, как вы хотите его использовать! Я предполагаю, что щелкните правой кнопкой мыши файл изображения, откройте «С», перейдите к своему exe и установите по умолчанию. Это действительно ДОЛЖНО подавать этот файл изображения на ваш exe в первом параметре, но если это не так, или вам нужно передать другие параметры командной строки, вы можете настроить его в реестре под «class root», как я помню , – Octopoid